Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 56910
b: refs/heads/master
c: ab6085c
h: refs/heads/master
v: v3
  • Loading branch information
NeilBrown authored and Linus Torvalds committed May 24, 2007
1 parent 9e8a478 commit 6f4190d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 787f17feb204ed1c6331892fb8124b80dc9fe288
refs/heads/master: ab6085c795a71b6a21afe7469d30a365338add7a
17 changes: 12 additions & 5 deletions trunk/drivers/md/bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,19 +255,25 @@ static struct page *read_sb_page(mddev_t *mddev, long offset, unsigned long inde

}

static int write_sb_page(mddev_t *mddev, long offset, struct page *page, int wait)
static int write_sb_page(struct bitmap *bitmap, struct page *page, int wait)
{
mdk_rdev_t *rdev;
struct list_head *tmp;
mddev_t *mddev = bitmap->mddev;

ITERATE_RDEV(mddev, rdev, tmp)
if (test_bit(In_sync, &rdev->flags)
&& !test_bit(Faulty, &rdev->flags))
&& !test_bit(Faulty, &rdev->flags)) {
int size = PAGE_SIZE;
if (page->index == bitmap->file_pages-1)
size = roundup(bitmap->last_page_size,
bdev_hardsect_size(rdev->bdev));
md_super_write(mddev, rdev,
(rdev->sb_offset<<1) + offset
(rdev->sb_offset<<1) + bitmap->offset
+ page->index * (PAGE_SIZE/512),
PAGE_SIZE,
size,
page);
}

if (wait)
md_super_wait(mddev);
Expand All @@ -282,7 +288,7 @@ static int write_page(struct bitmap *bitmap, struct page *page, int wait)
struct buffer_head *bh;

if (bitmap->file == NULL)
return write_sb_page(bitmap->mddev, bitmap->offset, page, wait);
return write_sb_page(bitmap, page, wait);

bh = page_buffers(page);

Expand Down Expand Up @@ -923,6 +929,7 @@ static int bitmap_init_from_disk(struct bitmap *bitmap, sector_t start)
}

bitmap->filemap[bitmap->file_pages++] = page;
bitmap->last_page_size = count;
}
paddr = kmap_atomic(page, KM_USER0);
if (bitmap->flags & BITMAP_HOSTENDIAN)
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/raid/bitmap.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ struct bitmap {
struct page **filemap; /* list of cache pages for the file */
unsigned long *filemap_attr; /* attributes associated w/ filemap pages */
unsigned long file_pages; /* number of pages in the file */
int last_page_size; /* bytes in the last page */

unsigned long flags;

Expand Down

0 comments on commit 6f4190d

Please sign in to comment.