aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/ctree.h2
-rw-r--r--fs/btrfs/file.c40
-rw-r--r--fs/btrfs/ioctl.c2
-rw-r--r--fs/btrfs/tests/btrfs-tests.c6
-rw-r--r--fs/btrfs/tests/free-space-tree-tests.c1
5 files changed, 20 insertions, 31 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index 67fca268449b..c3e634924149 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -2291,7 +2291,7 @@ struct btrfs_ioctl_defrag_range_args {
2291#define BTRFS_MOUNT_NOLOGREPLAY (1 << 27) 2291#define BTRFS_MOUNT_NOLOGREPLAY (1 << 27)
2292 2292
2293#define BTRFS_DEFAULT_COMMIT_INTERVAL (30) 2293#define BTRFS_DEFAULT_COMMIT_INTERVAL (30)
2294#define BTRFS_DEFAULT_MAX_INLINE (8192) 2294#define BTRFS_DEFAULT_MAX_INLINE (2048)
2295 2295
2296#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt) 2296#define btrfs_clear_opt(o, opt) ((o) &= ~BTRFS_MOUNT_##opt)
2297#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt) 2297#define btrfs_set_opt(o, opt) ((o) |= BTRFS_MOUNT_##opt)
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 4ab4b5cdf4b0..03de2466db23 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1533,29 +1533,25 @@ static noinline ssize_t __btrfs_buffered_write(struct file *file,
1533 reserve_bytes = round_up(write_bytes + sector_offset, 1533 reserve_bytes = round_up(write_bytes + sector_offset,
1534 root->sectorsize); 1534 root->sectorsize);
1535 1535
1536 if (BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW | 1536 if ((BTRFS_I(inode)->flags & (BTRFS_INODE_NODATACOW |
1537 BTRFS_INODE_PREALLOC)) { 1537 BTRFS_INODE_PREALLOC)) &&
1538 ret = check_can_nocow(inode, pos, &write_bytes); 1538 check_can_nocow(inode, pos, &write_bytes) > 0) {
1539 if (ret < 0) 1539 /*
1540 break; 1540 * For nodata cow case, no need to reserve
1541 if (ret > 0) { 1541 * data space.
1542 /* 1542 */
1543 * For nodata cow case, no need to reserve 1543 only_release_metadata = true;
1544 * data space. 1544 /*
1545 */ 1545 * our prealloc extent may be smaller than
1546 only_release_metadata = true; 1546 * write_bytes, so scale down.
1547 /* 1547 */
1548 * our prealloc extent may be smaller than 1548 num_pages = DIV_ROUND_UP(write_bytes + offset,
1549 * write_bytes, so scale down. 1549 PAGE_CACHE_SIZE);
1550 */ 1550 reserve_bytes = round_up(write_bytes + sector_offset,
1551 num_pages = DIV_ROUND_UP(write_bytes + offset, 1551 root->sectorsize);
1552 PAGE_CACHE_SIZE); 1552 goto reserve_metadata;
1553 reserve_bytes = round_up(write_bytes
1554 + sector_offset,
1555 root->sectorsize);
1556 goto reserve_metadata;
1557 }
1558 } 1553 }
1554
1559 ret = btrfs_check_data_free_space(inode, pos, write_bytes); 1555 ret = btrfs_check_data_free_space(inode, pos, write_bytes);
1560 if (ret < 0) 1556 if (ret < 0)
1561 break; 1557 break;
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 6110d8c386a5..c1193b0c5e49 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -2093,8 +2093,6 @@ static noinline int search_ioctl(struct inode *inode,
2093 key.offset = (u64)-1; 2093 key.offset = (u64)-1;
2094 root = btrfs_read_fs_root_no_name(info, &key); 2094 root = btrfs_read_fs_root_no_name(info, &key);
2095 if (IS_ERR(root)) { 2095 if (IS_ERR(root)) {
2096 btrfs_err(info, "could not find root %llu",
2097 sk->tree_id);
2098 btrfs_free_path(path); 2096 btrfs_free_path(path);
2099 return -ENOENT; 2097 return -ENOENT;
2100 } 2098 }
diff --git a/fs/btrfs/tests/btrfs-tests.c b/fs/btrfs/tests/btrfs-tests.c
index 0e1e61a7ec23..d39f714dabeb 100644
--- a/fs/btrfs/tests/btrfs-tests.c
+++ b/fs/btrfs/tests/btrfs-tests.c
@@ -189,12 +189,6 @@ btrfs_alloc_dummy_block_group(unsigned long length)
189 kfree(cache); 189 kfree(cache);
190 return NULL; 190 return NULL;
191 } 191 }
192 cache->fs_info = btrfs_alloc_dummy_fs_info();
193 if (!cache->fs_info) {
194 kfree(cache->free_space_ctl);
195 kfree(cache);
196 return NULL;
197 }
198 192
199 cache->key.objectid = 0; 193 cache->key.objectid = 0;
200 cache->key.offset = length; 194 cache->key.offset = length;
diff --git a/fs/btrfs/tests/free-space-tree-tests.c b/fs/btrfs/tests/free-space-tree-tests.c
index d05fe1ab4808..7cea4462acd5 100644
--- a/fs/btrfs/tests/free-space-tree-tests.c
+++ b/fs/btrfs/tests/free-space-tree-tests.c
@@ -485,6 +485,7 @@ static int run_test(test_func_t test_func, int bitmaps)
485 cache->bitmap_low_thresh = 0; 485 cache->bitmap_low_thresh = 0;
486 cache->bitmap_high_thresh = (u32)-1; 486 cache->bitmap_high_thresh = (u32)-1;
487 cache->needs_free_space = 1; 487 cache->needs_free_space = 1;
488 cache->fs_info = root->fs_info;
488 489
489 btrfs_init_dummy_trans(&trans); 490 btrfs_init_dummy_trans(&trans);
490 491