Author: asser Date: 2005-08-23 13:13:27 +0000 (Tue, 23 Aug 2005) New Revision: 38
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=linux-cifs-client&rev=38 Log: Added PidHigh to data structures and function declarations/calls Modified: branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsglob.h branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsproto.h branches/SOC/linux-2.6bk-dnotify/fs/cifs/misc.c Changeset: Modified: branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsglob.h =================================================================== --- branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsglob.h 2005-08-23 13:12:32 UTC (rev 37) +++ branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsglob.h 2005-08-23 13:13:27 UTC (rev 38) @@ -335,6 +335,7 @@ struct dir_notify_req { struct list_head lhead; __le16 Pid; + __le16 PidHigh; __u16 Mid; __u16 Tid; __u16 Uid; Modified: branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsproto.h =================================================================== --- branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsproto.h 2005-08-23 13:12:32 UTC (rev 37) +++ branches/SOC/linux-2.6bk-dnotify/fs/cifs/cifsproto.h 2005-08-23 13:13:27 UTC (rev 38) @@ -267,6 +267,9 @@ const int notify_subdirs,const __u16 netfid, __u32 filter, const struct nls_table *nls_codepage, struct dentry *dentry, int multishot); +extern int CIFSSMBCancel(const int xid, struct cifsTconInfo *tcon, + __u16 Uid, __le16 Pid, __le16 PidHigh, + __u16 Tid, __u16 Mid); extern ssize_t CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon, const unsigned char *searchName, char * EAData, size_t bufsize, const struct nls_table *nls_codepage, Modified: branches/SOC/linux-2.6bk-dnotify/fs/cifs/misc.c =================================================================== --- branches/SOC/linux-2.6bk-dnotify/fs/cifs/misc.c 2005-08-23 13:12:32 UTC (rev 37) +++ branches/SOC/linux-2.6bk-dnotify/fs/cifs/misc.c 2005-08-23 13:13:27 UTC (rev 38) @@ -409,23 +409,29 @@ cFYI(1,("pnotify NextEntryOffset:%lx Action:%lx FileNameLength:%ld",pnotify->NextEntryOffset,pnotify->Action,pnotify->FileNameLength)); cFYI(1,("notify err 0x%x",pSMBr->hdr.Status.CifsError)); if((pSMBr->ByteCount > sizeof(struct file_notify_information)) || - (pSMBr->hdr.Status.CifsError)) { + (pSMBr->hdr.Status.CifsError == STATUS_NOTIFY_ENUM_DIR)) { /* Find the request on the req list */ spin_lock(&GlobalMid_Lock); list_for_each_safe(tmp, tmp1, &GlobalDnotifyReqList) { dnotify_req = list_entry(tmp, struct dir_notify_req, lhead); if(dnotify_req->Mid == pSMBr->hdr.Mid && - dnotify_req->Pid == pSMBr->hdr.Pid) { - cFYI(1,("Found pending request with Mid %d and Pid %d", dnotify_req->Mid, dnotify_req->Pid)); + dnotify_req->PidHigh == pSMBr->hdr.PidHigh && + dnotify_req->Pid == pSMBr->hdr.Pid) + { list_del(tmp); - list_add_tail(&dnotify_req->lhead, &GlobalDnotifyRsp_Q); + if(pSMBr->hdr.Status.CifsError == NT_STATUS_CANCELLED) { + cFYI(1,("Request was cancelled")); + kfree(dnotify_req); + } else { + list_add_tail(&dnotify_req->lhead, &GlobalDnotifyRsp_Q); + } } } spin_unlock(&GlobalMid_Lock); wake_up_process(dnotifyThread); return TRUE; - } + } /* ASF TODO: NT_STATUS_CANCELLED && file_notify_information */ } return FALSE; }
