Message ID | 1341409978-22423-2-git-send-email-liubo2009@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 1f72817..4892396 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -1245,7 +1245,11 @@ next_slot: goto out_check; if (extent_type == BTRFS_FILE_EXTENT_REG && !force) goto out_check; - if (btrfs_extent_readonly(root, disk_bytenr)) + /* + * nolock means that we're free space cache inode, and + * free space cache inode cannot go to cow_file_range(). + */ + if (btrfs_extent_readonly(root, disk_bytenr) && !nolock) goto out_check; if (btrfs_cross_ref_exist(trans, root, ino, found_key.offset -
We can set a block group readonly when we relocate the block group. If the block group covers the disk offset where our free space cache inode is going to write, it will force the free space cache inode into cow_file_range(), which is not allowed due to free space cache design. Signed-off-by: Liu Bo <liubo2009@cn.fujitsu.com> --- fs/btrfs/inode.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)