summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2006-05-15 11:43:25 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:07:00 -0500
commitbe0bd9fa336464e7c1fa2ab7cc5cd34075d595ce (patch)
tree2992182affb9915b9eaf32827e2d3ec771785908
parent8dbffb37d53f1ef4f8b160c8452c13ac6a471e4d (diff)
downloadsamba-be0bd9fa336464e7c1fa2ab7cc5cd34075d595ce.tar.gz
samba-be0bd9fa336464e7c1fa2ab7cc5cd34075d595ce.tar.bz2
samba-be0bd9fa336464e7c1fa2ab7cc5cd34075d595ce.zip
r15613: the snum doesn't identify the tcon, but the brl_context pointer does
metze (This used to be commit 5e256f4b78441269de2e53c9582f3237e4220f6c)
-rw-r--r--source4/ntvfs/common/brlock.c19
-rw-r--r--source4/ntvfs/posix/vfs_posix.c3
2 files changed, 10 insertions, 12 deletions
diff --git a/source4/ntvfs/common/brlock.c b/source4/ntvfs/common/brlock.c
index 80c4350eac..07f1593c2e 100644
--- a/source4/ntvfs/common/brlock.c
+++ b/source4/ntvfs/common/brlock.c
@@ -41,6 +41,7 @@
as it is applied consistently.
*/
+struct brl_context;
/*
the lock context contains the elements that define whether one
lock is the same as another lock
@@ -48,7 +49,7 @@
struct lock_context {
uint32_t server;
uint16_t smbpid;
- int snum;
+ struct brl_context *ctx;
};
/* The data in brlock records is an unsorted linear array of these
@@ -66,7 +67,6 @@ struct lock_struct {
struct brl_context {
struct tdb_wrap *w;
uint32_t server;
- int snum;
struct messaging_context *messaging_ctx;
struct lock_struct last_lock;
};
@@ -77,7 +77,7 @@ struct brl_context {
talloc_free(). We need the messaging_ctx to allow for
pending lock notifications.
*/
-struct brl_context *brl_init(TALLOC_CTX *mem_ctx, uint32_t server, int snum,
+struct brl_context *brl_init(TALLOC_CTX *mem_ctx, uint32_t server,
struct messaging_context *messaging_ctx)
{
char *path;
@@ -98,7 +98,6 @@ struct brl_context *brl_init(TALLOC_CTX *mem_ctx, uint32_t server, int snum,
}
brl->server = server;
- brl->snum = snum;
brl->messaging_ctx = messaging_ctx;
ZERO_STRUCT(brl->last_lock);
@@ -113,7 +112,7 @@ static BOOL brl_same_context(struct lock_context *ctx1, struct lock_context *ctx
{
return (ctx1->server == ctx2->server &&
ctx1->smbpid == ctx2->smbpid &&
- ctx1->snum == ctx2->snum);
+ ctx1->ctx == ctx2->ctx);
}
/*
@@ -200,7 +199,7 @@ static BOOL brl_conflict_other(struct lock_struct *lck1, struct lock_struct *lck
static NTSTATUS brl_lock_failed(struct brl_context *brl, struct lock_struct *lock)
{
if (lock->context.server == brl->last_lock.context.server &&
- lock->context.snum == brl->last_lock.context.snum &&
+ lock->context.ctx == brl->last_lock.context.ctx &&
lock->fnum == brl->last_lock.fnum &&
lock->start == brl->last_lock.start &&
lock->size == brl->last_lock.size) {
@@ -263,7 +262,7 @@ NTSTATUS brl_lock(struct brl_context *brl,
lock.context.smbpid = smbpid;
lock.context.server = brl->server;
- lock.context.snum = brl->snum;
+ lock.context.ctx = brl;
lock.start = start;
lock.size = size;
lock.fnum = fnum;
@@ -398,7 +397,7 @@ NTSTATUS brl_unlock(struct brl_context *brl,
context.smbpid = smbpid;
context.server = brl->server;
- context.snum = brl->snum;
+ context.ctx = brl;
/* there are existing locks - find a match */
locks = (struct lock_struct *)dbuf.dptr;
@@ -549,7 +548,7 @@ NTSTATUS brl_locktest(struct brl_context *brl,
lock.context.smbpid = smbpid;
lock.context.server = brl->server;
- lock.context.snum = brl->snum;
+ lock.context.ctx = brl;
lock.start = start;
lock.size = size;
lock.fnum = fnum;
@@ -602,7 +601,7 @@ NTSTATUS brl_close(struct brl_context *brl,
for (i=0; i<count; i++) {
struct lock_struct *lock = &locks[i];
- if (lock->context.snum == brl->snum &&
+ if (lock->context.ctx == brl &&
lock->context.server == brl->server &&
lock->fnum == fnum) {
/* found it - delete it */
diff --git a/source4/ntvfs/posix/vfs_posix.c b/source4/ntvfs/posix/vfs_posix.c
index 2d40ceb85d..eeee00313b 100644
--- a/source4/ntvfs/posix/vfs_posix.c
+++ b/source4/ntvfs/posix/vfs_posix.c
@@ -171,8 +171,7 @@ static NTSTATUS pvfs_connect(struct ntvfs_module_context *ntvfs,
ntvfs->private_data = pvfs;
pvfs->brl_context = brl_init(pvfs,
- pvfs->ntvfs->ctx->server_id,
- pvfs->ntvfs->ctx->config.snum,
+ pvfs->ntvfs->ctx->server_id,
pvfs->ntvfs->ctx->msg_ctx);
if (pvfs->brl_context == NULL) {
return NT_STATUS_INTERNAL_DB_CORRUPTION;