linux/fs/btrfs
Josef Bacik b150a4f10d Btrfs: use a percpu to keep track of possibly pinned bytes
There are all of these checks in the ENOSPC code to see if committing the
transaction would free up enough space to make the allocation.  This is because
early on we just committed the transaction and hoped and prayed, which resulted
in cases where it took _forever_ to get an ENOSPC when we really were out of
space.  So we check space_info->bytes_pinned, except this isn't completely true
because it doesn't account for space we may free but are stuck in delayed refs.
So tests like xfstests 226 would fail because we wouldn't commit the transaction
to free up the data space.  So instead add a percpu counter that will be a
little fuzzier, it will add bytes as soon as we try to free up the space, and
remove any space it doesn't actually free up when we get around to doing the
actual free.  We then 0 out this counter every transaction period so we have a
better idea of how much space we will actually free up by committing this
transaction.  With this patch we now pass xfstests 226.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
2013-07-02 11:50:42 -04:00
..
acl.c Btrfs: skip adding an acl attribute if we don't have to 2012-12-16 20:46:15 -05:00
async-thread.c Btrfs: call the ordered free operation without any locks held 2012-07-25 16:15:07 -04:00
async-thread.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
backref.c Btrfs: cleanup backref search commit root flag stuff 2013-07-01 08:52:29 -04:00
backref.h Btrfs: cleanup backref search commit root flag stuff 2013-07-01 08:52:29 -04:00
btrfs_inode.h btrfs: fix minor typo in comment 2013-05-06 15:54:49 -04:00
check-integrity.c Btrfs: use a btrfs bioset instead of abusing bio internals 2013-05-17 21:52:52 -04:00
check-integrity.h Btrfs: add optional integrity check code 2011-12-21 19:14:09 +01:00
compat.h
compression.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
compression.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
ctree.c Btrfs: optimize reada_for_balance 2013-07-01 08:52:32 -04:00
ctree.h Btrfs: use a percpu to keep track of possibly pinned bytes 2013-07-02 11:50:42 -04:00
delayed-inode.c Btrfs: delete unused function 2013-06-14 11:29:28 -04:00
delayed-inode.h Btrfs: improve the delayed inode throttling 2013-03-07 07:52:40 -05:00
delayed-ref.c Btrfs: separate sequence numbers for delayed ref tracking and tree mod log 2013-05-06 15:55:17 -04:00
delayed-ref.h Btrfs: handle running extent ops with skinny metadata 2013-05-17 21:40:15 -04:00
dev-replace.c Btrfs: introduce per-subvolume ordered extent list 2013-06-14 11:29:41 -04:00
dev-replace.h Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dir-item.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
disk-io.c Btrfs: do not pin while under spin lock 2013-06-14 11:30:13 -04:00
disk-io.h Btrfs: introduce grab/put functions for the root of the fs/file tree 2013-06-14 11:29:38 -04:00
export.c Btrfs: cleanup: don't check the same thing twice 2013-06-14 11:29:30 -04:00
export.h
extent_io.c Btrfs: move btrfs_truncate_page to btrfs_cont_expand instead of btrfs_truncate 2013-07-01 08:52:33 -04:00
extent_io.h Btrfs: use a btrfs bioset instead of abusing bio internals 2013-05-17 21:52:52 -04:00
extent_map.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
extent_map.h Btrfs: fix bad extent logging 2013-05-06 15:54:34 -04:00
extent-tree.c Btrfs: use a percpu to keep track of possibly pinned bytes 2013-07-02 11:50:42 -04:00
file-item.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
file.c Btrfs: move btrfs_truncate_page to btrfs_cont_expand instead of btrfs_truncate 2013-07-01 08:52:33 -04:00
free-space-cache.c Btrfs: return error code in btrfs_check_trunc_cache_free_space() 2013-06-14 11:29:56 -04:00
free-space-cache.h btrfs: move ifdef around sanity checks out of init_btrfs_fs 2013-06-14 11:29:18 -04:00
hash.h btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-item.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
inode-map.c Btrfs: don't use global block reservation for inode cache truncation 2013-05-17 21:40:22 -04:00
inode-map.h Btrfs: Support reading/writing on disk free ino cache 2011-04-25 16:46:11 +08:00
inode.c Btrfs: check for actual acls rather than just xattrs when caching no acl 2013-07-02 11:50:40 -04:00
ioctl.c Btrfs: allow file data clone within a file 2013-06-14 11:30:03 -04:00
Kconfig btrfs: move leak debug code to functions 2013-05-06 15:55:16 -04:00
locking.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
locking.h Btrfs: remove btrfs_try_spin_lock 2013-03-14 14:57:10 -04:00
lzo.c btrfs: fix the code comments for LZO compression workspace 2013-07-01 08:52:26 -04:00
Makefile Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
math.h Btrfs: cleanup duplicated division functions 2012-12-11 13:31:30 -05:00
ordered-data.c Btrfs: introduce per-subvolume ordered extent list 2013-06-14 11:29:41 -04:00
ordered-data.h Btrfs: introduce per-subvolume ordered extent list 2013-06-14 11:29:41 -04:00
orphan.c btrfs: replace many BUG_ONs with proper error handling 2012-03-22 11:52:54 +01:00
print-tree.c Btrfs: Include the device in most error printk()s 2013-05-06 15:54:23 -04:00
print-tree.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
qgroup.c Btrfs: fix qgroup rescan resume on mount 2013-06-14 11:30:10 -04:00
raid56.c Btrfs: use a btrfs bioset instead of abusing bio internals 2013-05-17 21:52:52 -04:00
raid56.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
rcu-string.h Btrfs: use rcu to protect device->name 2012-06-14 21:29:16 -04:00
reada.c Btrfs: fix reada debug code compilation 2013-05-06 15:54:55 -04:00
relocation.c Btrfs: fix not being able to find skinny extents during relocate 2013-07-01 08:52:30 -04:00
root-tree.c Btrfs: remove unused code in btrfs_del_root 2013-06-14 11:30:02 -04:00
scrub.c Btrfs: free csums when we're done scrubbing an extent 2013-07-01 08:52:28 -04:00
send.c Btrfs: Cocci spatch "memdup.spatch" 2013-06-14 11:30:12 -04:00
send.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
struct-funcs.c Btrfs: rewrite BTRFS_SETGET_FUNCS 2012-07-23 16:28:06 -04:00
super.c Btrfs: stop waiting on current trans if we aborted 2013-07-01 08:52:27 -04:00
sysfs.c btrfs: fixup/remove module.h usage as required 2013-03-01 15:01:01 -05:00
transaction.c Btrfs: fix the comment typo for btrfs_attach_transaction_barrier 2013-07-01 08:52:30 -04:00
transaction.h Btrfs: make the state of the transaction more readable 2013-06-14 11:29:51 -04:00
tree-defrag.c btrfs: remove cache only arguments from defrag path 2013-02-20 12:59:36 -05:00
tree-log.c Btrfs: exclude logged extents before replying when we are mixed 2013-06-14 11:30:17 -04:00
tree-log.h btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
ulist.c Btrfs: add a rb_tree to improve performance of ulist search 2013-05-06 15:54:44 -04:00
ulist.h Btrfs: add a rb_tree to improve performance of ulist search 2013-05-06 15:54:44 -04:00
volumes.c Btrfs: Cocci spatch "ptr_ret.spatch" 2013-06-14 11:30:11 -04:00
volumes.h Btrfs: cleanup the similar code of the fs root read 2013-06-14 11:29:37 -04:00
xattr.c btrfs: make static code static & remove dead code 2013-05-06 15:55:23 -04:00
xattr.h
zlib.c btrfs: fix message printing 2012-10-09 09:19:57 -04:00