From: Johannes Thumshirn Date: Fri, 11 Sep 2020 08:56:49 +0000 (+0900) Subject: zonefs: provide no-lock zonefs_io_error variant X-Git-Tag: v5.10-rc1~82^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=48d546a8dad4c09745d464e12b95f21c773bff39;p=thirdparty%2Flinux.git zonefs: provide no-lock zonefs_io_error variant 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 Reviewed-by: Damien Le Moal Signed-off-by: Damien Le Moal --- diff --git a/fs/zonefs/super.c b/fs/zonefs/super.c index 6e13a5127b017..4309979eeb362 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); }