xfs: wire up sops->shutdown
Wire up the shutdown method to shut down the file system when the underlying block device is marked dead. Add a new message to clearly distinguish this shutdown reason from other shutdowns. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Acked-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Link: https://lore.kernel.org/r/20230601094459.1350643-13-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
87efb39075
commit
e7caa877e5
|
@ -534,6 +534,9 @@ xfs_do_force_shutdown(
|
|||
} else if (flags & SHUTDOWN_CORRUPT_ONDISK) {
|
||||
tag = XFS_PTAG_SHUTDOWN_CORRUPT;
|
||||
why = "Corruption of on-disk metadata";
|
||||
} else if (flags & SHUTDOWN_DEVICE_REMOVED) {
|
||||
tag = XFS_PTAG_SHUTDOWN_IOERROR;
|
||||
why = "Block device removal";
|
||||
} else {
|
||||
tag = XFS_PTAG_SHUTDOWN_IOERROR;
|
||||
why = "Metadata I/O Error";
|
||||
|
|
|
@ -457,12 +457,14 @@ void xfs_do_force_shutdown(struct xfs_mount *mp, uint32_t flags, char *fname,
|
|||
#define SHUTDOWN_FORCE_UMOUNT (1u << 2) /* shutdown from a forced unmount */
|
||||
#define SHUTDOWN_CORRUPT_INCORE (1u << 3) /* corrupt in-memory structures */
|
||||
#define SHUTDOWN_CORRUPT_ONDISK (1u << 4) /* corrupt metadata on device */
|
||||
#define SHUTDOWN_DEVICE_REMOVED (1u << 5) /* device removed underneath us */
|
||||
|
||||
#define XFS_SHUTDOWN_STRINGS \
|
||||
{ SHUTDOWN_META_IO_ERROR, "metadata_io" }, \
|
||||
{ SHUTDOWN_LOG_IO_ERROR, "log_io" }, \
|
||||
{ SHUTDOWN_FORCE_UMOUNT, "force_umount" }, \
|
||||
{ SHUTDOWN_CORRUPT_INCORE, "corruption" }
|
||||
{ SHUTDOWN_CORRUPT_INCORE, "corruption" }, \
|
||||
{ SHUTDOWN_DEVICE_REMOVED, "device_removed" }
|
||||
|
||||
/*
|
||||
* Flags for xfs_mountfs
|
||||
|
|
|
@ -1159,6 +1159,13 @@ xfs_fs_free_cached_objects(
|
|||
return xfs_reclaim_inodes_nr(XFS_M(sb), sc->nr_to_scan);
|
||||
}
|
||||
|
||||
static void
|
||||
xfs_fs_shutdown(
|
||||
struct super_block *sb)
|
||||
{
|
||||
xfs_force_shutdown(XFS_M(sb), SHUTDOWN_DEVICE_REMOVED);
|
||||
}
|
||||
|
||||
static const struct super_operations xfs_super_operations = {
|
||||
.alloc_inode = xfs_fs_alloc_inode,
|
||||
.destroy_inode = xfs_fs_destroy_inode,
|
||||
|
@ -1172,6 +1179,7 @@ static const struct super_operations xfs_super_operations = {
|
|||
.show_options = xfs_fs_show_options,
|
||||
.nr_cached_objects = xfs_fs_nr_cached_objects,
|
||||
.free_cached_objects = xfs_fs_free_cached_objects,
|
||||
.shutdown = xfs_fs_shutdown,
|
||||
};
|
||||
|
||||
static int
|
||||
|
|
Loading…
Reference in New Issue