Message ID | 20230913111013.77623-11-hch@lst.de (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [01/19] fs: reflow deactivate_locked_super | expand |
On Wed, Sep 13, 2023 at 08:10:04AM -0300, Christoph Hellwig wrote: > Creating new a new super_block vs freeing the old one for single instance > file systems is serialized by the wait for SB_DEAD. > > Remove the superfluous sb_mutex. > > Signed-off-by: Christoph Hellwig <hch@lst.de> > --- You might mention that this is essentially a reversion of commit d18dcfe9860e ("USB: gadgetfs: Fix race between mounting and unmounting"). Alan Stern > drivers/usb/gadget/legacy/inode.c | 6 ------ > 1 file changed, 6 deletions(-) > > diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c > index ce9e31f3d26bcc..a203266bc0dc82 100644 > --- a/drivers/usb/gadget/legacy/inode.c > +++ b/drivers/usb/gadget/legacy/inode.c > @@ -229,7 +229,6 @@ static void put_ep (struct ep_data *data) > */ > > static const char *CHIP; > -static DEFINE_MUTEX(sb_mutex); /* Serialize superblock operations */ > > /*----------------------------------------------------------------------*/ > > @@ -2012,8 +2011,6 @@ gadgetfs_fill_super (struct super_block *sb, struct fs_context *fc) > struct dev_data *dev; > int rc; > > - mutex_lock(&sb_mutex); > - > if (the_device) { > rc = -ESRCH; > goto Done; > @@ -2069,7 +2066,6 @@ gadgetfs_fill_super (struct super_block *sb, struct fs_context *fc) > rc = -ENOMEM; > > Done: > - mutex_unlock(&sb_mutex); > return rc; > } > > @@ -2092,7 +2088,6 @@ static int gadgetfs_init_fs_context(struct fs_context *fc) > static void > gadgetfs_kill_sb (struct super_block *sb) > { > - mutex_lock(&sb_mutex); > kill_litter_super (sb); > if (the_device) { > put_dev (the_device); > @@ -2100,7 +2095,6 @@ gadgetfs_kill_sb (struct super_block *sb) > } > kfree(CHIP); > CHIP = NULL; > - mutex_unlock(&sb_mutex); > } > > /*----------------------------------------------------------------------*/ > -- > 2.39.2 >
On 9/13/23 2:10 PM, Christoph Hellwig wrote: > Creating new a new super_block vs freeing the old one for single instance ^^^^^^^^^ I can't parse that. :-) > file systems is serialized by the wait for SB_DEAD. > > Remove the superfluous sb_mutex. > > Signed-off-by: Christoph Hellwig <hch@lst.de> [...] MBR, Sergey
On Wed, Sep 13, 2023 at 12:10:56PM -0400, Alan Stern wrote: > On Wed, Sep 13, 2023 at 08:10:04AM -0300, Christoph Hellwig wrote: > > Creating new a new super_block vs freeing the old one for single instance > > file systems is serialized by the wait for SB_DEAD. > > > > Remove the superfluous sb_mutex. > > > > Signed-off-by: Christoph Hellwig <hch@lst.de> > > --- > > You might mention that this is essentially a reversion of commit > d18dcfe9860e ("USB: gadgetfs: Fix race between mounting and > unmounting"). The difference we have now is that sb creation waits for the old one to go way, but I'll add a notice on all that.
diff --git a/drivers/usb/gadget/legacy/inode.c b/drivers/usb/gadget/legacy/inode.c index ce9e31f3d26bcc..a203266bc0dc82 100644 --- a/drivers/usb/gadget/legacy/inode.c +++ b/drivers/usb/gadget/legacy/inode.c @@ -229,7 +229,6 @@ static void put_ep (struct ep_data *data) */ static const char *CHIP; -static DEFINE_MUTEX(sb_mutex); /* Serialize superblock operations */ /*----------------------------------------------------------------------*/ @@ -2012,8 +2011,6 @@ gadgetfs_fill_super (struct super_block *sb, struct fs_context *fc) struct dev_data *dev; int rc; - mutex_lock(&sb_mutex); - if (the_device) { rc = -ESRCH; goto Done; @@ -2069,7 +2066,6 @@ gadgetfs_fill_super (struct super_block *sb, struct fs_context *fc) rc = -ENOMEM; Done: - mutex_unlock(&sb_mutex); return rc; } @@ -2092,7 +2088,6 @@ static int gadgetfs_init_fs_context(struct fs_context *fc) static void gadgetfs_kill_sb (struct super_block *sb) { - mutex_lock(&sb_mutex); kill_litter_super (sb); if (the_device) { put_dev (the_device); @@ -2100,7 +2095,6 @@ gadgetfs_kill_sb (struct super_block *sb) } kfree(CHIP); CHIP = NULL; - mutex_unlock(&sb_mutex); } /*----------------------------------------------------------------------*/
Creating new a new super_block vs freeing the old one for single instance file systems is serialized by the wait for SB_DEAD. Remove the superfluous sb_mutex. Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/usb/gadget/legacy/inode.c | 6 ------ 1 file changed, 6 deletions(-)