Re: [patch]fix a regression in cifs caused during lookup intent code patch

Shirish Pargaonkar <[email protected]>
Newsgroups gmane.linux.file-systems.cifs
Message-ID <[email protected]>
On Fri, May 1, 2009 at 3:16 PM, Shirish Pargaonkar
<[email protected]> wrote:
> 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 */
> ~
> ~
>

This patch can be ignored, spoke too soon, before testing against old
samba server.
Will post a patch which calls cifs_fill_fileinfo from cifs_create only
in non-posix cases.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.