Josef Bacik
32fb859ec3
btrfs: track reloc roots based on their commit root bytenr
...
[ Upstream commit ea287ab157c2816bf12aad4cece41372f9d146b4 ]
We always search the commit root of the extent tree for looking up back
references, however we track the reloc roots based on their current
bytenr.
This is wrong, if we commit the transaction between relocating tree
blocks we could end up in this code in build_backref_tree
if (key.objectid == key.offset) {
/*
* Only root blocks of reloc trees use backref
* pointing to itself.
*/
root = find_reloc_root(rc, cur->bytenr);
ASSERT(root);
cur->root = root;
break;
}
find_reloc_root() is looking based on the bytenr we had in the commit
root, but if we've COWed this reloc root we will not find that bytenr,
and we will trip over the ASSERT(root).
Fix this by using the commit_root->start bytenr for indexing the commit
root. Then we change the __update_reloc_root() caller to be used when
we switch the commit root for the reloc root during commit.
This fixes the panic I was seeing when we started throttling relocation
for delayed refs.
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-17 10:48:42 +02:00
..
9p
9p: avoid attaching writeback_fid on mmap with type PRIVATE
2019-10-11 18:21:13 +02:00
adfs
fs/adfs: super: fix use-after-free bug
2019-08-06 19:06:49 +02:00
affs
affs: fix a memory leak in affs_remount
2020-01-27 14:51:21 +01:00
afs
afs: Fix some tracing details
2020-04-02 15:28:19 +02:00
autofs
autofs: fix a leak in autofs_expire_indirect()
2019-12-13 08:51:01 +01:00
befs
fix a series of Documentation/ broken file name references
2018-06-15 18:10:01 -03:00
bfs
bfs: add sanity check at bfs_fill_super()
2018-12-01 09:37:27 +01:00
btrfs
btrfs: track reloc roots based on their commit root bytenr
2020-04-17 10:48:42 +02:00
cachefiles
fscache, cachefiles: remove redundant variable 'cache'
2018-12-17 09:24:40 +01:00
ceph
ceph: canonicalize server path in place
2020-04-13 10:45:12 +02:00
cifs
cifs_atomic_open(): fix double-put on late allocation failure
2020-03-18 07:14:21 +01:00
coda
coda: add error handling for fget
2019-08-06 19:06:51 +02:00
configfs
configfs: fix a deadlock in configfs_symlink()
2019-11-12 19:20:47 +01:00
cramfs
Cramfs: fix abad comparison when wrap-arounds occur
2018-11-13 11:08:55 -08:00
crypto
fscrypt: clean up some BUG_ON()s in block encryption/decryption
2019-07-26 09:14:02 +02:00
debugfs
debugfs: fix use-after-free on symlink traversal
2019-05-08 07:21:48 +02:00
devpts
fs/devpts: always delete dcache dentry-s in dput()
2019-03-23 20:09:59 +01:00
dlm
dlm: fix invalid cluster name warning
2019-12-13 08:52:23 +01:00
ecryptfs
ecryptfs: replace BUG_ON with error handling code
2020-02-28 16:38:59 +01:00
efivarfs
efivars: Call guid_parse() against guid_t type of variable
2018-07-22 14:13:44 +02:00
efs
exofs
exofs_mount(): fix leaks on failure exits
2019-12-05 09:20:32 +01:00
exportfs
exportfs: fix 'passing zero to ERR_PTR()' warning
2020-01-27 14:50:02 +01:00
ext2
ext2: Adjust indentation in ext2_fill_super
2020-02-11 04:34:12 -08:00
ext4
ext4: potential crash on allocation error in ext4_alloc_flex_bg_array()
2020-03-05 16:42:17 +01:00
f2fs
f2fs: fix memleak of kobject
2020-02-24 08:34:49 +01:00
fat
fat: fix uninit-memory access for partial initialized inode
2020-03-11 14:15:01 +01:00
freevxfs
fscache
fscache: fix race between enablement and dropping of object
2018-12-17 09:24:40 +01:00
fuse
fuse: verify attributes
2019-12-13 08:52:36 +01:00
gfs2
gfs2: Don't demote a glock until its revokes are written
2020-04-17 10:48:41 +02:00
hfs
fs/hfs/extent.c: fix array out of bounds read of array extent
2019-12-01 09:17:10 +01:00
hfsplus
hfsplus: update timestamps on truncate()
2019-12-01 09:17:09 +01:00
hostfs
vfs: discard ATTR_ATTR_FLAG
2018-08-17 16:20:28 -07:00
hpfs
hpfs: remove unnecessary checks on the value of r when assigning error code
2018-08-25 12:42:33 -07:00
hugetlbfs
hugetlb: use same fault hash key for shared and private mappings
2019-05-22 07:37:40 +02:00
isofs
isofs: reject hardware sector size > 2048 bytes
2018-08-21 11:37:41 +02:00
jbd2
jbd2: fix data races at struct journal_head
2020-03-20 11:55:56 +01:00
jffs2
jffs2: fix use-after-free on symlink traversal
2019-05-08 07:21:48 +02:00
jfs
jfs: fix bogus variable self-initialization
2020-01-27 14:50:33 +01:00
kernfs
kernfs: fix ino wrap-around detection
2019-12-13 08:52:43 +01:00
lockd
lockd: fix decoding of TEST results
2019-12-13 08:51:59 +01:00
minix
nfs
nfs: add minor version to nfs_server_key for fscache
2020-04-02 15:28:14 +02:00
nfs_common
nfsd
nfsd: Return the correct number of bytes written to the file
2020-02-11 04:34:13 -08:00
nilfs2
nilfs2: convert to SPDX license tags
2018-09-04 16:45:02 -07:00
nls
notify
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:17:20 +01:00
ntfs
ntfs: mft: remove VLA usage
2018-08-17 16:20:27 -07:00
ocfs2
ocfs2: fix a NULL pointer dereference when call ocfs2_update_inode_fsync_trans()
2020-02-24 08:34:52 +01:00
omfs
openpromfs
orangefs
help_next should increase position index
2020-02-24 08:34:53 +01:00
overlayfs
ovl: fix wrong WARN_ON() in ovl_cache_update_ino()
2020-02-11 04:34:02 -08:00
proc
mm, thp, proc: report THP eligibility for each vma
2019-12-17 20:35:45 +01:00
pstore
pstore/platform: fix potential mem leak if pstore_init_fs failed
2020-04-17 10:48:40 +02:00
qnx4
qnx6
quota
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:17:20 +01:00
ramfs
reiserfs
reiserfs: prevent NULL pointer dereference in reiserfs_insert_item()
2020-02-24 08:34:52 +01:00
romfs
squashfs
Squashfs: Compute expected length from inode size rather than block length
2018-08-02 09:34:02 -07:00
sysfs
Driver core patches for 4.19-rc1
2018-08-18 11:44:53 -07:00
sysv
sysv: return 'err' instead of 0 in __sysv_write_inode
2018-12-17 09:24:30 +01:00
tracefs
tracefs: Annotate tracefs_ops with __ro_after_init
2018-07-31 11:32:44 -04:00
ubifs
ubifs: Fix deadlock in concurrent bulk-read and writepage
2020-02-11 04:34:00 -08:00
udf
udf: Fix free space reporting for metadata and virtual partitions
2020-02-24 08:34:45 +01:00
ufs
ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour
2019-05-25 18:23:46 +02:00
xfs
xfs: Sanity check flags of Q_XQUOTARM call
2020-01-27 14:49:51 +01:00
aio.c
aio: prevent potential eventfd recursion on poll
2020-02-11 04:34:08 -08:00
anon_inodes.c
anon_inode_getfile(): switch to alloc_file_pseudo()
2018-07-12 10:04:27 -04:00
attr.c
fs: Fix attr.c kernel-doc
2018-07-03 16:44:45 -04:00
bad_inode.c
get rid of 'opened' argument of ->atomic_open() - part 3
2018-07-12 10:04:20 -04:00
binfmt_aout.c
binfmt_elf.c
binfmt_elf: Do not move brk for INTERP-less ET_EXEC
2019-10-05 13:10:06 +02:00
binfmt_elf_fdpic.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
binfmt_em86.c
binfmt_flat.c
fs/binfmt_flat.c: make load_flat_shared_library() work
2019-07-03 13:14:44 +02:00
binfmt_misc.c
turn filp_clone_open() into inline wrapper for dentry_open()
2018-07-10 23:29:03 -04:00
binfmt_script.c
exec: load_script: Do not exec truncated interpreter path
2019-11-06 13:05:37 +01:00
block_dev.c
bdev: Refresh bdev size for disks without partitioning
2020-01-09 10:19:07 +01:00
buffer.c
fs: fix guard_bio_eod to check for real EOD errors
2019-04-05 22:33:00 +02:00
char_dev.c
chardev: Avoid potential use-after-free in 'chrdev_open()'
2020-01-14 20:06:57 +01:00
compat.c
compat_binfmt_elf.c
compat_ioctl.c
fix compat handling of FICLONERANGE, FIDEDUPERANGE and FS_IOC_FIEMAP
2020-01-09 10:19:07 +01:00
coredump.c
d_path.c
dax.c
dax: pass NOWAIT flag to iomap_apply
2020-03-05 16:42:12 +01:00
dcache.c
dcache: sort the freeing-without-RCU-delay mess for good.
2019-05-25 18:23:26 +02:00
dcookies.c
direct-io.c
direct-io: allow direct writes to empty inodes
2019-03-05 17:58:50 +01:00
drop_caches.c
fs: avoid softlockups in s_inodes iterators
2020-01-12 12:17:20 +01:00
eventfd.c
eventfd: track eventfd_signal() recursion depth
2020-02-11 04:34:08 -08:00
eventpoll.c
fs/epoll: drop ovflist branch prediction
2019-02-12 19:47:19 +01:00
exec.c
sched/fair: Don't free p->numa_faults with concurrent readers
2019-08-04 09:30:56 +02:00
fcntl.c
signal: Don't send signals to tasks that don't exist
2018-08-15 23:03:20 -05:00
fhandle.c
file.c
fs/file.c: initialize init_files.resize_wait
2019-04-05 22:32:59 +02:00
file_table.c
overlayfs update for 4.19
2018-08-21 18:19:09 -07:00
filesystems.c
fs-writeback.c
cgroup,writeback: don't switch wbs immediately on dead wbs if the memcg is dead
2019-11-12 19:21:20 +01:00
fs_pin.c
fs_struct.c
inode.c
futex: Fix inode life-time issue
2020-03-25 08:06:14 +01:00
internal.h
acct_on(): don't mess with freeze protection
2019-05-31 06:46:05 -07:00
ioctl.c
vfs: fix FIGETBSZ ioctl on an overlayfs file
2018-11-21 09:19:14 +01:00
iomap.c
iomap: partially revert 4721a601099 (simulated directio short read on EFAULT)
2019-12-13 08:52:56 +01:00
Kconfig
autofs: remove left-over autofs4 stubs
2018-06-11 08:22:34 -07:00
Kconfig.binfmt
kconfig: move the "Executable file formats" menu to fs/Kconfig.binfmt
2018-08-02 08:06:55 +09:00
libfs.c
libfs: fix infoleak in simple_attr_read()
2020-04-02 15:28:21 +02:00
locks.c
locks: print unsigned ino in /proc/locks
2020-01-09 10:19:00 +01:00
Makefile
autofs: remove left-over autofs4 stubs
2018-06-11 08:22:34 -07:00
mbcache.c
treewide: kmalloc() -> kmalloc_array()
2018-06-12 16:19:22 -07:00
mount.h
mpage.c
mpage: mpage_readpages() should submit IO as read-ahead
2018-08-17 16:20:29 -07:00
namei.c
namei: only return -ECHILD from follow_dotdot_rcu()
2020-03-05 16:42:20 +01:00
namespace.c
mnt: fix __detach_mounts infinite loop
2018-11-21 09:19:22 +01:00
no-block.c
nsfs.c
dcache: sort the freeing-without-RCU-delay mess for good.
2019-05-25 18:23:26 +02:00
open.c
cifs_atomic_open(): fix double-put on late allocation failure
2020-03-18 07:14:21 +01:00
pipe.c
fs: prevent page refcount overflow in pipe_buf_get
2019-05-04 09:20:11 +02:00
pnode.c
pnode.h
posix_acl.c
proc_namespace.c
read_write.c
vfs: avoid problematic remapping requests into partial EOF block
2019-12-01 09:17:04 +01:00
readdir.c
filldir[64]: remove WARN_ON_ONCE() for bad directory entries
2020-01-04 19:13:26 +01:00
select.c
Revert changes to convert to ->poll_mask() and aio IOCB_CMD_POLL
2018-06-28 10:40:47 -07:00
seq_file.c
seq_file: fix problem when seeking mid-record
2019-08-25 10:47:43 +02:00
signalfd.c
Merge branch 'work.compat' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2018-06-16 16:21:50 +09:00
splice.c
splice: only read in as much information as there is pipe buffer space
2019-12-17 20:35:43 +01:00
stack.c
stat.c
statfs.c
vfs: Fix EOVERFLOW testing in put_compat_statfs64
2019-10-11 18:21:39 +02:00
super.c
Merge branch 'ida-4.19' of git://git.infradead.org/users/willy/linux-dax
2018-08-26 11:48:42 -07:00
sync.c
timerfd.c
Merge branch 'work.aio' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2018-08-13 20:56:23 -07:00
userfaultfd.c
userfaultfd: require CAP_SYS_PTRACE for UFFD_FEATURE_EVENT_FORK
2020-01-04 19:13:18 +01:00
utimes.c
xattr.c
sysfs: Do not return POSIX ACL xattrs via listxattr
2018-09-18 07:30:48 -04:00