Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 156509
b: refs/heads/master
c: 013f1b1
h: refs/heads/master
i:
  156507: 6e4d146
v: v3
  • Loading branch information
Chris Mason committed Jul 31, 2009
1 parent a8ebbda commit 9f46f38
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6606bb97e146a387932efee263745b7240a11193
refs/heads/master: 013f1b12f4fc479f697acae2f31bad220162cd03
21 changes: 17 additions & 4 deletions trunk/fs/btrfs/extent-tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -265,10 +265,6 @@ static int caching_kthread(void *data)

atomic_inc(&block_group->space_info->caching_threads);
last = max_t(u64, block_group->key.objectid, BTRFS_SUPER_INFO_OFFSET);
again:
/* need to make sure the commit_root doesn't disappear */
down_read(&fs_info->extent_commit_sem);

/*
* We don't want to deadlock with somebody trying to allocate a new
* extent for the extent root while also trying to search the extent
Expand All @@ -282,6 +278,10 @@ static int caching_kthread(void *data)
key.objectid = last;
key.offset = 0;
btrfs_set_key_type(&key, BTRFS_EXTENT_ITEM_KEY);
again:
/* need to make sure the commit_root doesn't disappear */
down_read(&fs_info->extent_commit_sem);

ret = btrfs_search_slot(NULL, fs_info->extent_root, &key, path, 0, 0);
if (ret < 0)
goto err;
Expand All @@ -304,6 +304,19 @@ static int caching_kthread(void *data)

if (need_resched() ||
btrfs_transaction_in_commit(fs_info)) {
leaf = path->nodes[0];

/* this shouldn't happen, but if the
* leaf is empty just move on.
*/
if (btrfs_header_nritems(leaf) == 0)
break;
/*
* we need to copy the key out so that
* we are sure the next search advances
* us forward in the btree.
*/
btrfs_item_key_to_cpu(leaf, &key, 0);
btrfs_release_path(fs_info->extent_root, path);
up_read(&fs_info->extent_commit_sem);
schedule_timeout(1);
Expand Down

0 comments on commit 9f46f38

Please sign in to comment.