On 2020/09/11 17:57, Johannes Thumshirn wrote: > Subsequent patches need to call zonefs_io_error() with the i_truncate_mutex > already held, so factor out the body of zonefs_io_error() into > __zonefs_io_error() which can be called from with the i_truncate_mutex > held. > > Signed-off-by: Johannes Thumshirn <johannes.thumshirn@xxxxxxx> > --- > fs/zonefs/super.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c > index 6e13a5127b01..4309979eeb36 100644 > --- a/fs/zonefs/super.c > +++ b/fs/zonefs/super.c > @@ -348,7 +348,7 @@ static int zonefs_io_error_cb(struct blk_zone *zone, unsigned int idx, > * eventually correct the file size and zonefs inode write pointer offset > * (which can be out of sync with the drive due to partial write failures). > */ > -static void zonefs_io_error(struct inode *inode, bool write) > +static void __zonefs_io_error(struct inode *inode, bool write) > { > struct zonefs_inode_info *zi = ZONEFS_I(inode); > struct super_block *sb = inode->i_sb; > @@ -362,8 +362,6 @@ static void zonefs_io_error(struct inode *inode, bool write) > }; > int ret; > > - mutex_lock(&zi->i_truncate_mutex); > - > /* > * Memory allocations in blkdev_report_zones() can trigger a memory > * reclaim which may in turn cause a recursion into zonefs as well as > @@ -379,7 +377,14 @@ static void zonefs_io_error(struct inode *inode, bool write) > zonefs_err(sb, "Get inode %lu zone information failed %d\n", > inode->i_ino, ret); > memalloc_noio_restore(noio_flag); > +} > > +static void zonefs_io_error(struct inode *inode, bool write) > +{ > + struct zonefs_inode_info *zi = ZONEFS_I(inode); > + > + mutex_lock(&zi->i_truncate_mutex); > + __zonefs_io_error(inode, write); > mutex_unlock(&zi->i_truncate_mutex); > } > > Looks good. Reviewed-by: Damien Le Moal <damien.lemoal@xxxxxxx> -- Damien Le Moal Western Digital Research