[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