zonefs: Simplify IO error handling
authorDamien Le Moal <damien.lemoal@opensource.wdc.com>
Fri, 25 Nov 2022 02:06:20 +0000 (11:06 +0900)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Mon, 23 Jan 2023 00:25:51 +0000 (09:25 +0900)
commit46a9c526eef7fb68a00321e2a9591ce5276ae92b
tree77e552f68c7c417a98f8b650ef1f2e6c92f774c7
parent4008e2a0b01aba982356fd15b128a47bf11bd9c7
zonefs: Simplify IO error handling

Simplify zonefs_check_zone_condition() by moving the code that changes
an inode access rights to the new function zonefs_inode_update_mode().
Furthermore, since on mount an inode wpoffset is always zero when
zonefs_check_zone_condition() is called during an inode initialization,
the "mount" boolean argument is not necessary for the readonly zone
case. This argument is thus removed.

zonefs_io_error_cb() is also modified to use the inode offline and
zone state flags instead of checking the device zone condition. The
multiple calls to zonefs_check_zone_condition() are reduced to the first
call on entry, which allows removing the "warn" argument.
zonefs_inode_update_mode() is also used to update an inode access rights
as zonefs_io_error_cb() modifies the inode flags depending on the volume
error handling mode (defined with a mount option). Since an inode mode
change differs for read-only zones between mount time and IO error time,
the flag ZONEFS_ZONE_INIT_MODE is used to differentiate both cases.

Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
fs/zonefs/super.c
fs/zonefs/zonefs.h