linux/fs/btrfs
Qu Wenruo 7af30ba6eb 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>
History 2026-06-09 18:22:46 +02:00
..
tests btrfs: remove op field from struct btrfs_free_space_ctl 2026-06-08 15:53:29 +02:00
accessors.c btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
accessors.h btrfs: allow mounting filesystems with remap-tree incompat flag 2026-02-03 07:54:35 +01:00
acl.c posix_acl: make posix_acl_to_xattr() alloc the buffer 2026-01-16 10:51:12 +01:00
acl.h btrfs: update include and forward declarations in headers 2025-03-18 20:35:43 +01:00
async-thread.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
async-thread.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
backref.c btrfs: use on stack backref iterator in build_backref_tree() 2026-06-08 15:53:32 +02:00
backref.h btrfs: use on stack backref iterator in build_backref_tree() 2026-06-08 15:53:32 +02:00
bio.c btrfs: btrfs_log_dev_io_error() on all bio errors 2026-04-07 20:00:29 +02:00
bio.h btrfs: move existing remaps before relocating block group 2026-02-03 07:54:35 +01:00
block-group.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
block-group.h btrfs: use the enums instead of int type in struct btrfs_block_group fields 2026-06-08 15:53:30 +02:00
block-rsv.c btrfs: don't allow log trees to consume global reserve or overcommit metadata 2026-04-07 18:55:53 +02:00
block-rsv.h btrfs: add METADATA_REMAP chunk type 2026-02-03 07:54:27 +01:00
btrfs_inode.h btrfs: move large data folios out of experimental features 2026-06-08 15:53:31 +02:00
compression.c Revert "btrfs: fix the file offset calculation inside btrfs_decompress_buf2page()" 2026-06-09 18:22:44 +02:00
compression.h btrfs: prevent direct reclaim during compressed readahead 2026-04-07 18:56:08 +02:00
ctree.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
ctree.h btrfs: introduce BTRFS_PATH_AUTO_RELEASE() helper 2026-02-03 06:38:32 +01:00
defrag.c btrfs: move large data folios out of experimental features 2026-06-08 15:53:31 +02:00
defrag.h btrfs: pass struct btrfs_inode to btrfs_defrag_file() 2025-03-18 20:35:43 +01:00
delalloc-space.c btrfs: use shifts for sectorsize and nodesize 2026-06-09 18:22:45 +02:00
delalloc-space.h btrfs: pass struct btrfs_inode to btrfs_free_reserved_data_space_noquota() 2025-05-15 14:30:52 +02:00
delayed-inode.c btrfs: unexport btrfs_qgroup_reserve_meta() 2026-04-07 18:56:05 +02:00
delayed-inode.h btrfs: embed delayed root to struct btrfs_fs_info 2026-02-03 07:56:20 +01:00
delayed-ref.c btrfs: lift assertions to beginning of insert_delayed_ref() 2026-06-08 15:53:28 +02:00
delayed-ref.h btrfs: move ref-verify under CONFIG_BTRFS_DEBUG 2025-09-22 10:54:32 +02:00
dev-replace.c btrfs: always update/create the dev stats item when adding a new device 2026-06-09 18:22:45 +02:00
dev-replace.h btrfs: trivial conversion to return bool instead of int 2025-05-15 14:30:49 +02:00
dir-item.c btrfs: remove pointless error check in btrfs_check_dir_item_collision() 2026-04-07 18:56:00 +02:00
dir-item.h btrfs: rename inode number parameter passed to btrfs_check_dir_item_collision() 2025-07-22 00:05:00 +02:00
direct-io.c btrfs: remove redundant nowait check in lock_extent_direct() 2026-04-07 18:55:58 +02:00
direct-io.h btrfs: update include and forward declarations in headers 2025-03-18 20:35:43 +01:00
discard.c btrfs: handle discarding fully-remapped block groups 2026-02-03 07:54:36 +01:00
discard.h btrfs: update include and forward declarations in headers 2025-03-18 20:35:43 +01:00
disk-io.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
disk-io.h btrfs: remove atomic parameter from btrfs_buffer_uptodate() 2026-04-07 18:56:02 +02:00
export.c btrfs: avoid potential out-of-bounds in btrfs_encode_fh() 2025-09-26 08:48:30 +02:00
export.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
extent-io-tree.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
extent-io-tree.h btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
extent-tree.c btrfs: do not trim a device which is not writeable 2026-06-09 18:22:46 +02:00
extent-tree.h btrfs: add do_remap parameter to btrfs_discard_extent() 2026-02-03 07:54:35 +01:00
extent_io.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
extent_io.h btrfs: allocate eb-attached btree pages as movable 2026-06-09 18:22:45 +02:00
extent_map.c btrfs: make more ASSERTs verbose, part 3 2026-06-08 15:53:28 +02:00
extent_map.h btrfs: headers cleanup to remove unnecessary local includes 2025-11-24 22:34:52 +01:00
fiemap.c btrfs: make more ASSERTs verbose, part 3 2026-06-08 15:53:28 +02:00
fiemap.h btrfs: move fiemap code into its own file 2024-07-11 15:33:20 +02:00
file-item.c btrfs: use shifts for sectorsize and nodesize 2026-06-09 18:22:45 +02:00
file-item.h btrfs: rename btrfs_csum_file_blocks() to btrfs_insert_data_csums() 2026-04-07 18:55:56 +02:00
file.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
file.h btrfs: update include and forward declarations in headers 2025-03-18 20:35:43 +01:00
free-space-cache.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
free-space-cache.h btrfs: remove op field from struct btrfs_free_space_ctl 2026-06-08 15:53:29 +02:00
free-space-tree.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
free-space-tree.h btrfs: handle setting up relocation of block group with remap-tree 2026-02-03 07:54:35 +01:00
fs.c btrfs: switch to library APIs for checksums 2026-02-03 06:38:32 +01:00
fs.h btrfs: add message format for qgroupid 2026-06-09 18:22:44 +02:00
inode-item.c btrfs: merge setting ret and return ret 2026-02-03 06:38:33 +01:00
inode-item.h btrfs: remove unused parameters from btrfs_lookup_inode_extref() 2025-07-21 23:58:03 +02:00
inode.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
ioctl.c btrfs: return real error after lookup failure in btrfs_ioctl_default_subvol() 2026-06-09 18:22:46 +02:00
ioctl.h tree-wide: s/struct fileattr/struct file_kattr/g 2025-07-04 16:14:39 +02:00
Kconfig btrfs: introduce support for huge folios 2026-06-09 11:49:26 +01:00
locking.c btrfs: add definitions and constants for remap-tree 2026-02-03 07:54:02 +01:00
locking.h btrfs: fix typos in comments and strings 2025-09-23 08:49:16 +02:00
lru_cache.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
lru_cache.h btrfs: cleanup recursive include of the same header 2024-07-11 15:33:22 +02:00
lzo.c btrfs: prevent direct reclaim during compressed readahead 2026-04-07 18:56:08 +02:00
Makefile btrfs: tests: zoned: add tests cases for zoned code 2026-04-07 18:55:52 +02:00
messages.c btrfs: tag as unlikely if statements that check for fs in error state 2026-04-07 19:41:42 +02:00
messages.h btrfs: stop printing condition result in assertion failure messages 2026-04-07 18:55:58 +02:00
misc.h btrfs: introduce a common helper to calculate the size of a bio 2026-04-07 18:55:59 +02:00
ordered-data.c btrfs: make more ASSERTs verbose, part 3 2026-06-08 15:53:28 +02:00
ordered-data.h btrfs: check type flags in alloc_ordered_extent() 2026-04-07 18:56:02 +02:00
orphan.c btrfs: BTRFS_PATH_AUTO_FREE in orphan.c 2024-09-10 16:51:22 +02:00
orphan.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
print-tree.c btrfs: remove redundant extent_buffer_uptodate() checks after read_tree_block() 2026-04-07 18:55:55 +02:00
print-tree.h btrfs: update include and forward declarations in headers 2025-03-18 20:35:43 +01:00
props.c btrfs: props: switch prop_handler::extract to struct btrfs_inode 2025-03-18 20:35:44 +01:00
props.h btrfs: pass struct btrfs_inode to btrfs_inode_inherit_props() 2025-03-18 20:35:44 +01:00
qgroup.c btrfs: add message format for qgroupid 2026-06-09 18:22:44 +02:00
qgroup.h btrfs: unexport btrfs_qgroup_reserve_meta() 2026-04-07 18:56:05 +02:00
raid-stripe-tree.c btrfs: make more ASSERTs verbose, part 3 2026-06-08 15:53:28 +02:00
raid-stripe-tree.h btrfs: update include and forward declarations in headers 2025-03-18 20:35:43 +01:00
raid56.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
raid56.h btrfs: raid56: introduce a new parameter to locate a sector 2025-11-25 01:46:58 +01:00
ref-verify.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
ref-verify.h btrfs: move ref-verify under CONFIG_BTRFS_DEBUG 2025-09-22 10:54:32 +02:00
reflink.c btrfs: fix deadlock cloning inline extent when using flushoncommit 2026-06-09 18:22:45 +02:00
reflink.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
relocation.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
relocation.h btrfs: handle setting up relocation of block group with remap-tree 2026-02-03 07:54:35 +01:00
root-tree.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
root-tree.h btrfs: qgroup: fix qgroup prealloc rsv leak in subvolume operations 2024-04-02 19:18:23 +02:00
scrub.c btrfs: allocate eb-attached btree pages as movable 2026-06-09 18:22:45 +02:00
scrub.h btrfs: convert several int parameters to bool 2025-09-22 10:54:32 +02:00
send.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
send.h btrfs: pass btrfs_root pointers to send ioctl parameters 2025-03-18 20:35:49 +01:00
space-info.c btrfs: zoned: fix deadlock waiting for ticket during data relocation 2026-06-09 18:22:44 +02:00
space-info.h btrfs: zoned: fix deadlock waiting for ticket during data relocation 2026-06-09 18:22:44 +02:00
subpage.c btrfs: introduce support for huge folios 2026-06-09 11:49:26 +01:00
subpage.h btrfs: migrate btrfs_bio_ctrl::submit_bitmap to support larger bitmaps 2026-06-09 11:49:26 +01:00
super.c btrfs: use lockless read in nr_cached_objects shrinker callback 2026-06-09 18:22:46 +02:00
super.h btrfs: constify arguments of some functions 2026-04-07 18:55:58 +02:00
sysfs.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
sysfs.h btrfs: remove fs_info argument from btrfs_sysfs_add_space_info_type() 2025-11-24 22:02:30 +01:00
transaction.c btrfs: switch local indicator variables to bools 2026-06-09 18:22:46 +02:00
transaction.h btrfs: simplify how first hit is passed to __btrfs_abort_transaction() 2026-06-09 11:49:25 +01:00
tree-checker.c btrfs: validate data reloc tree file extent item members 2026-06-09 18:22:44 +02:00
tree-checker.h btrfs: add definitions and constants for remap-tree 2026-02-03 07:54:02 +01:00
tree-log.c btrfs: tracepoints: add trace event for btrfs_sync_log() 2026-06-09 11:49:25 +01:00
tree-log.h btrfs: use a named enum for the log mode in inode log functions 2026-06-08 15:53:34 +02:00
tree-mod-log.c btrfs: remove redundant extent_buffer_uptodate() checks after read_tree_block() 2026-04-07 18:55:55 +02:00
tree-mod-log.h btrfs: drop unused parameter path from btrfs_tree_mod_log_rewind() 2024-11-11 14:34:15 +01:00
ulist.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
ulist.h btrfs: preallocate ulist memory for qgroup rsv 2024-07-11 15:33:26 +02:00
uuid-tree.c btrfs: prefer IS_ERR_OR_NULL() over manual NULL check 2026-04-07 18:56:02 +02:00
uuid-tree.h btrfs: fix transaction abort on set received ioctl due to item overflow 2026-03-03 17:03:59 +01:00
verity.c btrfs: remove 32bit compat code for VFS inode number 2026-06-08 15:53:30 +02:00
verity.h btrfs: add forward declarations and headers, part 1 2024-03-04 16:24:49 +01:00
volumes.c btrfs: print a message when a missing device re-appears 2026-06-09 18:22:46 +02:00
volumes.h btrfs: remove the dev stats item for replace target device 2026-06-09 18:22:44 +02:00
xattr.c btrfs: remaining BTRFS_PATH_AUTO_FREE conversions 2025-11-25 01:53:33 +01:00
xattr.h btrfs: update include and forward declarations in headers 2025-03-18 20:35:43 +01:00
zlib.c btrfs: prevent direct reclaim during compressed readahead 2026-04-07 18:56:08 +02:00
zoned.c btrfs: use mapping shared locking for reading super block 2026-06-09 18:22:46 +02:00
zoned.h btrfs: zoned: factor out the zone loading part into a testable function 2026-02-03 07:59:06 +01:00
zstd.c btrfs: prevent direct reclaim during compressed readahead 2026-04-07 18:56:08 +02:00