The branch, master has been updated via 26b1103 s3/time_audit: Add offline and durable functions via 1c86646 vfs: Fix parentheses in SMB_VFS_NEXT_DURABLE_COOKIE from 7a6d240 smbd: Fix the extended *.oplock.doc1 tests
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 26b110300882210f9eac074412a20c3f1f38fece Author: Christof Schmitt <c...@samba.org> Date: Fri Oct 11 15:24:53 2013 -0700 s3/time_audit: Add offline and durable functions Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> Autobuild-User(master): Volker Lendecke <v...@samba.org> Autobuild-Date(master): Sat Oct 12 13:00:02 CEST 2013 on sn-devel-104 commit 1c866461f0eef17efd2c905bb029f51507bd32ff Author: Christof Schmitt <c...@samba.org> Date: Fri Oct 11 15:22:13 2013 -0700 vfs: Fix parentheses in SMB_VFS_NEXT_DURABLE_COOKIE Signed-off-by: Christof Schmitt <c...@samba.org> Reviewed-by: Volker Lendecke <v...@samba.org> ----------------------------------------------------------------------- Summary of changes: source3/include/vfs_macros.h | 2 +- source3/modules/vfs_time_audit.c | 111 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 1 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h index 364a4ca..15e8492 100644 --- a/source3/include/vfs_macros.h +++ b/source3/include/vfs_macros.h @@ -535,7 +535,7 @@ smb_vfs_call_durable_cookie((fsp)->conn->vfs_handles, \ (fsp), (mem_ctx), (cookie)) #define SMB_VFS_NEXT_DURABLE_COOKIE(handle, fsp, mem_ctx, cookie) \ - smb_vfs_call_durable_cookie(((handle)->next, \ + smb_vfs_call_durable_cookie((handle)->next, \ (fsp), (mem_ctx), (cookie)) #define SMB_VFS_DURABLE_DISCONNECT(fsp, old_cookie, mem_ctx, new_cookie) \ diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c index 98a6151..a928953 100644 --- a/source3/modules/vfs_time_audit.c +++ b/source3/modules/vfs_time_audit.c @@ -2185,7 +2185,113 @@ static bool smb_time_audit_aio_force(struct vfs_handle_struct *handle, return result; } +static bool smb_time_audit_is_offline(struct vfs_handle_struct *handle, + const struct smb_filename *fname, + SMB_STRUCT_STAT *sbuf) +{ + bool result; + struct timespec ts1,ts2; + double timediff; + + clock_gettime_mono(&ts1); + result = SMB_VFS_NEXT_IS_OFFLINE(handle, fname, sbuf); + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log_smb_fname("is_offline", timediff, fname); + } + + return result; +} + +static int smb_time_audit_set_offline(struct vfs_handle_struct *handle, + const struct smb_filename *fname) +{ + int result; + struct timespec ts1,ts2; + double timediff; + + clock_gettime_mono(&ts1); + result = SMB_VFS_NEXT_SET_OFFLINE(handle, fname); + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log_smb_fname("set_offline", timediff, fname); + } + + return result; +} + +NTSTATUS smb_time_audit_durable_cookie(struct vfs_handle_struct *handle, + struct files_struct *fsp, + TALLOC_CTX *mem_ctx, + DATA_BLOB *cookie) +{ + NTSTATUS result; + struct timespec ts1,ts2; + double timediff; + + clock_gettime_mono(&ts1); + result = SMB_VFS_NEXT_DURABLE_COOKIE(handle, fsp, mem_ctx, cookie); + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log_fsp("durable_cookie", timediff, fsp); + } + + return result; +} + +NTSTATUS smb_time_audit_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 result; + struct timespec ts1,ts2; + double timediff; + + clock_gettime_mono(&ts1); + result = SMB_VFS_NEXT_DURABLE_DISCONNECT(handle, fsp, old_cookie, + mem_ctx, new_cookie); + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log_fsp("durable_disconnect", timediff, fsp); + } + + return result; +} + +NTSTATUS smb_time_audit_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 result; + struct timespec ts1,ts2; + double timediff; + clock_gettime_mono(&ts1); + result = SMB_VFS_NEXT_DURABLE_RECONNECT(handle, smb1req, op, old_cookie, + mem_ctx, fsp, new_cookie); + clock_gettime_mono(&ts2); + timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; + + if (timediff > audit_timeout) { + smb_time_audit_log("durable_reconnect", timediff); + } + + return result; +} /* VFS operations */ @@ -2285,6 +2391,11 @@ static struct vfs_fn_pointers vfs_time_audit_fns = { .setxattr_fn = smb_time_audit_setxattr, .fsetxattr_fn = smb_time_audit_fsetxattr, .aio_force_fn = smb_time_audit_aio_force, + .is_offline_fn = smb_time_audit_is_offline, + .set_offline_fn = smb_time_audit_set_offline, + .durable_cookie_fn = smb_time_audit_durable_cookie, + .durable_disconnect_fn = smb_time_audit_durable_disconnect, + .durable_reconnect_fn = smb_time_audit_durable_reconnect, }; -- Samba Shared Repository