aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/ctree.h6
-rw-r--r--fs/btrfs/extent-tree.c57
-rw-r--r--fs/btrfs/free-space-cache.c131
-rw-r--r--fs/btrfs/free-space-cache.h8
4 files changed, 170 insertions, 32 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index e305ccd731fe..1df0d9db5332 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -1261,9 +1261,12 @@ struct btrfs_io_ctl {
1261 struct page *page; 1261 struct page *page;
1262 struct page **pages; 1262 struct page **pages;
1263 struct btrfs_root *root; 1263 struct btrfs_root *root;
1264 struct inode *inode;
1264 unsigned long size; 1265 unsigned long size;
1265 int index; 1266 int index;
1266 int num_pages; 1267 int num_pages;
1268 int entries;
1269 int bitmaps;
1267 unsigned check_crcs:1; 1270 unsigned check_crcs:1;
1268}; 1271};
1269 1272
@@ -1332,6 +1335,9 @@ struct btrfs_block_group_cache {
1332 1335
1333 /* For dirty block groups */ 1336 /* For dirty block groups */
1334 struct list_head dirty_list; 1337 struct list_head dirty_list;
1338 struct list_head io_list;
1339
1340 struct btrfs_io_ctl io_ctl;
1335}; 1341};
1336 1342
1337/* delayed seq elem */ 1343/* delayed seq elem */
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 3d4b3d680fea..40c95135d037 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -3388,7 +3388,11 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans,
3388 struct btrfs_block_group_cache *cache; 3388 struct btrfs_block_group_cache *cache;
3389 struct btrfs_transaction *cur_trans = trans->transaction; 3389 struct btrfs_transaction *cur_trans = trans->transaction;
3390 int ret = 0; 3390 int ret = 0;
3391 int should_put;
3391 struct btrfs_path *path; 3392 struct btrfs_path *path;
3393 LIST_HEAD(io);
3394 int num_started = 0;
3395 int num_waited = 0;
3392 3396
3393 if (list_empty(&cur_trans->dirty_bgs)) 3397 if (list_empty(&cur_trans->dirty_bgs))
3394 return 0; 3398 return 0;
@@ -3407,16 +3411,60 @@ int btrfs_write_dirty_block_groups(struct btrfs_trans_handle *trans,
3407 cache = list_first_entry(&cur_trans->dirty_bgs, 3411 cache = list_first_entry(&cur_trans->dirty_bgs,
3408 struct btrfs_block_group_cache, 3412 struct btrfs_block_group_cache,
3409 dirty_list); 3413 dirty_list);
3414
3415 /*
3416 * this can happen if cache_save_setup re-dirties a block
3417 * group that is already under IO. Just wait for it to
3418 * finish and then do it all again
3419 */
3420 if (!list_empty(&cache->io_list)) {
3421 list_del_init(&cache->io_list);
3422 btrfs_wait_cache_io(root, trans, cache,
3423 &cache->io_ctl, path,
3424 cache->key.objectid);
3425 btrfs_put_block_group(cache);
3426 num_waited++;
3427 }
3428
3410 list_del_init(&cache->dirty_list); 3429 list_del_init(&cache->dirty_list);
3430 should_put = 1;
3431
3411 if (cache->disk_cache_state == BTRFS_DC_CLEAR) 3432 if (cache->disk_cache_state == BTRFS_DC_CLEAR)
3412 cache_save_setup(cache, trans, path); 3433 cache_save_setup(cache, trans, path);
3434
3413 if (!ret) 3435 if (!ret)
3414 ret = btrfs_run_delayed_refs(trans, root, 3436 ret = btrfs_run_delayed_refs(trans, root, (unsigned long) -1);
3415 (unsigned long) -1); 3437
3416 if (!ret && cache->disk_cache_state == BTRFS_DC_SETUP) 3438 if (!ret && cache->disk_cache_state == BTRFS_DC_SETUP) {
3417 btrfs_write_out_cache(root, trans, cache, path); 3439 cache->io_ctl.inode = NULL;
3440 ret = btrfs_write_out_cache(root, trans, cache, path);
3441 if (ret == 0 && cache->io_ctl.inode) {
3442 num_started++;
3443 should_put = 0;
3444 list_add_tail(&cache->io_list, &io);
3445 } else {
3446 /*
3447 * if we failed to write the cache, the
3448 * generation will be bad and life goes on
3449 */
3450 ret = 0;
3451 }
3452 }
3418 if (!ret) 3453 if (!ret)
3419 ret = write_one_cache_group(trans, root, path, cache); 3454 ret = write_one_cache_group(trans, root, path, cache);
3455
3456 /* if its not on the io list, we need to put the block group */
3457 if (should_put)
3458 btrfs_put_block_group(cache);
3459 }
3460
3461 while (!list_empty(&io)) {
3462 cache = list_first_entry(&io, struct btrfs_block_group_cache,
3463 io_list);
3464 list_del_init(&cache->io_list);
3465 num_waited++;
3466 btrfs_wait_cache_io(root, trans, cache,
3467 &cache->io_ctl, path, cache->key.objectid);
3420 btrfs_put_block_group(cache); 3468 btrfs_put_block_group(cache);
3421 } 3469 }
3422 3470
@@ -9013,6 +9061,7 @@ btrfs_create_block_group_cache(struct btrfs_root *root, u64 start, u64 size)
9013 INIT_LIST_HEAD(&cache->bg_list); 9061 INIT_LIST_HEAD(&cache->bg_list);
9014 INIT_LIST_HEAD(&cache->ro_list); 9062 INIT_LIST_HEAD(&cache->ro_list);
9015 INIT_LIST_HEAD(&cache->dirty_list); 9063 INIT_LIST_HEAD(&cache->dirty_list);
9064 INIT_LIST_HEAD(&cache->io_list);
9016 btrfs_init_free_space_ctl(cache); 9065 btrfs_init_free_space_ctl(cache);
9017 atomic_set(&cache->trimming, 0); 9066 atomic_set(&cache->trimming, 0);
9018 9067
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c
index 47c2adb3ddf3..6886ae063483 100644
--- a/fs/btrfs/free-space-cache.c
+++ b/fs/btrfs/free-space-cache.c
@@ -170,13 +170,13 @@ static int __create_free_space_inode(struct btrfs_root *root,
170 key.objectid = BTRFS_FREE_SPACE_OBJECTID; 170 key.objectid = BTRFS_FREE_SPACE_OBJECTID;
171 key.offset = offset; 171 key.offset = offset;
172 key.type = 0; 172 key.type = 0;
173
174 ret = btrfs_insert_empty_item(trans, root, path, &key, 173 ret = btrfs_insert_empty_item(trans, root, path, &key,
175 sizeof(struct btrfs_free_space_header)); 174 sizeof(struct btrfs_free_space_header));
176 if (ret < 0) { 175 if (ret < 0) {
177 btrfs_release_path(path); 176 btrfs_release_path(path);
178 return ret; 177 return ret;
179 } 178 }
179
180 leaf = path->nodes[0]; 180 leaf = path->nodes[0];
181 header = btrfs_item_ptr(leaf, path->slots[0], 181 header = btrfs_item_ptr(leaf, path->slots[0],
182 struct btrfs_free_space_header); 182 struct btrfs_free_space_header);
@@ -296,6 +296,7 @@ static int io_ctl_init(struct btrfs_io_ctl *io_ctl, struct inode *inode,
296 io_ctl->num_pages = num_pages; 296 io_ctl->num_pages = num_pages;
297 io_ctl->root = root; 297 io_ctl->root = root;
298 io_ctl->check_crcs = check_crcs; 298 io_ctl->check_crcs = check_crcs;
299 io_ctl->inode = inode;
299 300
300 return 0; 301 return 0;
301} 302}
@@ -303,6 +304,7 @@ static int io_ctl_init(struct btrfs_io_ctl *io_ctl, struct inode *inode,
303static void io_ctl_free(struct btrfs_io_ctl *io_ctl) 304static void io_ctl_free(struct btrfs_io_ctl *io_ctl)
304{ 305{
305 kfree(io_ctl->pages); 306 kfree(io_ctl->pages);
307 io_ctl->pages = NULL;
306} 308}
307 309
308static void io_ctl_unmap_page(struct btrfs_io_ctl *io_ctl) 310static void io_ctl_unmap_page(struct btrfs_io_ctl *io_ctl)
@@ -1092,6 +1094,61 @@ cleanup_write_cache_enospc(struct inode *inode,
1092 GFP_NOFS); 1094 GFP_NOFS);
1093} 1095}
1094 1096
1097int btrfs_wait_cache_io(struct btrfs_root *root,
1098 struct btrfs_trans_handle *trans,
1099 struct btrfs_block_group_cache *block_group,
1100 struct btrfs_io_ctl *io_ctl,
1101 struct btrfs_path *path, u64 offset)
1102{
1103 int ret;
1104 struct inode *inode = io_ctl->inode;
1105
1106 root = root->fs_info->tree_root;
1107
1108 /* Flush the dirty pages in the cache file. */
1109 ret = flush_dirty_cache(inode);
1110 if (ret)
1111 goto out;
1112
1113 /* Update the cache item to tell everyone this cache file is valid. */
1114 ret = update_cache_item(trans, root, inode, path, offset,
1115 io_ctl->entries, io_ctl->bitmaps);
1116out:
1117 io_ctl_free(io_ctl);
1118 if (ret) {
1119 invalidate_inode_pages2(inode->i_mapping);
1120 BTRFS_I(inode)->generation = 0;
1121 if (block_group) {
1122#ifdef DEBUG
1123 btrfs_err(root->fs_info,
1124 "failed to write free space cache for block group %llu",
1125 block_group->key.objectid);
1126#endif
1127 }
1128 }
1129 btrfs_update_inode(trans, root, inode);
1130
1131 if (block_group) {
1132 spin_lock(&block_group->lock);
1133
1134 /*
1135 * only mark this as written if we didn't get put back on
1136 * the dirty list while waiting for IO.
1137 */
1138 if (!ret && list_empty(&block_group->dirty_list))
1139 block_group->disk_cache_state = BTRFS_DC_WRITTEN;
1140 else if (ret)
1141 block_group->disk_cache_state = BTRFS_DC_ERROR;
1142
1143 spin_unlock(&block_group->lock);
1144 io_ctl->inode = NULL;
1145 iput(inode);
1146 }
1147
1148 return ret;
1149
1150}
1151
1095/** 1152/**
1096 * __btrfs_write_out_cache - write out cached info to an inode 1153 * __btrfs_write_out_cache - write out cached info to an inode
1097 * @root - the root the inode belongs to 1154 * @root - the root the inode belongs to
@@ -1108,20 +1165,22 @@ cleanup_write_cache_enospc(struct inode *inode,
1108static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode, 1165static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
1109 struct btrfs_free_space_ctl *ctl, 1166 struct btrfs_free_space_ctl *ctl,
1110 struct btrfs_block_group_cache *block_group, 1167 struct btrfs_block_group_cache *block_group,
1168 struct btrfs_io_ctl *io_ctl,
1111 struct btrfs_trans_handle *trans, 1169 struct btrfs_trans_handle *trans,
1112 struct btrfs_path *path, u64 offset) 1170 struct btrfs_path *path, u64 offset)
1113{ 1171{
1114 struct extent_state *cached_state = NULL; 1172 struct extent_state *cached_state = NULL;
1115 struct btrfs_io_ctl io_ctl;
1116 LIST_HEAD(bitmap_list); 1173 LIST_HEAD(bitmap_list);
1117 int entries = 0; 1174 int entries = 0;
1118 int bitmaps = 0; 1175 int bitmaps = 0;
1119 int ret; 1176 int ret;
1177 int must_iput = 0;
1120 1178
1121 if (!i_size_read(inode)) 1179 if (!i_size_read(inode))
1122 return -1; 1180 return -1;
1123 1181
1124 ret = io_ctl_init(&io_ctl, inode, root, 1); 1182 WARN_ON(io_ctl->pages);
1183 ret = io_ctl_init(io_ctl, inode, root, 1);
1125 if (ret) 1184 if (ret)
1126 return -1; 1185 return -1;
1127 1186
@@ -1134,22 +1193,23 @@ static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
1134 up_write(&block_group->data_rwsem); 1193 up_write(&block_group->data_rwsem);
1135 BTRFS_I(inode)->generation = 0; 1194 BTRFS_I(inode)->generation = 0;
1136 ret = 0; 1195 ret = 0;
1196 must_iput = 1;
1137 goto out; 1197 goto out;
1138 } 1198 }
1139 spin_unlock(&block_group->lock); 1199 spin_unlock(&block_group->lock);
1140 } 1200 }
1141 1201
1142 /* Lock all pages first so we can lock the extent safely. */ 1202 /* Lock all pages first so we can lock the extent safely. */
1143 io_ctl_prepare_pages(&io_ctl, inode, 0); 1203 io_ctl_prepare_pages(io_ctl, inode, 0);
1144 1204
1145 lock_extent_bits(&BTRFS_I(inode)->io_tree, 0, i_size_read(inode) - 1, 1205 lock_extent_bits(&BTRFS_I(inode)->io_tree, 0, i_size_read(inode) - 1,
1146 0, &cached_state); 1206 0, &cached_state);
1147 1207
1148 io_ctl_set_generation(&io_ctl, trans->transid); 1208 io_ctl_set_generation(io_ctl, trans->transid);
1149 1209
1150 mutex_lock(&ctl->cache_writeout_mutex); 1210 mutex_lock(&ctl->cache_writeout_mutex);
1151 /* Write out the extent entries in the free space cache */ 1211 /* Write out the extent entries in the free space cache */
1152 ret = write_cache_extent_entries(&io_ctl, ctl, 1212 ret = write_cache_extent_entries(io_ctl, ctl,
1153 block_group, &entries, &bitmaps, 1213 block_group, &entries, &bitmaps,
1154 &bitmap_list); 1214 &bitmap_list);
1155 if (ret) { 1215 if (ret) {
@@ -1162,7 +1222,7 @@ static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
1162 * they will be added into free space cache after the transaction is 1222 * they will be added into free space cache after the transaction is
1163 * committed, we shouldn't lose them. 1223 * committed, we shouldn't lose them.
1164 */ 1224 */
1165 ret = write_pinned_extent_entries(root, block_group, &io_ctl, &entries); 1225 ret = write_pinned_extent_entries(root, block_group, io_ctl, &entries);
1166 if (ret) { 1226 if (ret) {
1167 mutex_unlock(&ctl->cache_writeout_mutex); 1227 mutex_unlock(&ctl->cache_writeout_mutex);
1168 goto out_nospc; 1228 goto out_nospc;
@@ -1173,16 +1233,16 @@ static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
1173 * locked while doing it because a concurrent trim can be manipulating 1233 * locked while doing it because a concurrent trim can be manipulating
1174 * or freeing the bitmap. 1234 * or freeing the bitmap.
1175 */ 1235 */
1176 ret = write_bitmap_entries(&io_ctl, &bitmap_list); 1236 ret = write_bitmap_entries(io_ctl, &bitmap_list);
1177 mutex_unlock(&ctl->cache_writeout_mutex); 1237 mutex_unlock(&ctl->cache_writeout_mutex);
1178 if (ret) 1238 if (ret)
1179 goto out_nospc; 1239 goto out_nospc;
1180 1240
1181 /* Zero out the rest of the pages just to make sure */ 1241 /* Zero out the rest of the pages just to make sure */
1182 io_ctl_zero_remaining_pages(&io_ctl); 1242 io_ctl_zero_remaining_pages(io_ctl);
1183 1243
1184 /* Everything is written out, now we dirty the pages in the file. */ 1244 /* Everything is written out, now we dirty the pages in the file. */
1185 ret = btrfs_dirty_pages(root, inode, io_ctl.pages, io_ctl.num_pages, 1245 ret = btrfs_dirty_pages(root, inode, io_ctl->pages, io_ctl->num_pages,
1186 0, i_size_read(inode), &cached_state); 1246 0, i_size_read(inode), &cached_state);
1187 if (ret) 1247 if (ret)
1188 goto out_nospc; 1248 goto out_nospc;
@@ -1193,30 +1253,39 @@ static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode,
1193 * Release the pages and unlock the extent, we will flush 1253 * Release the pages and unlock the extent, we will flush
1194 * them out later 1254 * them out later
1195 */ 1255 */
1196 io_ctl_drop_pages(&io_ctl); 1256 io_ctl_drop_pages(io_ctl);
1197 1257
1198 unlock_extent_cached(&BTRFS_I(inode)->io_tree, 0, 1258 unlock_extent_cached(&BTRFS_I(inode)->io_tree, 0,
1199 i_size_read(inode) - 1, &cached_state, GFP_NOFS); 1259 i_size_read(inode) - 1, &cached_state, GFP_NOFS);
1200 1260
1201 /* Flush the dirty pages in the cache file. */ 1261 /*
1202 ret = flush_dirty_cache(inode); 1262 * at this point the pages are under IO and we're happy,
1263 * The caller is responsible for waiting on them and updating the
1264 * the cache and the inode
1265 */
1266 io_ctl->entries = entries;
1267 io_ctl->bitmaps = bitmaps;
1268
1269 ret = btrfs_fdatawrite_range(inode, 0, (u64)-1);
1203 if (ret) 1270 if (ret)
1204 goto out; 1271 goto out;
1205 1272
1206 /* Update the cache item to tell everyone this cache file is valid. */ 1273 return 0;
1207 ret = update_cache_item(trans, root, inode, path, offset, 1274
1208 entries, bitmaps);
1209out: 1275out:
1210 io_ctl_free(&io_ctl); 1276 io_ctl->inode = NULL;
1277 io_ctl_free(io_ctl);
1211 if (ret) { 1278 if (ret) {
1212 invalidate_inode_pages2(inode->i_mapping); 1279 invalidate_inode_pages2(inode->i_mapping);
1213 BTRFS_I(inode)->generation = 0; 1280 BTRFS_I(inode)->generation = 0;
1214 } 1281 }
1215 btrfs_update_inode(trans, root, inode); 1282 btrfs_update_inode(trans, root, inode);
1283 if (must_iput)
1284 iput(inode);
1216 return ret; 1285 return ret;
1217 1286
1218out_nospc: 1287out_nospc:
1219 cleanup_write_cache_enospc(inode, &io_ctl, &cached_state, &bitmap_list); 1288 cleanup_write_cache_enospc(inode, io_ctl, &cached_state, &bitmap_list);
1220 1289
1221 if (block_group && (block_group->flags & BTRFS_BLOCK_GROUP_DATA)) 1290 if (block_group && (block_group->flags & BTRFS_BLOCK_GROUP_DATA))
1222 up_write(&block_group->data_rwsem); 1291 up_write(&block_group->data_rwsem);
@@ -1232,7 +1301,6 @@ int btrfs_write_out_cache(struct btrfs_root *root,
1232 struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; 1301 struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
1233 struct inode *inode; 1302 struct inode *inode;
1234 int ret = 0; 1303 int ret = 0;
1235 enum btrfs_disk_cache_state dcs = BTRFS_DC_WRITTEN;
1236 1304
1237 root = root->fs_info->tree_root; 1305 root = root->fs_info->tree_root;
1238 1306
@@ -1253,22 +1321,28 @@ int btrfs_write_out_cache(struct btrfs_root *root,
1253 if (IS_ERR(inode)) 1321 if (IS_ERR(inode))
1254 return 0; 1322 return 0;
1255 1323
1256 ret = __btrfs_write_out_cache(root, inode, ctl, block_group, trans, 1324 ret = __btrfs_write_out_cache(root, inode, ctl, block_group,
1325 &block_group->io_ctl, trans,
1257 path, block_group->key.objectid); 1326 path, block_group->key.objectid);
1258 if (ret) { 1327 if (ret) {
1259 dcs = BTRFS_DC_ERROR;
1260 ret = 0;
1261#ifdef DEBUG 1328#ifdef DEBUG
1262 btrfs_err(root->fs_info, 1329 btrfs_err(root->fs_info,
1263 "failed to write free space cache for block group %llu", 1330 "failed to write free space cache for block group %llu",
1264 block_group->key.objectid); 1331 block_group->key.objectid);
1265#endif 1332#endif
1333 spin_lock(&block_group->lock);
1334 block_group->disk_cache_state = BTRFS_DC_ERROR;
1335 spin_unlock(&block_group->lock);
1336
1337 block_group->io_ctl.inode = NULL;
1338 iput(inode);
1266 } 1339 }
1267 1340
1268 spin_lock(&block_group->lock); 1341 /*
1269 block_group->disk_cache_state = dcs; 1342 * if ret == 0 the caller is expected to call btrfs_wait_cache_io
1270 spin_unlock(&block_group->lock); 1343 * to wait for IO and put the inode
1271 iput(inode); 1344 */
1345
1272 return ret; 1346 return ret;
1273} 1347}
1274 1348
@@ -3331,11 +3405,14 @@ int btrfs_write_out_ino_cache(struct btrfs_root *root,
3331{ 3405{
3332 struct btrfs_free_space_ctl *ctl = root->free_ino_ctl; 3406 struct btrfs_free_space_ctl *ctl = root->free_ino_ctl;
3333 int ret; 3407 int ret;
3408 struct btrfs_io_ctl io_ctl;
3334 3409
3335 if (!btrfs_test_opt(root, INODE_MAP_CACHE)) 3410 if (!btrfs_test_opt(root, INODE_MAP_CACHE))
3336 return 0; 3411 return 0;
3337 3412
3338 ret = __btrfs_write_out_cache(root, inode, ctl, NULL, trans, path, 0); 3413 ret = __btrfs_write_out_cache(root, inode, ctl, NULL, &io_ctl,
3414 trans, path, 0) ||
3415 btrfs_wait_cache_io(root, trans, NULL, &io_ctl, path, 0);
3339 if (ret) { 3416 if (ret) {
3340 btrfs_delalloc_release_metadata(inode, inode->i_size); 3417 btrfs_delalloc_release_metadata(inode, inode->i_size);
3341#ifdef DEBUG 3418#ifdef DEBUG
diff --git a/fs/btrfs/free-space-cache.h b/fs/btrfs/free-space-cache.h
index 88b2238a0aed..c4339863af05 100644
--- a/fs/btrfs/free-space-cache.h
+++ b/fs/btrfs/free-space-cache.h
@@ -48,6 +48,8 @@ struct btrfs_free_space_op {
48 struct btrfs_free_space *info); 48 struct btrfs_free_space *info);
49}; 49};
50 50
51struct btrfs_io_ctl;
52
51struct inode *lookup_free_space_inode(struct btrfs_root *root, 53struct inode *lookup_free_space_inode(struct btrfs_root *root,
52 struct btrfs_block_group_cache 54 struct btrfs_block_group_cache
53 *block_group, struct btrfs_path *path); 55 *block_group, struct btrfs_path *path);
@@ -63,11 +65,15 @@ int btrfs_truncate_free_space_cache(struct btrfs_root *root,
63 struct inode *inode); 65 struct inode *inode);
64int load_free_space_cache(struct btrfs_fs_info *fs_info, 66int load_free_space_cache(struct btrfs_fs_info *fs_info,
65 struct btrfs_block_group_cache *block_group); 67 struct btrfs_block_group_cache *block_group);
68int btrfs_wait_cache_io(struct btrfs_root *root,
69 struct btrfs_trans_handle *trans,
70 struct btrfs_block_group_cache *block_group,
71 struct btrfs_io_ctl *io_ctl,
72 struct btrfs_path *path, u64 offset);
66int btrfs_write_out_cache(struct btrfs_root *root, 73int btrfs_write_out_cache(struct btrfs_root *root,
67 struct btrfs_trans_handle *trans, 74 struct btrfs_trans_handle *trans,
68 struct btrfs_block_group_cache *block_group, 75 struct btrfs_block_group_cache *block_group,
69 struct btrfs_path *path); 76 struct btrfs_path *path);
70
71struct inode *lookup_free_ino_inode(struct btrfs_root *root, 77struct inode *lookup_free_ino_inode(struct btrfs_root *root,
72 struct btrfs_path *path); 78 struct btrfs_path *path);
73int create_free_ino_inode(struct btrfs_root *root, 79int create_free_ino_inode(struct btrfs_root *root,