Re: [PATCH RFC 1/2] errno.h: Export EFSCORRUPTED error number

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 2019/4/10 下午11:11,  Darrick J. Wong  wrote:
> On Wed, Apr 10, 2019 at 04:35:07PM +0800, Qu Wenruo wrote:
>> Xfs and Ext* uses EFSCORRUPTED to indicate filesystem corruption.
>> They both map EFSCORRUPTED to EUCLEAN.
>>
>> Btrfs/Ubifs/fscrypto all use EUCLEAN directly to indicate filesystem
>> corruption.
> 
> I don't know if you (btrfs folks specifically) care but ext* and xfs
> also use EFSBADCRC to signal unrecovered checksum validation failures.
> Can we promote both of them to asm-generic/errno.h at the same time?

It looks pretty good to me in fact.

I'm really tired of using -EIO for csum mismatch/any other higher level
mismatch.

The only concern is the "CRC" part. Yes, btrfs uses and only supports
CRC32 so far, but I'm sure btrfs will support cryptographic hash.

So what about renaming it to EFSBADCSUM?

Thanks,
Qu

> 
> #define EFSBADCRC   EBADMSG
> 
> --D
> 
>> And block layer is going to distinguish filesystem corruption with
>> oridinary EIO error, it's a good idea to export the initial EFSCORRUPTED
>> declaration to <linux/errno.h> so all filesystems and block layer can
>> take advantage of this easier-to-read error number.
>>
>> Signed-off-by: Qu Wenruo <wqu@xxxxxxxx>
>> ---
>>  fs/ext2/ext2.h                   | 1 -
>>  fs/ext4/ext4.h                   | 1 -
>>  fs/xfs/xfs_linux.h               | 1 -
>>  include/uapi/asm-generic/errno.h | 3 +++
>>  4 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
>> index 10ab238de9a6..03d0ca8fae42 100644
>> --- a/fs/ext2/ext2.h
>> +++ b/fs/ext2/ext2.h
>> @@ -369,7 +369,6 @@ struct ext2_inode {
>>   */
>>  #define	EXT2_VALID_FS			0x0001	/* Unmounted cleanly */
>>  #define	EXT2_ERROR_FS			0x0002	/* Errors detected */
>> -#define	EFSCORRUPTED			EUCLEAN	/* Filesystem is corrupted */
>>  
>>  /*
>>   * Mount flags
>> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
>> index 82ffdacdc7fa..f906b5cbf96d 100644
>> --- a/fs/ext4/ext4.h
>> +++ b/fs/ext4/ext4.h
>> @@ -3248,6 +3248,5 @@ extern const struct iomap_ops ext4_iomap_ops;
>>  #endif	/* __KERNEL__ */
>>  
>>  #define EFSBADCRC	EBADMSG		/* Bad CRC detected */
>> -#define EFSCORRUPTED	EUCLEAN		/* Filesystem is corrupted */
>>  
>>  #endif	/* _EXT4_H */
>> diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h
>> index edbd5a210df2..36e5c6549f15 100644
>> --- a/fs/xfs/xfs_linux.h
>> +++ b/fs/xfs/xfs_linux.h
>> @@ -125,7 +125,6 @@ typedef __u32			xfs_nlink_t;
>>  
>>  #define ENOATTR		ENODATA		/* Attribute not found */
>>  #define EWRONGFS	EINVAL		/* Mount with wrong filesystem type */
>> -#define EFSCORRUPTED	EUCLEAN		/* Filesystem is corrupted */
>>  #define EFSBADCRC	EBADMSG		/* Bad CRC detected */
>>  
>>  #define SYNCHRONIZE()	barrier()
>> diff --git a/include/uapi/asm-generic/errno.h b/include/uapi/asm-generic/errno.h
>> index cf9c51ac49f9..ebd6e7e76a98 100644
>> --- a/include/uapi/asm-generic/errno.h
>> +++ b/include/uapi/asm-generic/errno.h
>> @@ -98,6 +98,9 @@
>>  #define	EINPROGRESS	115	/* Operation now in progress */
>>  #define	ESTALE		116	/* Stale file handle */
>>  #define	EUCLEAN		117	/* Structure needs cleaning */
>> +
>> +#define EFSCORRUPTED	EUCLEAN	/* Filesystem is corrupted */
>> +
>>  #define	ENOTNAM		118	/* Not a XENIX named type file */
>>  #define	ENAVAIL		119	/* No XENIX semaphores available */
>>  #define	EISNAM		120	/* Is a named type file */
>> -- 
>> 2.21.0
>>
> 

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux