diff options
author | Jonathan Brassow <jbrassow@redhat.com> | 2011-01-13 17:14:34 -0500 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2011-01-13 17:14:34 -0500 |
commit | a6ff7e089c7fca813c956ccbed824087e89a3a49 (patch) | |
tree | 6537f72a2431c30601736676e9b1f89a7f1fe52e /drivers/md/bitmap.c | |
parent | ccebd4c4159462c96397ae9af9c667bb394d7b70 (diff) |
md: separate meta and data devs
Allow the metadata to be on a separate device from the
data.
This doesn't mean the data and metadata will by on separate
physical devices - it simply gives device-mapper and userspace
tools more flexibility.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/bitmap.c')
-rw-r--r-- | drivers/md/bitmap.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index 1977765ff964..6cf587196b99 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
@@ -264,14 +264,18 @@ static mdk_rdev_t *next_active_rdev(mdk_rdev_t *rdev, mddev_t *mddev) | |||
264 | static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait) | 264 | static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait) |
265 | { | 265 | { |
266 | mdk_rdev_t *rdev = NULL; | 266 | mdk_rdev_t *rdev = NULL; |
267 | struct block_device *bdev; | ||
267 | mddev_t *mddev = bitmap->mddev; | 268 | mddev_t *mddev = bitmap->mddev; |
268 | 269 | ||
269 | while ((rdev = next_active_rdev(rdev, mddev)) != NULL) { | 270 | while ((rdev = next_active_rdev(rdev, mddev)) != NULL) { |
270 | int size = PAGE_SIZE; | 271 | int size = PAGE_SIZE; |
271 | loff_t offset = mddev->bitmap_info.offset; | 272 | loff_t offset = mddev->bitmap_info.offset; |
273 | |||
274 | bdev = (rdev->meta_bdev) ? rdev->meta_bdev : rdev->bdev; | ||
275 | |||
272 | if (page->index == bitmap->file_pages-1) | 276 | if (page->index == bitmap->file_pages-1) |
273 | size = roundup(bitmap->last_page_size, | 277 | size = roundup(bitmap->last_page_size, |
274 | bdev_logical_block_size(rdev->bdev)); | 278 | bdev_logical_block_size(bdev)); |
275 | /* Just make sure we aren't corrupting data or | 279 | /* Just make sure we aren't corrupting data or |
276 | * metadata | 280 | * metadata |
277 | */ | 281 | */ |