[linux-cifs-client] [PATCH] cifs: don't attempt busy-file rename unless it's in same-directory

Steve French smfrench at gmail.com
Thu May 20 11:15:37 MDT 2010


Are we certain of this for all server types (NetApp, EMC, Samba etc.)?

On Thu, May 20, 2010 at 12:05 PM, Jeff Layton <jlayton at redhat.com> wrote:
> Busy-file renames don't actually work across directories, so we need
> to limit this code to renames within the same dir.
>
> Signed-off-by: Jeff Layton <jlayton at redhat.com>
> ---
>  fs/cifs/inode.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
> index 62b324f..6f0683c 100644
> --- a/fs/cifs/inode.c
> +++ b/fs/cifs/inode.c
> @@ -1401,6 +1401,10 @@ cifs_do_rename(int xid, struct dentry *from_dentry, const char *fromPath,
>        if (rc == 0 || rc != -ETXTBSY)
>                return rc;
>
> +       /* open-file renames don't work across directories */
> +       if (to_dentry->d_parent != from_dentry->d_parent)
> +               return rc;
> +
>        /* open the file to be renamed -- we need DELETE perms */
>        rc = CIFSSMBOpen(xid, pTcon, fromPath, FILE_OPEN, DELETE,
>                         CREATE_NOT_DIR, &srcfid, &oplock, NULL,
> --
> 1.6.6.1
>
>



-- 
Thanks,

Steve


More information about the linux-cifs-client mailing list