aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@us.ibm.com>2005-08-24 23:03:11 -0400
committerSteve French <sfrench@us.ibm.com>2005-08-24 23:03:11 -0400
commit167a251ad6678ad26aa3cf27bab677b274374ab6 (patch)
tree3db2a878de70d180d634d06e5ddf8dc325230e40
parentabb15b8ae4eb7cdff0061e7ac5eca1f8dd8a84af (diff)
[CIFS] Change notify support part 3
Signed-off-by: Steve French <sfrench@us.ibm.com>
-rw-r--r--fs/cifs/cifsglob.h2
-rw-r--r--fs/cifs/cifsproto.h3
-rw-r--r--fs/cifs/cifssmb.c7
-rw-r--r--fs/cifs/fcntl.c8
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);
276extern int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, 276extern 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);
279extern ssize_t CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon, 280extern 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
3979int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, 3979int 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