diff options
Diffstat (limited to 'fs/btrfs/inode-map.c')
-rw-r--r-- | fs/btrfs/inode-map.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/fs/btrfs/inode-map.c b/fs/btrfs/inode-map.c index ab485e57b6fe..cc8ca193d830 100644 --- a/fs/btrfs/inode-map.c +++ b/fs/btrfs/inode-map.c | |||
@@ -55,7 +55,7 @@ static int caching_kthread(void *data) | |||
55 | key.type = BTRFS_INODE_ITEM_KEY; | 55 | key.type = BTRFS_INODE_ITEM_KEY; |
56 | again: | 56 | again: |
57 | /* need to make sure the commit_root doesn't disappear */ | 57 | /* need to make sure the commit_root doesn't disappear */ |
58 | mutex_lock(&root->fs_commit_mutex); | 58 | down_read(&fs_info->commit_root_sem); |
59 | 59 | ||
60 | ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); | 60 | ret = btrfs_search_slot(NULL, root, &key, path, 0, 0); |
61 | if (ret < 0) | 61 | if (ret < 0) |
@@ -88,7 +88,7 @@ again: | |||
88 | btrfs_item_key_to_cpu(leaf, &key, 0); | 88 | btrfs_item_key_to_cpu(leaf, &key, 0); |
89 | btrfs_release_path(path); | 89 | btrfs_release_path(path); |
90 | root->cache_progress = last; | 90 | root->cache_progress = last; |
91 | mutex_unlock(&root->fs_commit_mutex); | 91 | up_read(&fs_info->commit_root_sem); |
92 | schedule_timeout(1); | 92 | schedule_timeout(1); |
93 | goto again; | 93 | goto again; |
94 | } else | 94 | } else |
@@ -127,7 +127,7 @@ next: | |||
127 | btrfs_unpin_free_ino(root); | 127 | btrfs_unpin_free_ino(root); |
128 | out: | 128 | out: |
129 | wake_up(&root->cache_wait); | 129 | wake_up(&root->cache_wait); |
130 | mutex_unlock(&root->fs_commit_mutex); | 130 | up_read(&fs_info->commit_root_sem); |
131 | 131 | ||
132 | btrfs_free_path(path); | 132 | btrfs_free_path(path); |
133 | 133 | ||
@@ -223,11 +223,11 @@ again: | |||
223 | * or the caching work is done. | 223 | * or the caching work is done. |
224 | */ | 224 | */ |
225 | 225 | ||
226 | mutex_lock(&root->fs_commit_mutex); | 226 | down_write(&root->fs_info->commit_root_sem); |
227 | spin_lock(&root->cache_lock); | 227 | spin_lock(&root->cache_lock); |
228 | if (root->cached == BTRFS_CACHE_FINISHED) { | 228 | if (root->cached == BTRFS_CACHE_FINISHED) { |
229 | spin_unlock(&root->cache_lock); | 229 | spin_unlock(&root->cache_lock); |
230 | mutex_unlock(&root->fs_commit_mutex); | 230 | up_write(&root->fs_info->commit_root_sem); |
231 | goto again; | 231 | goto again; |
232 | } | 232 | } |
233 | spin_unlock(&root->cache_lock); | 233 | spin_unlock(&root->cache_lock); |
@@ -240,7 +240,7 @@ again: | |||
240 | else | 240 | else |
241 | __btrfs_add_free_space(pinned, objectid, 1); | 241 | __btrfs_add_free_space(pinned, objectid, 1); |
242 | 242 | ||
243 | mutex_unlock(&root->fs_commit_mutex); | 243 | up_write(&root->fs_info->commit_root_sem); |
244 | } | 244 | } |
245 | } | 245 | } |
246 | 246 | ||
@@ -250,7 +250,7 @@ again: | |||
250 | * and others will just be dropped, because the commit root we were | 250 | * and others will just be dropped, because the commit root we were |
251 | * searching has changed. | 251 | * searching has changed. |
252 | * | 252 | * |
253 | * Must be called with root->fs_commit_mutex held | 253 | * Must be called with root->fs_info->commit_root_sem held |
254 | */ | 254 | */ |
255 | void btrfs_unpin_free_ino(struct btrfs_root *root) | 255 | void btrfs_unpin_free_ino(struct btrfs_root *root) |
256 | { | 256 | { |