android_kernel_motorola_sm6375/fs/btrfs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
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