X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmd%2Fraid0.c;h=e7d934eca06f8de135d9cd5b545735422bc57790;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=ae45ae92a838fb34c62cf7a49b7e7cfda9e80292;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index ae45ae92a..e7d934eca 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -48,18 +48,14 @@ static int raid0_issue_flush(request_queue_t *q, struct gendisk *disk, mdk_rdev_t **devlist = conf->strip_zone[0].dev; int i, ret = 0; - for (i=0; iraid_disks; i++) { + for (i=0; iraid_disks && ret == 0; i++) { struct block_device *bdev = devlist[i]->bdev; request_queue_t *r_queue = bdev_get_queue(bdev); - if (!r_queue->issue_flush_fn) { + if (!r_queue->issue_flush_fn) ret = -EOPNOTSUPP; - break; - } - - ret =r_queue->issue_flush_fn(r_queue, bdev->bd_disk, error_sector); - if (ret) - break; + else + ret = r_queue->issue_flush_fn(r_queue, bdev->bd_disk, error_sector); } return ret; } @@ -389,6 +385,7 @@ static int raid0_stop (mddev_t *mddev) { raid0_conf_t *conf = mddev_to_conf(mddev); + blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ kfree (conf->hash_table); conf->hash_table = NULL; kfree (conf->strip_zone);