Re: [PATCH v2] cifs: map NT_STATUS_SHARING_VIOLATION to EBUSY instead of ETXTBSY

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 12 Mar 2013 10:52:20 -0500
Steve French <smfrench@xxxxxxxxx> wrote:

> It would be helpful to note if there are ANY places where ETXTBUSY
> should be returned by cifs (if not then this patch is even easier to
> justify).
> 

I can't think of any...

Most of the cases where ETXTBSY should be returned are handled in the
"upper" vfs layers, as best I can tell...

> On Mon, Mar 11, 2013 at 8:08 AM, Sachin Prabhu <sprabhu@xxxxxxxxxx> wrote:
> > NT_SHARING_VIOLATION errors are mapped to ETXTBSY which is unexpected
> > for operations such as unlink where we can hit these errors.
> >
> > The patch maps the error NT_SHARING_VIOLATION to EBUSY instead. The
> > patch also replaces all instances of ETXTBSY in
> > cifs_rename_pending_delete() with EBUSY.
> >
> > Signed-off-by: Sachin Prabhu <sprabhu@xxxxxxxxxx>
> > ---
> >  fs/cifs/inode.c   | 10 ++++------
> >  fs/cifs/netmisc.c |  2 +-
> >  2 files changed, 5 insertions(+), 7 deletions(-)
> >
> > diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
> > index fee2d40..b97ca5b 100644
> > --- a/fs/cifs/inode.c
> > +++ b/fs/cifs/inode.c
> > @@ -1034,7 +1034,7 @@ cifs_rename_pending_delete(const char *full_path, struct dentry *dentry,
> >                                    cifs_sb->mnt_cifs_flags &
> >                                             CIFS_MOUNT_MAP_SPECIAL_CHR);
> >         if (rc != 0) {
> > -               rc = -ETXTBSY;
> > +               rc = -EBUSY;
> >                 goto undo_setattr;
> >         }
> >
> > @@ -1053,7 +1053,7 @@ cifs_rename_pending_delete(const char *full_path, struct dentry *dentry,
> >                 if (rc == -ENOENT)
> >                         rc = 0;
> >                 else if (rc != 0) {
> > -                       rc = -ETXTBSY;
> > +                       rc = -EBUSY;
> >                         goto undo_rename;
> >                 }
> >                 cifsInode->delete_pending = true;
> > @@ -1160,15 +1160,13 @@ psx_del_no_retry:
> >                         cifs_drop_nlink(inode);
> >         } else if (rc == -ENOENT) {
> >                 d_drop(dentry);
> > -       } else if (rc == -ETXTBSY) {
> > +       } else if (rc == -EBUSY) {
> >                 if (server->ops->rename_pending_delete) {
> >                         rc = server->ops->rename_pending_delete(full_path,
> >                                                                 dentry, xid);
> >                         if (rc == 0)
> >                                 cifs_drop_nlink(inode);
> >                 }
> > -               if (rc == -ETXTBSY)
> > -                       rc = -EBUSY;
> >         } else if ((rc == -EACCES) && (dosattr == 0) && inode) {
> >                 attrs = kzalloc(sizeof(*attrs), GFP_KERNEL);
> >                 if (attrs == NULL) {
> > @@ -1509,7 +1507,7 @@ cifs_do_rename(const unsigned int xid, struct dentry *from_dentry,
> >          * source. Note that cross directory moves do not work with
> >          * rename by filehandle to various Windows servers.
> >          */
> > -       if (rc == 0 || rc != -ETXTBSY)
> > +       if (rc == 0 || rc != -EBUSY)
> >                 goto do_rename_exit;
> >
> >         /* open-file renames don't work across directories */
> > diff --git a/fs/cifs/netmisc.c b/fs/cifs/netmisc.c
> > index a82bc51..c0b25b2 100644
> > --- a/fs/cifs/netmisc.c
> > +++ b/fs/cifs/netmisc.c
> > @@ -62,7 +62,7 @@ static const struct smb_to_posix_error mapping_table_ERRDOS[] = {
> >         {ERRdiffdevice, -EXDEV},
> >         {ERRnofiles, -ENOENT},
> >         {ERRwriteprot, -EROFS},
> > -       {ERRbadshare, -ETXTBSY},
> > +       {ERRbadshare, -EBUSY},
> >         {ERRlock, -EACCES},
> >         {ERRunsup, -EINVAL},
> >         {ERRnosuchshare, -ENXIO},
> > --
> > 1.7.11.7
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
> 


-- 
Jeff Layton <jlayton@xxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux