diff options
author | Chris Mason <chris.mason@oracle.com> | 2008-05-07 11:43:44 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2008-09-25 11:04:02 -0400 |
commit | a061fc8da7b990faa41ca503e66faef3ecdeead0 (patch) | |
tree | 0d3b5b6e4d2164d507d9a16d5b38d373592a5c8f /fs/btrfs/transaction.c | |
parent | 5d9cd9ecbf40b8bd5045a3c2f1feb35db6a12266 (diff) |
Btrfs: Add support for online device removal
This required a few structural changes to the code that manages bdev pointers:
The VFS super block now gets an anon-bdev instead of a pointer to the
lowest bdev. This allows us to avoid swapping the super block bdev pointer
around at run time.
The code to read in the super block no longer goes through the extent
buffer interface. Things got ugly keeping the mapping constant.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r-- | fs/btrfs/transaction.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 9826942fa18a..57746c11eae3 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -738,9 +738,8 @@ int btrfs_commit_transaction(struct btrfs_trans_handle *trans, | |||
738 | chunk_root->node->start); | 738 | chunk_root->node->start); |
739 | btrfs_set_super_chunk_root_level(&root->fs_info->super_copy, | 739 | btrfs_set_super_chunk_root_level(&root->fs_info->super_copy, |
740 | btrfs_header_level(chunk_root->node)); | 740 | btrfs_header_level(chunk_root->node)); |
741 | write_extent_buffer(root->fs_info->sb_buffer, | 741 | memcpy(&root->fs_info->super_for_commit, &root->fs_info->super_copy, |
742 | &root->fs_info->super_copy, 0, | 742 | sizeof(root->fs_info->super_copy)); |
743 | sizeof(root->fs_info->super_copy)); | ||
744 | 743 | ||
745 | btrfs_copy_pinned(root, pinned_copy); | 744 | btrfs_copy_pinned(root, pinned_copy); |
746 | 745 | ||