grub2/grub-core/fs
Javier Martinez Canillas 777276063e fs/xfs: Add needsrepair incompat feature support
The XFS now has an incompat feature flag to indicate that a filesystem
needs to be repaired. The Linux kernel refuses to mount the filesystem
that has it set and only the xfs_repair tool is able to clear that flag.

The GRUB doesn't have the concept of mounting filesystems and just
attempts to read the files. But it does some sanity checking before
attempting to read from the filesystem. Among the things which are tested,
is if the super block only has set of incompatible features flags that
are supported by GRUB. If it contains any flags that are not listed as
supported, reading the XFS filesystem fails.

Since the GRUB doesn't attempt to detect if the filesystem is inconsistent
nor replays the journal, the filesystem access is a best effort. For this
reason, ignore if the filesystem needs to be repaired and just print a debug
message. That way, if reading or booting fails later, the user is able to
figure out that the failures can be related to broken XFS filesystem.

Suggested-by: Eric Sandeen <esandeen@redhat.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
2021-06-01 17:20:20 +02:00
..
zfs fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
affs.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
afs.c Leverage BFS implementation to read AFS. 2011-10-30 16:10:18 +01:00
archelp.c archelp: Never pass NULL as mtime. 2015-07-27 13:19:02 +02:00
bfs.c Change fs functions to add fs_ prefix 2019-04-09 10:03:29 +10:00
btrfs.c fs/btrfs: Squash some uninitialized reads 2021-03-02 15:54:19 +01:00
cbfs.c disk: Rename grub_disk_get_size() to grub_disk_native_sectors() 2020-12-12 01:19:03 +01:00
cpio_be.c Add gcc_struct to all packed structures when compiling with mingw. 2013-12-15 14:14:30 +01:00
cpio_common.c cpio: Disable gcc9 -Waddress-of-packed-member 2019-04-23 11:37:08 +02:00
cpio.c Add gcc_struct to all packed structures when compiling with mingw. 2013-12-15 14:14:30 +01:00
exfat.c exfat reader 2011-04-11 18:13:00 +02:00
ext2.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
f2fs.c f2fs: Disable gcc9 -Waddress-of-packed-member 2019-06-03 11:18:31 +02:00
fat.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
fshelp.c fs/fshelp: Catch impermissibly large block sizes in read helper 2021-03-02 15:54:18 +01:00
hfs.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
hfsplus.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
hfspluscomp.c Make grub_zlib_decompress handle incomplete chunks. 2013-12-18 23:39:49 +01:00
iso9660.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
jfs.c fs/jfs: Catch infinite recursion 2021-03-02 15:54:18 +01:00
minix2_be.c Handle big-endian minixfs (fixes minixfs tests on bigendian). 2012-04-01 21:35:18 +02:00
minix2.c Split minix.mod into minix.mod and minix2.mod. 2010-09-08 19:13:48 +02:00
minix3_be.c Handle big-endian minixfs (fixes minixfs tests on bigendian). 2012-04-01 21:35:18 +02:00
minix3.c minix3fs support 2011-04-11 08:16:13 +02:00
minix_be.c Handle big-endian minixfs (fixes minixfs tests on bigendian). 2012-04-01 21:35:18 +02:00
minix.c fs/minix: Avoid mistakenly probing ext2 filesystems 2021-04-12 16:22:44 +02:00
newc.c Add gcc_struct to all packed structures when compiling with mingw. 2013-12-15 14:14:30 +01:00
nilfs2.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
ntfs.c calloc: Use calloc() at most places 2020-07-29 16:55:47 +02:00
ntfscomp.c Fix warnings when compiling with -O3 2016-02-17 17:56:41 +01:00
odc.c Add gcc_struct to all packed structures when compiling with mingw. 2013-12-15 14:14:30 +01:00
proc.c Change fs functions to add fs_ prefix 2019-04-09 10:03:29 +10:00
reiserfs.c Change fs functions to add fs_ prefix 2019-04-09 10:03:29 +10:00
romfs.c Change fs functions to add fs_ prefix 2019-04-09 10:03:29 +10:00
sfs.c fs/sfs: Fix over-read of root object name 2021-03-02 15:54:18 +01:00
squash4.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
tar.c calloc: Use calloc() at most places 2020-07-29 16:55:47 +02:00
udf.c udf: Fix memory leak 2020-07-29 16:55:48 +02:00
ufs2.c automake commit without merge history 2010-05-06 11:34:04 +05:30
ufs_be.c Support big-endian UFS1. 2012-12-08 20:56:58 +01:00
ufs.c fs: Use 64-bit type for filesystem timestamp 2021-06-01 17:19:13 +02:00
xfs.c fs/xfs: Add needsrepair incompat feature support 2021-06-01 17:20:20 +02:00