[PATCH 2/7] ext4: add EXT4_FLAGS_EMERGENCY_RO bit

libaokun@huaweicloud.com posted 7 patches 1 year ago
There is a newer version of this series
[PATCH 2/7] ext4: add EXT4_FLAGS_EMERGENCY_RO bit
Posted by libaokun@huaweicloud.com 1 year ago
From: Baokun Li <libaokun1@huawei.com>

EXT4_FLAGS_EMERGENCY_RO Indicates that the current file system has become
read-only due to some error. Compared to SB_RDONLY, setting it does not
require a lock because we won't clear it, which avoids over-coupling with
vfs freeze. Also, add a helper function ext4_emergency_ro() to check if
the bit is set.

Signed-off-by: Baokun Li <libaokun1@huawei.com>
---
 fs/ext4/ext4.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 612208527512..c5b775482897 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -2235,7 +2235,8 @@ extern int ext4_feature_set_ok(struct super_block *sb, int readonly);
 enum {
 	EXT4_FLAGS_RESIZING,	/* Avoid superblock update and resize race */
 	EXT4_FLAGS_SHUTDOWN,	/* Prevent access to the file system */
-	EXT4_FLAGS_BDEV_IS_DAX	/* Current block device support DAX */
+	EXT4_FLAGS_BDEV_IS_DAX,	/* Current block device support DAX */
+	EXT4_FLAGS_EMERGENCY_RO	/* Emergency read-only due to fs errors */
 };
 
 static inline int ext4_forced_shutdown(struct super_block *sb)
@@ -2243,6 +2244,11 @@ static inline int ext4_forced_shutdown(struct super_block *sb)
 	return test_bit(EXT4_FLAGS_SHUTDOWN, &EXT4_SB(sb)->s_ext4_flags);
 }
 
+static inline int ext4_emergency_ro(struct super_block *sb)
+{
+	return test_bit(EXT4_FLAGS_EMERGENCY_RO, &EXT4_SB(sb)->s_ext4_flags);
+}
+
 /*
  * Default values for user and/or group using reserved blocks
  */
-- 
2.39.2
Re: [PATCH 2/7] ext4: add EXT4_FLAGS_EMERGENCY_RO bit
Posted by Jan Kara 1 year ago
On Fri 17-01-25 16:23:10, libaokun@huaweicloud.com wrote:
> From: Baokun Li <libaokun1@huawei.com>
> 
> EXT4_FLAGS_EMERGENCY_RO Indicates that the current file system has become
> read-only due to some error. Compared to SB_RDONLY, setting it does not
> require a lock because we won't clear it, which avoids over-coupling with
> vfs freeze. Also, add a helper function ext4_emergency_ro() to check if
> the bit is set.
> 
> Signed-off-by: Baokun Li <libaokun1@huawei.com>

The same comment about comma after the last enum member. Otherwise looks
good. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

								Honza

> ---
>  fs/ext4/ext4.h | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
> index 612208527512..c5b775482897 100644
> --- a/fs/ext4/ext4.h
> +++ b/fs/ext4/ext4.h
> @@ -2235,7 +2235,8 @@ extern int ext4_feature_set_ok(struct super_block *sb, int readonly);
>  enum {
>  	EXT4_FLAGS_RESIZING,	/* Avoid superblock update and resize race */
>  	EXT4_FLAGS_SHUTDOWN,	/* Prevent access to the file system */
> -	EXT4_FLAGS_BDEV_IS_DAX	/* Current block device support DAX */
> +	EXT4_FLAGS_BDEV_IS_DAX,	/* Current block device support DAX */
> +	EXT4_FLAGS_EMERGENCY_RO	/* Emergency read-only due to fs errors */
>  };
>  
>  static inline int ext4_forced_shutdown(struct super_block *sb)
> @@ -2243,6 +2244,11 @@ static inline int ext4_forced_shutdown(struct super_block *sb)
>  	return test_bit(EXT4_FLAGS_SHUTDOWN, &EXT4_SB(sb)->s_ext4_flags);
>  }
>  
> +static inline int ext4_emergency_ro(struct super_block *sb)
> +{
> +	return test_bit(EXT4_FLAGS_EMERGENCY_RO, &EXT4_SB(sb)->s_ext4_flags);
> +}
> +
>  /*
>   * Default values for user and/or group using reserved blocks
>   */
> -- 
> 2.39.2
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR
Re: [PATCH 2/7] ext4: add EXT4_FLAGS_EMERGENCY_RO bit
Posted by Baokun Li 1 year ago
On 2025/1/21 20:08, Jan Kara wrote:
> On Fri 17-01-25 16:23:10, libaokun@huaweicloud.com wrote:
>> From: Baokun Li <libaokun1@huawei.com>
>>
>> EXT4_FLAGS_EMERGENCY_RO Indicates that the current file system has become
>> read-only due to some error. Compared to SB_RDONLY, setting it does not
>> require a lock because we won't clear it, which avoids over-coupling with
>> vfs freeze. Also, add a helper function ext4_emergency_ro() to check if
>> the bit is set.
>>
>> Signed-off-by: Baokun Li <libaokun1@huawei.com>
> The same comment about comma after the last enum member. Otherwise looks
> good. Feel free to add:
>
> Reviewed-by: Jan Kara <jack@suse.cz>
>
> 								Honza
Okay, I'm going to add a comma here in the next version as well.

Thank you for your review!


Regards,
Baokun

>> ---
>>   fs/ext4/ext4.h | 8 +++++++-
>>   1 file changed, 7 insertions(+), 1 deletion(-)
>>
>> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
>> index 612208527512..c5b775482897 100644
>> --- a/fs/ext4/ext4.h
>> +++ b/fs/ext4/ext4.h
>> @@ -2235,7 +2235,8 @@ extern int ext4_feature_set_ok(struct super_block *sb, int readonly);
>>   enum {
>>   	EXT4_FLAGS_RESIZING,	/* Avoid superblock update and resize race */
>>   	EXT4_FLAGS_SHUTDOWN,	/* Prevent access to the file system */
>> -	EXT4_FLAGS_BDEV_IS_DAX	/* Current block device support DAX */
>> +	EXT4_FLAGS_BDEV_IS_DAX,	/* Current block device support DAX */
>> +	EXT4_FLAGS_EMERGENCY_RO	/* Emergency read-only due to fs errors */
>>   };
>>   
>>   static inline int ext4_forced_shutdown(struct super_block *sb)
>> @@ -2243,6 +2244,11 @@ static inline int ext4_forced_shutdown(struct super_block *sb)
>>   	return test_bit(EXT4_FLAGS_SHUTDOWN, &EXT4_SB(sb)->s_ext4_flags);
>>   }
>>   
>> +static inline int ext4_emergency_ro(struct super_block *sb)
>> +{
>> +	return test_bit(EXT4_FLAGS_EMERGENCY_RO, &EXT4_SB(sb)->s_ext4_flags);
>> +}
>> +
>>   /*
>>    * Default values for user and/or group using reserved blocks
>>    */
>> -- 
>> 2.39.2
>>