[patch][linux-cifs-client] fix a regression in cifs caused during lookup intent code patch

Shirish Pargaonkar shirishpargaonkar at gmail.com
Fri May 1 20:16:19 GMT 2009


Remove adding open file entry twice to lists in case of posix opens

Do not fill file info twice in case of posix opens and creates

This fixes the regression in cifs which resulted in failure to pass
connectathon tests.

diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index 461750e..97f68bd 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -464,10 +464,8 @@ cifs_create_set_dentry:
        if ((nd == NULL) || (!(nd->flags & LOOKUP_OPEN))) {
                /* mknod case - do not leave file open */
                CIFSSMBClose(xid, tcon, fileHandle);
-       } else if (newinode) {
-                       cifs_fill_fileinfo(newinode, fileHandle,
-                                       cifs_sb->tcon, write_only);
        }
+
 cifs_create_out:
        kfree(buf);
        kfree(full_path);
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 50ca088..38c06f8 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -129,15 +129,12 @@ static inline int
cifs_posix_open_inode_helper(struct inode *inode,
                        struct file *file, struct cifsInodeInfo *pCifsInode,
                        struct cifsFileInfo *pCifsFile, int oplock, u16 netfid)
 {
-       struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
-/*     struct timespec temp; */   /* BB REMOVEME BB */

        file->private_data = kmalloc(sizeof(struct cifsFileInfo), GFP_KERNEL);
        if (file->private_data == NULL)
                return -ENOMEM;
        pCifsFile = cifs_init_private(file->private_data, inode, file, netfid);
        write_lock(&GlobalSMBSeslock);
-       list_add(&pCifsFile->tlist, &cifs_sb->tcon->openFileList);

        pCifsInode = CIFS_I(file->f_path.dentry->d_inode);
        if (pCifsInode == NULL) {
@@ -145,17 +142,6 @@ static inline int
cifs_posix_open_inode_helper(struct inode *inode,
                return -EINVAL;
        }

-       /* want handles we can use to read with first
-          in the list so we do not have to walk the
-          list to search for one in write_begin */
-       if ((file->f_flags & O_ACCMODE) == O_WRONLY) {
-               list_add_tail(&pCifsFile->flist,
-                             &pCifsInode->openFileList);
-       } else {
-               list_add(&pCifsFile->flist,
-                        &pCifsInode->openFileList);
-       }
-
        if (pCifsInode->clientCanCacheRead) {
                /* we have the inode open somewhere else
                   no need to discard cache data */
~
~
-------------- next part --------------
A non-text attachment was scrubbed...
Name: regression.patch
Type: application/octet-stream
Size: 1853 bytes
Desc: not available
Url : http://lists.samba.org/archive/linux-cifs-client/attachments/20090501/1ae6e495/regression-0001.obj


More information about the linux-cifs-client mailing list