linux/fs/btrfs
Josef Bacik d3984c9041 btrfs: introduce an evict flushing state
We have this weird space flushing loop inside inode.c for evict where
we'll do the normal LIMIT flush, and then commit the transaction and
hope we get our space.  This is super janky, and in fact there's really
nothing stopping us from using FLUSH_ALL except that we run delayed
iputs, which means we could deadlock.  So introduce a new flush state
for eviction that does the normal priority flushing with all of the
states that are safe for eviction.

The nice side-effect of this is that we'll try harder for evictions.
Previously if (for example generic/269) you had a bunch of other
operations happening on the fs you could race with those reservations
when committing the transaction, and eventually miss getting a
reservation for the evict.  With this code we'll have our ticket in
place through the transaction commit, so any pinned bytes will go to our
pending evictions first.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2019-09-09 14:59:11 +02:00
..
tests Btrfs: make test_find_first_clear_extent_bit fail on incorrect results 2019-09-09 14:59:05 +02:00
acl.c
async-thread.c btrfs: async-thread: convert defines to enums 2019-09-09 14:59:03 +02:00
async-thread.h
backref.c Btrfs: fix deadlock between fiemap and transaction commits 2019-07-30 18:25:12 +02:00
backref.h
block-group.c btrfs: unexport the temporary exported functions 2019-09-09 14:59:10 +02:00
block-group.h btrfs: unexport the temporary exported functions 2019-09-09 14:59:10 +02:00
block-rsv.c btrfs: migrate the global_block_rsv helpers to block-rsv.c 2019-07-02 12:30:55 +02:00
block-rsv.h btrfs: migrate the global_block_rsv helpers to block-rsv.c 2019-07-02 12:30:55 +02:00
btrfs_inode.h
check-integrity.c btrfs: reduce stack usage for btrfsic_process_written_block 2019-09-09 14:58:58 +02:00
check-integrity.h
compression.c btrfs: lift bio_set_dev from bio allocation helpers 2019-07-02 12:30:51 +02:00
compression.h
ctree.c btrfs: make caching_thread use btrfs_find_next_key 2019-09-09 14:59:05 +02:00
ctree.h btrfs: introduce an evict flushing state 2019-09-09 14:59:11 +02:00
delalloc-space.c btrfs: migrate the chunk allocation code 2019-09-09 14:59:09 +02:00
delalloc-space.h btrfs: migrate the delalloc space stuff to it's own home 2019-07-04 17:26:17 +02:00
delayed-inode.c btrfs: delayed-inode: Kill the BUG_ON() in btrfs_delete_delayed_dir_index() 2019-09-09 14:59:01 +02:00
delayed-inode.h
delayed-ref.c btrfs: migrate the delayed refs rsv code 2019-07-04 17:26:17 +02:00
delayed-ref.h btrfs: migrate the delayed refs rsv code 2019-07-04 17:26:17 +02:00
dev-replace.c
dev-replace.h
dir-item.c
disk-io.c btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
disk-io.h
export.c
export.h
extent-tree.c btrfs: migrate the block group cleanup code 2019-09-09 14:59:10 +02:00
extent_io.c btrfs: Remove delalloc_end argument from extent_clear_unlock_delalloc 2019-09-09 14:58:59 +02:00
extent_io.h btrfs: Remove delalloc_end argument from extent_clear_unlock_delalloc 2019-09-09 14:58:59 +02:00
extent_map.c btrfs: assert extent map tree lock in add_extent_mapping 2019-09-09 14:59:00 +02:00
extent_map.h
file-item.c
file.c btrfs: Remove leftover of in-band dedupe 2019-09-09 14:58:59 +02:00
free-space-cache.c btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
free-space-cache.h btrfs: move btrfs_add_free_space out of a header file 2019-09-09 14:59:03 +02:00
free-space-tree.c btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
free-space-tree.h btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
inode-item.c
inode-map.c Btrfs: wake up inode cache waiters sooner to reduce waiting time 2019-09-09 14:59:02 +02:00
inode-map.h
inode.c btrfs: introduce an evict flushing state 2019-09-09 14:59:11 +02:00
ioctl.c btrfs: sysfs: replace direct access to feature set names with a helper 2019-09-09 14:59:07 +02:00
Kconfig btrfs: Fix build error while LIBCRC32C is module 2019-07-17 17:03:30 +02:00
locking.c btrfs: Remove unused locking functions 2019-09-09 14:58:59 +02:00
locking.h btrfs: Remove unused locking functions 2019-09-09 14:58:59 +02:00
lzo.c
Makefile btrfs: migrate the block group lookup code 2019-09-09 14:59:04 +02:00
math.h
ordered-data.c btrfs: fix extent_state leak in btrfs_lock_and_flush_ordered_range 2019-07-26 12:21:22 +02:00
ordered-data.h
orphan.c
print-tree.c
print-tree.h
props.c
props.h
qgroup.c btrfs: qgroup: Try our best to delete qgroup relations 2019-09-09 14:59:06 +02:00
qgroup.h
raid56.c
raid56.h
rcu-string.h
reada.c btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
ref-verify.c
ref-verify.h
relocation.c btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
root-tree.c btrfs: move the subvolume reservation stuff out of extent-tree.c 2019-07-04 17:26:18 +02:00
scrub.c btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
send.c Btrfs: fix incremental send failure after deduplication 2019-07-30 18:25:11 +02:00
send.h
space-info.c btrfs: introduce an evict flushing state 2019-09-09 14:59:11 +02:00
space-info.h btrfs: unexport can_overcommit 2019-07-02 12:30:53 +02:00
struct-funcs.c
super.c btrfs: move sysfs declarations out of ctree.h 2019-09-09 14:59:06 +02:00
sysfs.c btrfs: sysfs: move helper macros to sysfs.c 2019-09-09 14:59:08 +02:00
sysfs.h btrfs: sysfs: move helper macros to sysfs.c 2019-09-09 14:59:08 +02:00
transaction.c btrfs: move basic block_group definitions to their own header 2019-09-09 14:59:03 +02:00
transaction.h Btrfs: fix deadlock between fiemap and transaction commits 2019-07-30 18:25:12 +02:00
tree-checker.c btrfs: tree-checker: Add ROOT_ITEM check 2019-09-09 14:59:01 +02:00
tree-checker.h
tree-defrag.c
tree-log.c btrfs: tree-log: use symbolic name for first replay stage 2019-09-09 14:59:03 +02:00
tree-log.h
ulist.c
ulist.h
uuid-tree.c
volumes.c btrfs: factor out sysfs code for updating sprout fsid 2019-09-09 14:59:07 +02:00
volumes.h btrfs: reset device stat using btrfs_dev_stat_set 2019-09-09 14:59:06 +02:00
xattr.c
xattr.h
zlib.c
zstd.c