From fa6f61e83565f49fb4e75248cffaa1ef31567d20 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 26 Mar 2012 12:46:11 +0200 Subject: s3: Pass filters explicitly through vfs notify watch This removes a dependency on "struct notify_entry" and makes the nature of the API more explicit. We depend upon the VFS module to mask out elements from e->filter and e->subdir_filter that it took over to handle. Autobuild-User: Volker Lendecke Autobuild-Date: Mon Mar 26 17:45:44 CEST 2012 on sn-devel-104 --- source3/modules/vfs_default.c | 7 ++++--- source3/modules/vfs_full_audit.c | 6 ++++-- source3/modules/vfs_notify_fam.c | 9 +++++---- source3/modules/vfs_time_audit.c | 6 ++++-- 4 files changed, 17 insertions(+), 11 deletions(-) (limited to 'source3/modules') diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 7b80df8904..568f346452 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -1632,8 +1632,9 @@ static char *vfswrap_realpath(vfs_handle_struct *handle, const char *path) static NTSTATUS vfswrap_notify_watch(vfs_handle_struct *vfs_handle, struct sys_notify_context *ctx, - struct notify_entry *e, const char *path, + uint32_t *filter, + uint32_t *subdir_filter, void (*callback)(struct sys_notify_context *ctx, void *private_data, struct notify_event *ev), @@ -1649,8 +1650,8 @@ static NTSTATUS vfswrap_notify_watch(vfs_handle_struct *vfs_handle, */ #ifdef HAVE_INOTIFY if (lp_kernel_change_notify(vfs_handle->conn->params)) { - return inotify_watch(ctx, e, path, callback, private_data, - handle); + return inotify_watch(ctx, path, filter, subdir_filter, + callback, private_data, handle); } #endif /* diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c index 24c2f8e323..770d21f9ef 100644 --- a/source3/modules/vfs_full_audit.c +++ b/source3/modules/vfs_full_audit.c @@ -1379,8 +1379,9 @@ static char *smb_full_audit_realpath(vfs_handle_struct *handle, static NTSTATUS smb_full_audit_notify_watch(struct vfs_handle_struct *handle, struct sys_notify_context *ctx, - struct notify_entry *e, const char *path, + uint32_t *filter, + uint32_t *subdir_filter, void (*callback)(struct sys_notify_context *ctx, void *private_data, struct notify_event *ev), @@ -1388,7 +1389,8 @@ static NTSTATUS smb_full_audit_notify_watch(struct vfs_handle_struct *handle, { NTSTATUS result; - result = SMB_VFS_NEXT_NOTIFY_WATCH(handle, ctx, e, path, callback, + result = SMB_VFS_NEXT_NOTIFY_WATCH(handle, ctx, path, + filter, subdir_filter, callback, private_data, handle_p); do_log(SMB_VFS_OP_NOTIFY_WATCH, NT_STATUS_IS_OK(result), handle, ""); diff --git a/source3/modules/vfs_notify_fam.c b/source3/modules/vfs_notify_fam.c index 7ac6609c53..dcc843f6d8 100644 --- a/source3/modules/vfs_notify_fam.c +++ b/source3/modules/vfs_notify_fam.c @@ -221,8 +221,9 @@ static int fam_watch_context_destructor(struct fam_watch_context *ctx) */ static NTSTATUS fam_watch(vfs_handle_struct *vfs_handle, struct sys_notify_context *ctx, - struct notify_entry *e, const char *path, + uint32_t *filter, + uint32_t *subdir_filter, void (*callback)(struct sys_notify_context *ctx, void *private_data, struct notify_event *ev), @@ -234,8 +235,8 @@ static NTSTATUS fam_watch(vfs_handle_struct *vfs_handle, struct fam_watch_context *watch; void **handle = (void **)handle_p; - if ((e->filter & fam_mask) == 0) { - DEBUG(10, ("filter = %u, ignoring in FAM\n", e->filter)); + if ((*filter & fam_mask) == 0) { + DEBUG(10, ("filter = %u, ignoring in FAM\n", *filter)); return NT_STATUS_OK; } @@ -274,7 +275,7 @@ static NTSTATUS fam_watch(vfs_handle_struct *vfs_handle, */ watch->filter = fam_mask; - e->filter &= ~fam_mask; + *filter &= ~fam_mask; DLIST_ADD(fam_notify_list, watch); talloc_set_destructor(watch, fam_watch_context_destructor); diff --git a/source3/modules/vfs_time_audit.c b/source3/modules/vfs_time_audit.c index 8ec434b541..0066e075a2 100644 --- a/source3/modules/vfs_time_audit.c +++ b/source3/modules/vfs_time_audit.c @@ -1130,8 +1130,9 @@ static char *smb_time_audit_realpath(vfs_handle_struct *handle, static NTSTATUS smb_time_audit_notify_watch(struct vfs_handle_struct *handle, struct sys_notify_context *ctx, - struct notify_entry *e, const char *path, + uint32_t *filter, + uint32_t *subdir_filter, void (*callback)(struct sys_notify_context *ctx, void *private_data, struct notify_event *ev), @@ -1142,7 +1143,8 @@ static NTSTATUS smb_time_audit_notify_watch(struct vfs_handle_struct *handle, double timediff; clock_gettime_mono(&ts1); - result = SMB_VFS_NEXT_NOTIFY_WATCH(handle, ctx, e, path, callback, + result = SMB_VFS_NEXT_NOTIFY_WATCH(handle, ctx, path, + filter, subdir_filter, callback, private_data, handle_p); clock_gettime_mono(&ts2); timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9; -- cgit