diff options
author | Gordon Ross <gwr@nexenta.com> | 2012-10-10 20:07:26 -0400 |
---|---|---|
committer | Gordon Ross <gwr@nexenta.com> | 2013-02-11 23:47:44 -0500 |
commit | ccc71be50bb49efb4e31004c77fb3e065e9c0596 (patch) | |
tree | 3d31fef3b3ec173d505bc1288177501b2026bdc7 /usr/src/uts/common/fs/smbsrv/smb_fsops.c | |
parent | bfbce3c1273efa22c185ea2995c57c37163fd7c3 (diff) | |
download | illumos-gate-ccc71be50bb49efb4e31004c77fb3e065e9c0596.tar.gz |
3523 SMB NT Notify returning too soon
Reviewed by: Albert Lee <trisk@nexenta.com>
Reviewed by: Dan McDonald <danmcd@nexenta.com>
Reviewed by: Yakov Zaytsev <yakov@nexenta.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
Diffstat (limited to 'usr/src/uts/common/fs/smbsrv/smb_fsops.c')
-rw-r--r-- | usr/src/uts/common/fs/smbsrv/smb_fsops.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/usr/src/uts/common/fs/smbsrv/smb_fsops.c b/usr/src/uts/common/fs/smbsrv/smb_fsops.c index 68e32246cd..f9ec3fa674 100644 --- a/usr/src/uts/common/fs/smbsrv/smb_fsops.c +++ b/usr/src/uts/common/fs/smbsrv/smb_fsops.c @@ -20,6 +20,7 @@ */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2012 Nexenta Systems, Inc. All rights reserved. */ #include <sys/sid.h> @@ -423,7 +424,8 @@ smb_fsop_create_stream(smb_request_t *sr, cred_t *cr, /* notify change to the unnamed stream */ if (rc == 0) - smb_node_notify_change(dnode); + smb_node_notify_change(dnode, + FILE_ACTION_ADDED_STREAM, fname); return (rc); } @@ -679,9 +681,10 @@ smb_fsop_remove( rc = smb_vop_stream_remove(fnode->vp, name, flags, cr); /* notify change to the unnamed stream */ - if ((rc == 0) && fnode->n_dnode) - smb_node_notify_change(fnode->n_dnode); - + if ((rc == 0) && fnode->n_dnode) { + smb_node_notify_change(fnode->n_dnode, + FILE_ACTION_REMOVED_STREAM, fnode->od_name); + } } else if (smb_is_stream_name(name)) { smb_stream_parse_name(name, fname, sname); @@ -710,8 +713,10 @@ smb_fsop_remove( smb_node_release(fnode); /* notify change to the unnamed stream */ - if (rc == 0) - smb_node_notify_change(dnode); + if (rc == 0) { + smb_node_notify_change(dnode, + FILE_ACTION_REMOVED_STREAM, fname); + } } else { rc = smb_vop_remove(dnode->vp, name, flags, cr); |