Filipe Manana
e2dec6cdb6
btrfs: use btrfs_record_snapshot_destroy() during rmdir
...
[ Upstream commit 157501b0469969fc1ba53add5049575aadd79d80 ]
We are setting the parent directory's last_unlink_trans directly which
may result in a concurrent task starting to log the directory not see the
update and therefore can log the directory after we removed a child
directory which had a snapshot within instead of falling back to a
transaction commit. Replaying such a log tree would result in a mount
failure since we can't currently delete snapshots (and subvolumes) during
log replay. This is the type of failure described in commit 1ec9a1ae1e
("Btrfs: fix unreplayable log after snapshot delete + parent dir fsync").
Fix this by using btrfs_record_snapshot_destroy() which updates the
last_unlink_trans field while holding the inode's log_mutex lock.
Fixes: 44f714dae5 ("Btrfs: improve performance on fsync against new inode after rename/unlink")
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-07-17 18:24:59 +02:00
..
tests
btrfs: remove pointless and double ulist frees in error paths of qgroup tests
2022-11-25 17:42:13 +01:00
acl.c
async-thread.c
btrfs: fix memory ordering between normal and ordered work functions
2021-11-26 10:47:21 +01:00
async-thread.h
backref.c
btrfs: fix information leak in btrfs_ioctl_logical_to_ino()
2024-05-02 16:18:36 +02:00
backref.h
block-group.c
btrfs: reset block group chunk force if we have to wait
2022-08-25 11:18:11 +02:00
block-group.h
block-rsv.c
btrfs: fix data race at btrfs_use_block_rsv() when accessing block reserve
2024-03-26 18:22:13 -04:00
block-rsv.h
btrfs: fix data race at btrfs_use_block_rsv() when accessing block reserve
2024-03-26 18:22:13 -04:00
btrfs_inode.h
check-integrity.c
check-integrity.h
compression.c
compression.h
ctree.c
btrfs: fix extent buffer leak after tree mod log failure at split_node()
2023-08-11 11:53:44 +02:00
ctree.h
btrfs: move btrfs_pinned_by_swapfile prototype into volumes.h
2023-09-23 11:00:05 +02:00
delalloc-space.c
btrfs: don't arbitrarily slow down delalloc if we're committing
2023-11-28 16:50:19 +00:00
delalloc-space.h
delayed-inode.c
btrfs: change BUG_ON to assertion when checking for delayed_node root
2024-09-04 13:14:56 +02:00
delayed-inode.h
delayed-ref.c
btrfs: reinitialize delayed ref list after deleting it from the list
2024-11-17 14:58:51 +01:00
delayed-ref.h
dev-replace.c
btrfs: dev-replace: properly validate device names
2024-03-06 14:36:09 +00:00
dev-replace.h
dir-item.c
btrfs: unify lookup return value when dir entry is missing
2022-09-05 10:27:46 +02:00
disk-io.c
btrfs: wait for fixup workers before stopping cleaner kthread during umount
2024-11-08 16:20:42 +01:00
disk-io.h
export.c
btrfs: export: handle invalid inode or root reference in btrfs_get_parent()
2024-04-13 12:51:37 +02:00
export.h
btrfs: fix type of parameter generation in btrfs_get_dentry
2022-11-10 17:57:55 +01:00
extent-tree.c
btrfs: clean up our handling of refs == 0 in snapshot delete
2024-09-12 11:03:54 +02:00
extent_io.c
btrfs: avoid linker error in btrfs_find_create_tree_block()
2025-06-04 14:32:30 +02:00
extent_io.h
btrfs: fix qgroup reserve overflow the qgroup limit
2022-04-15 14:18:39 +02:00
extent_map.c
extent_map.h
file-item.c
btrfs: handle memory allocation failure in btrfs_csum_one_bio
2023-06-21 15:44:09 +02:00
file.c
free-space-cache.c
btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()
2024-09-04 13:14:51 +02:00
free-space-cache.h
free-space-tree.c
free-space-tree.h
inode-item.c
inode-map.c
inode-map.h
inode.c
btrfs: use btrfs_record_snapshot_destroy() during rmdir
2025-07-17 18:24:59 +02:00
ioctl.c
btrfs: don't abort filesystem when attempting to snapshot deleted subvolume
2025-07-17 18:24:55 +02:00
Kconfig
locking.c
locking.h
lzo.c
Makefile
misc.h
ordered-data.c
ordered-data.h
orphan.c
print-tree.c
btrfs: print-tree: parent bytenr must be aligned to sector size
2023-05-17 11:36:00 +02:00
print-tree.h
props.c
props.h
qgroup.c
btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()
2024-09-04 13:14:56 +02:00
qgroup.h
btrfs: qgroup: catch reserved space leaks at unmount time
2023-08-11 11:53:44 +02:00
raid56.c
btrfs: raid56: don't trust any cached sector in __raid56_parity_recover()
2022-08-25 11:18:40 +02:00
raid56.h
rcu-string.h
btrfs: replace strncpy() with strscpy()
2023-01-18 11:41:52 +01:00
reada.c
ref-verify.c
btrfs: ref-verify: fix use-after-free after invalid ref action
2024-12-14 19:44:42 +01:00
ref-verify.h
relocation.c
btrfs: convert BUG_ON in btrfs_reloc_cow_block() to proper error handling
2025-03-13 12:43:02 +01:00
root-tree.c
btrfs: fix silent failure when deleting root reference
2022-09-05 10:27:43 +02:00
scrub.c
btrfs: scrub: try to fix super block errors
2022-10-26 13:22:55 +02:00
send.c
btrfs: send: return -ENAMETOOLONG when attempting a path that is too long
2025-06-04 14:32:30 +02:00
send.h
space-info.c
btrfs: prevent __btrfs_dump_space_info() to underflow its free space
2021-09-30 10:09:22 +02:00
space-info.h
struct-funcs.c
super.c
btrfs: correctly escape subvol in btrfs_show_options()
2025-05-02 07:39:20 +02:00
sysfs.c
btrfs: sysfs: normalize the error handling branch in btrfs_init_sysfs()
2022-12-08 11:23:01 +01:00
sysfs.h
transaction.c
btrfs: fix use-after-free when attempting to join an aborted transaction
2025-03-13 12:43:02 +01:00
transaction.h
tree-checker.c
btrfs: tree-checker: reject inline extent items with 0 ref count
2025-01-09 13:23:29 +01:00
tree-checker.h
tree-defrag.c
tree-log.c
btrfs: fix missing error handling when searching for inode refs during log replay
2025-07-17 18:24:56 +02:00
tree-log.h
ulist.c
ulist.h
uuid-tree.c
volumes.c
btrfs: add missing mutex_unlock in btrfs_relocate_sys_chunks()
2024-05-25 16:17:18 +02:00
volumes.h
btrfs: add a helper to read the superblock metadata_uuid
2023-09-23 11:00:05 +02:00
xattr.c
btrfs: check if root is readonly while setting security xattr
2022-09-05 10:27:43 +02:00
xattr.h
zlib.c
btrfs: zlib: zero-initialize zlib workspace
2023-02-22 12:50:30 +01:00
zstd.c