diff options
author | NeilBrown <neilb@suse.de> | 2009-08-11 13:02:49 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2009-08-11 13:02:49 +1000 |
commit | 7236ee7ad4a15b0d800cfc1ccbcee78158a05ada (patch) | |
tree | 0ec44aabb9b119b23098a79f285b9a241500b3ee /restripe.c | |
parent | a628848379c07c79485a49c7f0c684ece02ae3b7 (diff) | |
download | mdadm-7236ee7ad4a15b0d800cfc1ccbcee78158a05ada.tar.gz mdadm-7236ee7ad4a15b0d800cfc1ccbcee78158a05ada.tar.xz mdadm-7236ee7ad4a15b0d800cfc1ccbcee78158a05ada.zip |
Handle extra 'grow' variations.
UNFINISHED
Diffstat (limited to 'restripe.c')
-rw-r--r-- | restripe.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -418,15 +418,16 @@ int save_stripes(int *source, unsigned long long *offsets, for (disk = 0; disk < raid_disks ; disk++) { unsigned long long offset; int dnum; - len = chunk_size; offset = (start/chunk_size/data_disks)*chunk_size; dnum = geo_map(disk < data_disks ? disk : data_disks - disk - 1, start/chunk_size/data_disks, raid_disks, level, layout); + if (dnum < 0) abort(); if (source[dnum] < 0 || lseek64(source[dnum], offsets[disk]+offset, 0) < 0 || - read(source[dnum], buf+disk * chunk_size, len) != len) + read(source[dnum], buf+disk * chunk_size, chunk_size) + != chunk_size) if (failed <= 2) { fdisk[failed] = dnum; fblock[failed] = disk; |