From 1e0d32d7b9865feee05c2673401134142e301f32 Mon Sep 17 00:00:00 2001 From: Yan Date: Tue, 6 Nov 2007 10:26:26 -0500 Subject: [PATCH] --- yaml --- r: 128527 b: refs/heads/master c: dcfec0dcb1b1a037fb26177789e8f108bc429cb3 h: refs/heads/master i: 128525: f00bad9db068338a39ea7d0b964475918308d6ae 128523: aa059191f0036a23baf3f4953647158b9bb20749 128519: 6ab19c10539b8e9db703d6c20e274aee9cd56569 128511: 6650f35ceef35f32d9d9adead2d60123fc14fcd2 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/file.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 47bb5b9009d6..351e17df8f4a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 081e95736d9118a96e9f6dcc5cec02dc75c9e1cb +refs/heads/master: dcfec0dcb1b1a037fb26177789e8f108bc429cb3 diff --git a/trunk/fs/btrfs/file.c b/trunk/fs/btrfs/file.c index 4e52f7ec1cbe..bb98f52f4ea4 100644 --- a/trunk/fs/btrfs/file.c +++ b/trunk/fs/btrfs/file.c @@ -239,9 +239,8 @@ static int dirty_and_release_pages(struct btrfs_trans_handle *trans, u64 start_pos; u64 end_of_last_block; u64 end_pos = pos + write_bytes; - u32 inline_size; + u64 inline_size; loff_t isize = i_size_read(inode); - em = alloc_extent_map(GFP_NOFS); if (!em) return -ENOMEM; @@ -328,9 +327,11 @@ static int dirty_and_release_pages(struct btrfs_trans_handle *trans, aligned_end, aligned_end, &hint_byte); if (err) goto failed; + if (isize > inline_size) + inline_size = min_t(u64, isize, aligned_end); + inline_size -= start_pos; err = insert_inline_extent(trans, root, inode, start_pos, - end_pos - start_pos, pages, 0, - num_pages); + inline_size, pages, 0, num_pages); BUG_ON(err); } if (end_pos > isize) {