summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2026-06-02 08:26:49 +0300
committerJohannes Thumshirn <johannes.thumshirn@wdc.com>2026-06-09 19:22:46 +0300
commit7af30ba6ebc4ddde6dddb3545343a3d22128a588 (patch)
treef4793398b2985731237b5d556fed4e4460b34bda
parent1b1937eb08f51319bf71575484cde2b8c517aedc (diff)
downloadlinux-7af30ba6ebc4ddde6dddb3545343a3d22128a588.tar.xz
btrfs: print a message when a missing device re-appears
There is a bug report that fstrim crashed, and that crash is eventually pinned down to a missing device which re-appeared and screwed up callers that only checks BTRFS_DEV_STATE_MISSING, but not BTRFS_DEV_STATE_WRITEABLE nor device->bdev. A missing device re-appearing can be very tricky, as for now it will result in a device without WRITEABLE or MISSING flag, and still no bdev pointer. As the first step to enhance handling of such re-appearing missing devices, add a dmesg output when a missing device re-appeared. Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/volumes.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index f409f870a6bc..6eab4cc73ce4 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -963,6 +963,11 @@ static noinline struct btrfs_device *device_list_add(const char *path,
devid, btrfs_dev_name(device),
path, current->comm,
task_pid_nr(current));
+ } else {
+ btrfs_info(NULL,
+ "missing devid %llu re-appeared at %s scanned by %s (%d)",
+ devid, path, current->comm,
+ task_pid_nr(current));
}
name = kstrdup(path, GFP_NOFS);