summaryrefslogtreecommitdiff
path: root/source3/include/vfs.h
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2012-09-04 18:04:11 +0200
committerStefan Metzmacher <metze@samba.org>2012-09-08 03:39:06 +0200
commit35260ae89e2970712e2a141cd034b513076fc1ed (patch)
treed3ef6b0c06997760541c41ccdeb1ae1520e51548 /source3/include/vfs.h
parenteb1a05f783721247e9e01f4039f36c3d69b2dca7 (diff)
downloadsamba-35260ae89e2970712e2a141cd034b513076fc1ed.tar.gz
samba-35260ae89e2970712e2a141cd034b513076fc1ed.tar.bz2
samba-35260ae89e2970712e2a141cd034b513076fc1ed.zip
s3:vfs: add durable VFS operations
This allows a VFS module to implement durable handles in different ways. Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3/include/vfs.h')
-rw-r--r--source3/include/vfs.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index 45895e7d84..3e4eefef77 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -142,6 +142,7 @@
/* Leave at 29 - not yet released. move to plain off_t - abartlet */
/* Leave at 29 - not yet released. Remove sys_acl functions other than set and get - abartlet */
/* Leave at 29 - not yet released. Added backup_intent bool to files_struct - JRA */
+/* Leave at 29 - not yet released. Add durable handle functions - metze/obnox */
#define SMB_VFS_INTERFACE_VERSION 29
/*
@@ -712,6 +713,24 @@ struct vfs_fn_pointers {
SMB_STRUCT_STAT *sbuf);
int (*set_offline_fn)(struct vfs_handle_struct *handle,
const struct smb_filename *fname);
+
+ /* durable handle operations */
+ NTSTATUS (*durable_cookie_fn)(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ TALLOC_CTX *mem_ctx,
+ DATA_BLOB *cookie);
+ NTSTATUS (*durable_disconnect_fn)(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ const DATA_BLOB old_cookie,
+ TALLOC_CTX *mem_ctx,
+ DATA_BLOB *new_cookie);
+ NTSTATUS (*durable_reconnect_fn)(struct vfs_handle_struct *handle,
+ struct smb_request *smb1req,
+ struct smbXsrv_open *op,
+ const DATA_BLOB old_cookie,
+ TALLOC_CTX *mem_ctx,
+ struct files_struct **fsp,
+ DATA_BLOB *new_cookie);
};
/*
@@ -1108,6 +1127,22 @@ bool smb_vfs_call_is_offline(struct vfs_handle_struct *handle,
SMB_STRUCT_STAT *sbuf);
int smb_vfs_call_set_offline(struct vfs_handle_struct *handle,
const struct smb_filename *fname);
+NTSTATUS smb_vfs_call_durable_cookie(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ TALLOC_CTX *mem_ctx,
+ DATA_BLOB *cookie);
+NTSTATUS smb_vfs_call_durable_disconnect(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ const DATA_BLOB old_cookie,
+ TALLOC_CTX *mem_ctx,
+ DATA_BLOB *new_cookie);
+NTSTATUS smb_vfs_call_durable_reconnect(struct vfs_handle_struct *handle,
+ struct smb_request *smb1req,
+ struct smbXsrv_open *op,
+ const DATA_BLOB old_cookie,
+ TALLOC_CTX *mem_ctx,
+ struct files_struct **fsp,
+ DATA_BLOB *new_cookie);
NTSTATUS smb_register_vfs(int version, const char *name,
const struct vfs_fn_pointers *fns);