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.