diff options
author | Chris Mason <chris.mason@oracle.com> | 2008-10-30 11:11:39 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-10-30 11:11:39 -0400 |
commit | 0a7869d69df44b5993f7c5d6bbf9cce217561aff (patch) | |
tree | 5b24849645fe8b48105dcf3a2bc4f2b81dffd99c /disk-io.c | |
parent | 712c1dea5e5a7a37b66b94b4a0f21830dd6f69fb (diff) |
Avoid tree of tree root cow when committing a clean FS
The root node generation number code made commit_tree_root look like the
kernel code. It forces a cow of the tree of tree roots even when
the FS hasn't changed.
This causes errors during fsck and other readonly operations. This adds
a check to see if commit_tree_root is going to trigger writes to the
tree of tree roots, and bails if none are pending.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'disk-io.c')
-rw-r--r-- | disk-io.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -293,6 +293,9 @@ static int commit_tree_roots(struct btrfs_trans_handle *trans, struct list_head *next; struct extent_buffer *eb; + if (fs_info->readonly) + return 0; + eb = fs_info->tree_root->node; extent_buffer_get(eb); btrfs_cow_block(trans, fs_info->tree_root, eb, NULL, 0, &eb); |