hc
2023-12-06 08f87f769b595151be1afeff53e144f543faa614
kernel/fs/btrfs/inode-map.c
....@@ -11,6 +11,7 @@
1111 #include "free-space-cache.h"
1212 #include "inode-map.h"
1313 #include "transaction.h"
14
+#include "delalloc-space.h"
1415
1516 static void fail_caching_thread(struct btrfs_root *root)
1617 {
....@@ -106,7 +107,7 @@
106107
107108 if (last != (u64)-1 && last + 1 != key.objectid) {
108109 __btrfs_add_free_space(fs_info, ctl, last + 1,
109
- key.objectid - last - 1);
110
+ key.objectid - last - 1, 0);
110111 wake_up(&root->ino_cache_wait);
111112 }
112113
....@@ -117,7 +118,7 @@
117118
118119 if (last < root->highest_objectid - 1) {
119120 __btrfs_add_free_space(fs_info, ctl, last + 1,
120
- root->highest_objectid - last - 1);
121
+ root->highest_objectid - last - 1, 0);
121122 }
122123
123124 spin_lock(&root->ino_cache_lock);
....@@ -174,7 +175,9 @@
174175 ret = btrfs_find_free_objectid(root, &objectid);
175176 if (!ret && objectid <= BTRFS_LAST_FREE_OBJECTID) {
176177 __btrfs_add_free_space(fs_info, ctl, objectid,
177
- BTRFS_LAST_FREE_OBJECTID - objectid + 1);
178
+ BTRFS_LAST_FREE_OBJECTID - objectid + 1,
179
+ 0);
180
+ wake_up(&root->ino_cache_wait);
178181 }
179182
180183 tsk = kthread_run(caching_kthread, root, "btrfs-ino-cache-%llu",
....@@ -219,7 +222,7 @@
219222 return;
220223 again:
221224 if (root->ino_cache_state == BTRFS_CACHE_FINISHED) {
222
- __btrfs_add_free_space(fs_info, pinned, objectid, 1);
225
+ __btrfs_add_free_space(fs_info, pinned, objectid, 1, 0);
223226 } else {
224227 down_write(&fs_info->commit_root_sem);
225228 spin_lock(&root->ino_cache_lock);
....@@ -232,7 +235,7 @@
232235
233236 start_caching(root);
234237
235
- __btrfs_add_free_space(fs_info, pinned, objectid, 1);
238
+ __btrfs_add_free_space(fs_info, pinned, objectid, 1, 0);
236239
237240 up_write(&fs_info->commit_root_sem);
238241 }
....@@ -279,7 +282,7 @@
279282 spin_unlock(rbroot_lock);
280283 if (count)
281284 __btrfs_add_free_space(root->fs_info, ctl,
282
- info->offset, count);
285
+ info->offset, count, 0);
283286 kmem_cache_free(btrfs_free_space_cachep, info);
284287 }
285288 }
....@@ -434,7 +437,7 @@
434437 * 1 item for free space object
435438 * 3 items for pre-allocation
436439 */
437
- trans->bytes_reserved = btrfs_calc_trans_metadata_size(fs_info, 10);
440
+ trans->bytes_reserved = btrfs_calc_insert_metadata_size(fs_info, 10);
438441 ret = btrfs_block_rsv_add(root, trans->block_rsv,
439442 trans->bytes_reserved,
440443 BTRFS_RESERVE_NO_FLUSH);
....@@ -492,7 +495,8 @@
492495 /* Just to make sure we have enough space */
493496 prealloc += 8 * PAGE_SIZE;
494497
495
- ret = btrfs_delalloc_reserve_space(inode, &data_reserved, 0, prealloc);
498
+ ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved, 0,
499
+ prealloc);
496500 if (ret)
497501 goto out_put;
498502
....@@ -512,7 +516,7 @@
512516 trace_btrfs_space_reservation(fs_info, "ino_cache", trans->transid,
513517 trans->bytes_reserved, 0);
514518 btrfs_block_rsv_release(fs_info, trans->block_rsv,
515
- trans->bytes_reserved);
519
+ trans->bytes_reserved, NULL);
516520 out:
517521 trans->block_rsv = rsv;
518522 trans->bytes_reserved = num_bytes;