[linux-cifs-client] [PATCH] cifs: set SYNCHRONIZE bit when opening for cifs_rename_pending_delete

Jeff Layton jlayton at redhat.com
Tue Mar 3 19:37:50 GMT 2009


On Sat, 28 Feb 2009 12:59:02 -0500
Jeff Layton <jlayton at redhat.com> wrote:

> From: Jeff Layton <jlayton at tupile.poochiereds.net>
> 
> Discovered at Connectathon 2009...
> 
> Some servers apparently require that the filehandle passed to a trans2
> rename be opened with the SYNCHRONIZE bit set. If it isn't then the
> server may throw back an error.
> 
> This patch makes the cifs-capable connectathon tests pass when run
> against BlueArc servers. I've also heard rumors that Win2k requires
> that the file be opened with this bit set as well, but I haven't
> confirmed it.
> 
> Signed-off-by: Jeff Layton <jlayton at redhat.com>

After doing a bit more research on this, I think this patch is not
correct. The SYNCHRONIZE bit should never be sent on over the wire
calls. If BlueArc's servers require this then it's bug on their end.
Please disregard this patch.


> ---
>  fs/cifs/inode.c |    7 ++++---
>  1 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
> index 050552c..a80d86d 100644
> --- a/fs/cifs/inode.c
> +++ b/fs/cifs/inode.c
> @@ -872,8 +872,9 @@ cifs_rename_pending_delete(char *full_path, struct dentry *dentry, int xid)
>  	FILE_BASIC_INFO *info_buf = NULL;
>  
>  	rc = CIFSSMBOpen(xid, tcon, full_path, FILE_OPEN,
> -			 DELETE|FILE_WRITE_ATTRIBUTES, CREATE_NOT_DIR,
> -			 &netfid, &oplock, NULL, cifs_sb->local_nls,
> +			 DELETE|FILE_WRITE_ATTRIBUTES|SYNCHRONIZE,
> +			 CREATE_NOT_DIR, &netfid, &oplock, NULL,
> +			 cifs_sb->local_nls,
>  			 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);
>  	if (rc != 0)
>  		goto out;
> @@ -1349,7 +1350,7 @@ cifs_do_rename(int xid, struct dentry *from_dentry, const char *fromPath,
>  		return rc;
>  
>  	/* open the file to be renamed -- we need DELETE perms */
> -	rc = CIFSSMBOpen(xid, pTcon, fromPath, FILE_OPEN, DELETE,
> +	rc = CIFSSMBOpen(xid, pTcon, fromPath, FILE_OPEN, DELETE|SYNCHRONIZE,
>  			 CREATE_NOT_DIR, &srcfid, &oplock, NULL,
>  			 cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
>  				CIFS_MOUNT_MAP_SPECIAL_CHR);


-- 
Jeff Layton <jlayton at redhat.com>


More information about the linux-cifs-client mailing list