Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 305967
b: refs/heads/master
c: 1dff2b8
h: refs/heads/master
i:
  305965: 80ffeb0
  305963: e16eeac
  305959: bc15ff0
  305951: fb09035
v: v3
  • Loading branch information
NeilBrown committed May 22, 2012
1 parent 7f73518 commit b2095e5
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 2 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: 63aced61023a054825ffd6e33ac1ab99036dadd2
refs/heads/master: 1dff2b87a34a1ac1d1898ea109bf97ed396aca53
7 changes: 7 additions & 0 deletions trunk/drivers/md/bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -423,6 +423,8 @@ void bitmap_update_sb(struct bitmap *bitmap)
/* This might have been changed by a reshape */
sb->sync_size = cpu_to_le64(bitmap->mddev->resync_max_sectors);
sb->chunksize = cpu_to_le32(bitmap->mddev->bitmap_info.chunksize);
sb->sectors_reserved = cpu_to_le32(bitmap->mddev->
bitmap_info.space);
kunmap_atomic(sb);
write_page(bitmap, bitmap->storage.sb_page, 1);
}
Expand Down Expand Up @@ -536,6 +538,7 @@ static int bitmap_read_sb(struct bitmap *bitmap)
bitmap_super_t *sb;
unsigned long chunksize, daemon_sleep, write_behind;
unsigned long long events;
unsigned long sectors_reserved = 0;
int err = -EINVAL;
struct page *sb_page;

Expand Down Expand Up @@ -573,6 +576,7 @@ static int bitmap_read_sb(struct bitmap *bitmap)
chunksize = le32_to_cpu(sb->chunksize);
daemon_sleep = le32_to_cpu(sb->daemon_sleep) * HZ;
write_behind = le32_to_cpu(sb->write_behind);
sectors_reserved = le32_to_cpu(sb->sectors_reserved);

/* verify that the bitmap-specific fields are valid */
if (sb->magic != cpu_to_le32(BITMAP_MAGIC))
Expand Down Expand Up @@ -633,6 +637,9 @@ static int bitmap_read_sb(struct bitmap *bitmap)
bitmap->mddev->bitmap_info.chunksize = chunksize;
bitmap->mddev->bitmap_info.daemon_sleep = daemon_sleep;
bitmap->mddev->bitmap_info.max_write_behind = write_behind;
if (bitmap->mddev->bitmap_info.space == 0 ||
bitmap->mddev->bitmap_info.space > sectors_reserved)
bitmap->mddev->bitmap_info.space = sectors_reserved;
if (err)
bitmap_print_sb(bitmap);
return err;
Expand Down
4 changes: 3 additions & 1 deletion trunk/drivers/md/bitmap.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,10 @@ typedef struct bitmap_super_s {
__le32 chunksize; /* 52 the bitmap chunk size in bytes */
__le32 daemon_sleep; /* 56 seconds between disk flushes */
__le32 write_behind; /* 60 number of outstanding write-behind writes */
__le32 sectors_reserved; /* 64 number of 512-byte sectors that are
* reserved for the bitmap. */

__u8 pad[256 - 64]; /* set to zero */
__u8 pad[256 - 68]; /* set to zero */
} bitmap_super_t;

/* notes:
Expand Down

0 comments on commit b2095e5

Please sign in to comment.