summaryrefslogtreecommitdiffstats
path: root/restripe.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2009-08-11 13:02:49 +1000
committerNeilBrown <neilb@suse.de>2009-08-11 13:02:49 +1000
commit7236ee7ad4a15b0d800cfc1ccbcee78158a05ada (patch)
tree0ec44aabb9b119b23098a79f285b9a241500b3ee /restripe.c
parenta628848379c07c79485a49c7f0c684ece02ae3b7 (diff)
downloadmdadm-7236ee7ad4a15b0d800cfc1ccbcee78158a05ada.tar.gz
mdadm-7236ee7ad4a15b0d800cfc1ccbcee78158a05ada.tar.xz
mdadm-7236ee7ad4a15b0d800cfc1ccbcee78158a05ada.zip
Handle extra 'grow' variations.
UNFINISHED
Diffstat (limited to 'restripe.c')
-rw-r--r--restripe.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/restripe.c b/restripe.c
index ea348e1..38b4412 100644
--- a/restripe.c
+++ b/restripe.c
@@ -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;