diff options
author | Steve French <sfrench@us.ibm.com> | 2005-08-24 23:03:11 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2005-08-24 23:03:11 -0400 |
commit | 167a251ad6678ad26aa3cf27bab677b274374ab6 (patch) | |
tree | 3db2a878de70d180d634d06e5ddf8dc325230e40 | |
parent | abb15b8ae4eb7cdff0061e7ac5eca1f8dd8a84af (diff) |
[CIFS] Change notify support part 3
Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r-- | fs/cifs/cifsglob.h | 2 | ||||
-rw-r--r-- | fs/cifs/cifsproto.h | 3 | ||||
-rw-r--r-- | fs/cifs/cifssmb.c | 7 | ||||
-rw-r--r-- | fs/cifs/fcntl.c | 8 |
4 files changed, 12 insertions, 8 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 92fba7609e67..236de07cbda6 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h | |||
@@ -402,7 +402,7 @@ struct dir_notify_req { | |||
402 | __u16 netfid; | 402 | __u16 netfid; |
403 | __u32 filter; /* CompletionFilter (for multishot) */ | 403 | __u32 filter; /* CompletionFilter (for multishot) */ |
404 | int multishot; | 404 | int multishot; |
405 | struct dentry * dentry; | 405 | struct file * dentry; |
406 | }; | 406 | }; |
407 | 407 | ||
408 | #define MID_FREE 0 | 408 | #define MID_FREE 0 |
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index 0cc0612eacb4..28b1ebbd3801 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h | |||
@@ -275,7 +275,8 @@ extern int CIFSSMBCopy(int xid, | |||
275 | int remap_special_chars); | 275 | int remap_special_chars); |
276 | extern int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, | 276 | extern int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, |
277 | const int notify_subdirs,const __u16 netfid, | 277 | const int notify_subdirs,const __u16 netfid, |
278 | __u32 filter, const struct nls_table *nls_codepage); | 278 | __u32 filter, struct file * file, int multishot, |
279 | const struct nls_table *nls_codepage); | ||
279 | extern ssize_t CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon, | 280 | extern ssize_t CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon, |
280 | const unsigned char *searchName, char * EAData, | 281 | const unsigned char *searchName, char * EAData, |
281 | size_t bufsize, const struct nls_table *nls_codepage, | 282 | size_t bufsize, const struct nls_table *nls_codepage, |
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c index be2a3b9a718c..67a6240ff2ba 100644 --- a/fs/cifs/cifssmb.c +++ b/fs/cifs/cifssmb.c | |||
@@ -3977,8 +3977,9 @@ setPermsRetry: | |||
3977 | } | 3977 | } |
3978 | 3978 | ||
3979 | int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, | 3979 | int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, |
3980 | const int notify_subdirs, const __u16 netfid, | 3980 | const int notify_subdirs, const __u16 netfid, |
3981 | __u32 filter, const struct nls_table *nls_codepage) | 3981 | __u32 filter, struct file * pfile, int multishot, |
3982 | const struct nls_table *nls_codepage) | ||
3982 | { | 3983 | { |
3983 | int rc = 0; | 3984 | int rc = 0; |
3984 | struct smb_com_transaction_change_notify_req * pSMB = NULL; | 3985 | struct smb_com_transaction_change_notify_req * pSMB = NULL; |
@@ -4026,7 +4027,7 @@ int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, | |||
4026 | dnotify_req->Tid = pSMB->hdr.Tid; | 4027 | dnotify_req->Tid = pSMB->hdr.Tid; |
4027 | dnotify_req->Uid = pSMB->hdr.Uid; | 4028 | dnotify_req->Uid = pSMB->hdr.Uid; |
4028 | dnotify_req->netfid = netfid; | 4029 | dnotify_req->netfid = netfid; |
4029 | dnotify_req->dentry = dentry; | 4030 | dnotify_req->pfile = pfile; |
4030 | dnotify_req->filter = filter; | 4031 | dnotify_req->filter = filter; |
4031 | dnotify_req->multishot = multishot; | 4032 | dnotify_req->multishot = multishot; |
4032 | spin_lock(&GlobalMid_Lock); | 4033 | spin_lock(&GlobalMid_Lock); |
diff --git a/fs/cifs/fcntl.c b/fs/cifs/fcntl.c index d47ce7f49dc3..2e5137b7352a 100644 --- a/fs/cifs/fcntl.c +++ b/fs/cifs/fcntl.c | |||
@@ -100,8 +100,10 @@ int cifs_dir_notify(struct file * file, unsigned long arg) | |||
100 | } else { | 100 | } else { |
101 | filter = convert_to_cifs_notify_flags(arg); | 101 | filter = convert_to_cifs_notify_flags(arg); |
102 | if(filter != 0) { | 102 | if(filter != 0) { |
103 | rc = CIFSSMBNotify(xid, pTcon, 0 /* no subdirs */, netfid, | 103 | rc = CIFSSMBNotify(xid, pTcon, |
104 | filter, cifs_sb->local_nls); | 104 | 0 /* no subdirs */, netfid, |
105 | filter, file, arg & DN_MULTISHOT, | ||
106 | cifs_sb->local_nls); | ||
105 | } else { | 107 | } else { |
106 | rc = -EINVAL; | 108 | rc = -EINVAL; |
107 | } | 109 | } |
@@ -109,7 +111,7 @@ int cifs_dir_notify(struct file * file, unsigned long arg) | |||
109 | it would close automatically but may be a way | 111 | it would close automatically but may be a way |
110 | to do it easily when inode freed or when | 112 | to do it easily when inode freed or when |
111 | notify info is cleared/changed */ | 113 | notify info is cleared/changed */ |
112 | cERROR(1,("notify rc %d",rc)); | 114 | cFYI(1,("notify rc %d",rc)); |
113 | } | 115 | } |
114 | } | 116 | } |
115 | 117 | ||