diff options
author | Guoqing Jiang <gqjiang@suse.com> | 2016-05-02 17:50:13 +0200 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2016-05-04 21:39:35 +0200 |
commit | 7f86ffed9b5f3f0b1a29108c5e965942b935ec98 (patch) | |
tree | 35c6119e19c7da003a541708e1143fea77dd2530 /drivers/md | |
parent | md-cluster: sync bitmap when node received RESYNCING msg (diff) | |
download | linux-7f86ffed9b5f3f0b1a29108c5e965942b935ec98.tar.xz linux-7f86ffed9b5f3f0b1a29108c5e965942b935ec98.zip |
md-cluster/bitmap: fix wrong calcuation of offset
The offset is wrong in bitmap_storage_alloc, we should
set it like below in bitmap_init_from_disk().
node_offset = bitmap->cluster_slot * (DIV_ROUND_UP(store->bytes, PAGE_SIZE));
Because 'offset' is only assigned to 'page->index' and
that is usually over-written by read_sb_page. So it does
not cause problem in general, but it still need to be fixed.
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/bitmap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index ac93d874578a..cf93bb80aff7 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c @@ -759,7 +759,7 @@ static int bitmap_storage_alloc(struct bitmap_storage *store, bytes += sizeof(bitmap_super_t); num_pages = DIV_ROUND_UP(bytes, PAGE_SIZE); - offset = slot_number * (num_pages - 1); + offset = slot_number * num_pages; store->filemap = kmalloc(sizeof(struct page *) * num_pages, GFP_KERNEL); |