summaryrefslogtreecommitdiff
path: root/source4/ntvfs/nbench
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-10-18 13:27:22 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:00:01 -0500
commit142d295aa8e70477c85d1835f2907f81c4c3c519 (patch)
treef7914d649c4d89e1845637d187eb9e29aef2faf2 /source4/ntvfs/nbench
parent3406ac309252fc978fcfcbf39f85d7e9483b2758 (diff)
downloadsamba-142d295aa8e70477c85d1835f2907f81c4c3c519.tar.gz
samba-142d295aa8e70477c85d1835f2907f81c4c3c519.tar.bz2
samba-142d295aa8e70477c85d1835f2907f81c4c3c519.zip
r3039: This solves the problem of async handlers in ntvfs backends not being
in the right state when called. For example, when we use the unixuid handler in the chain of handlers, and a backend decides to continue a call asynchronously then we need to ensure that the continuation happens with the right security context. The solution is to add a new ntvfs operation ntvfs_async_setup(), which calls all the way down through the layers, setting up anything that is required, and takes a private pointer. The backend wanting to make a async calls can use ntvfs_async_setup() to ensure that the modules above it are called when doing async processing. (This used to be commit a256e71029727fa1659ade6257085df537308c7d)
Diffstat (limited to 'source4/ntvfs/nbench')
-rw-r--r--source4/ntvfs/nbench/vfs_nbench.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/source4/ntvfs/nbench/vfs_nbench.c b/source4/ntvfs/nbench/vfs_nbench.c
index 06c237afb5..6203c21506 100644
--- a/source4/ntvfs/nbench/vfs_nbench.c
+++ b/source4/ntvfs/nbench/vfs_nbench.c
@@ -490,6 +490,16 @@ static NTSTATUS nbench_logoff(struct ntvfs_module_context *ntvfs,
}
/*
+ async setup
+*/
+static NTSTATUS nbench_async_setup(struct ntvfs_module_context *ntvfs,
+ struct smbsrv_request *req,
+ void *private)
+{
+ return NT_STATUS_OK;
+}
+
+/*
lock a byte range
*/
static NTSTATUS nbench_lock(struct ntvfs_module_context *ntvfs,
@@ -695,6 +705,7 @@ NTSTATUS ntvfs_nbench_init(void)
ops.search_close = nbench_search_close;
ops.trans = nbench_trans;
ops.logoff = nbench_logoff;
+ ops.async_setup = nbench_async_setup;
/* we don't register a trans2 handler as we want to be able to
log individual trans2 requests */