summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2008-03-08 09:12:09 +0100
committerStefan Metzmacher <metze@samba.org>2008-03-12 17:35:04 +0100
commit59917521e9d811efe7b424d49f03fb972ee0a119 (patch)
treefd2fdffe04865fac97bfb4f40ab08a6090468bfd
parent7cdf28ebaccb41a23c2986b123624b238effcfda (diff)
downloadsamba-59917521e9d811efe7b424d49f03fb972ee0a119.tar.gz
samba-59917521e9d811efe7b424d49f03fb972ee0a119.tar.bz2
samba-59917521e9d811efe7b424d49f03fb972ee0a119.zip
opendb: pass down a pointer to the fd in odb_open_file()
This prepares kernel oplock support. metze (This used to be commit 9db9b6d85d80a8aaa8bd432afaef9bb634d7364d)
-rw-r--r--source4/cluster/ctdb/opendb_ctdb.c2
-rw-r--r--source4/librpc/idl/opendb.idl1
-rw-r--r--source4/ntvfs/common/opendb.c4
-rw-r--r--source4/ntvfs/common/opendb.h2
-rw-r--r--source4/ntvfs/common/opendb_tdb.c4
5 files changed, 8 insertions, 5 deletions
diff --git a/source4/cluster/ctdb/opendb_ctdb.c b/source4/cluster/ctdb/opendb_ctdb.c
index a7b8ddf760..402f3a2a1a 100644
--- a/source4/cluster/ctdb/opendb_ctdb.c
+++ b/source4/cluster/ctdb/opendb_ctdb.c
@@ -283,7 +283,7 @@ static NTSTATUS odb_oplock_break_send(struct odb_context *odb, struct opendb_ent
*/
static NTSTATUS odb_ctdb_open_file(struct odb_lock *lck,
void *file_handle, const char *path,
- bool allow_level_II_oplock,
+ int *fd, bool allow_level_II_oplock,
uint32_t oplock_level, uint32_t *oplock_granted)
{
diff --git a/source4/librpc/idl/opendb.idl b/source4/librpc/idl/opendb.idl
index e3bc2d0f17..72bf23a9b4 100644
--- a/source4/librpc/idl/opendb.idl
+++ b/source4/librpc/idl/opendb.idl
@@ -20,6 +20,7 @@ interface opendb
uint32 share_access;
uint32 access_mask;
pointer file_handle;
+ pointer fd;
/* we need a per-entry delete on close, as well as a per-file
one, to cope with strange semantics on open */
boolean8 delete_on_close;
diff --git a/source4/ntvfs/common/opendb.c b/source4/ntvfs/common/opendb.c
index 1cc077137c..676706e03f 100644
--- a/source4/ntvfs/common/opendb.c
+++ b/source4/ntvfs/common/opendb.c
@@ -97,11 +97,11 @@ _PUBLIC_ DATA_BLOB odb_get_key(TALLOC_CTX *mem_ctx, struct odb_lock *lck)
*/
_PUBLIC_ NTSTATUS odb_open_file(struct odb_lock *lck,
void *file_handle, const char *path,
- bool allow_level_II_oplock,
+ int *fd, bool allow_level_II_oplock,
uint32_t oplock_level, uint32_t *oplock_granted)
{
return ops->odb_open_file(lck, file_handle, path,
- allow_level_II_oplock,
+ fd, allow_level_II_oplock,
oplock_level, oplock_granted);
}
diff --git a/source4/ntvfs/common/opendb.h b/source4/ntvfs/common/opendb.h
index fb3223aea9..045476337a 100644
--- a/source4/ntvfs/common/opendb.h
+++ b/source4/ntvfs/common/opendb.h
@@ -27,7 +27,7 @@ struct opendb_ops {
DATA_BLOB (*odb_get_key)(TALLOC_CTX *mem_ctx, struct odb_lock *lck);
NTSTATUS (*odb_open_file)(struct odb_lock *lck,
void *file_handle, const char *path,
- bool allow_level_II_oplock,
+ int *fd, bool allow_level_II_oplock,
uint32_t oplock_level, uint32_t *oplock_granted);
NTSTATUS (*odb_open_file_pending)(struct odb_lock *lck, void *private);
NTSTATUS (*odb_close_file)(struct odb_lock *lck, void *file_handle,
diff --git a/source4/ntvfs/common/opendb_tdb.c b/source4/ntvfs/common/opendb_tdb.c
index 17fcdfbbb4..9b4a5bfa9f 100644
--- a/source4/ntvfs/common/opendb_tdb.c
+++ b/source4/ntvfs/common/opendb_tdb.c
@@ -442,7 +442,7 @@ static NTSTATUS odb_tdb_open_can_internal(struct odb_context *odb,
*/
static NTSTATUS odb_tdb_open_file(struct odb_lock *lck,
void *file_handle, const char *path,
- bool allow_level_II_oplock,
+ int *fd, bool allow_level_II_oplock,
uint32_t oplock_level, uint32_t *oplock_granted)
{
struct odb_context *odb = lck->odb;
@@ -504,6 +504,7 @@ static NTSTATUS odb_tdb_open_file(struct odb_lock *lck,
}
lck->can_open.e->file_handle = file_handle;
+ lck->can_open.e->fd = fd;
lck->can_open.e->allow_level_II_oplock = allow_level_II_oplock;
lck->can_open.e->oplock_level = oplock_level;
@@ -800,6 +801,7 @@ static NTSTATUS odb_tdb_can_open(struct odb_lock *lck,
lck->can_open.e->server = odb->ntvfs_ctx->server_id;
lck->can_open.e->file_handle = NULL;
+ lck->can_open.e->fd = NULL;
lck->can_open.e->stream_id = stream_id;
lck->can_open.e->share_access = share_access;
lck->can_open.e->access_mask = access_mask;