summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgrog <grog@FreeBSD.org>1999-01-28 07:00:55 +0000
committergrog <grog@FreeBSD.org>1999-01-28 07:00:55 +0000
commitf0b500d6d78c7214fd778d33f75f15b150877561 (patch)
treef78ce4a1b715ef63345f3c53fa746347085e85b8
parent321af5d41dd10ffd8765aa4f7332e9e51743eb62 (diff)
downloadFreeBSD-src-f0b500d6d78c7214fd778d33f75f15b150877561.zip
FreeBSD-src-f0b500d6d78c7214fd778d33f75f15b150877561.tar.gz
build_write_request: only fail if all plexes are down, instead of if
any of them are down. Reported-by: dg
-rw-r--r--sys/dev/vinum/vinumrequest.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/dev/vinum/vinumrequest.c b/sys/dev/vinum/vinumrequest.c
index 91f6e15..bba7e1d 100644
--- a/sys/dev/vinum/vinumrequest.c
+++ b/sys/dev/vinum/vinumrequest.c
@@ -651,7 +651,10 @@ build_write_request(struct request *rq)
status = REQUEST_OK;
for (plexno = 0; plexno < vol->plexes; plexno++) {
diskstart = bp->b_blkno; /* start offset of transfer */
- status = max(status, bre(rq, /* build requests for the plex */
+ /* Build requests for the plex.
+ * We take the best possible result here (min,
+ * not max): we're happy if we can write at all */
+ status = min(status, bre(rq,
vol->plex[plexno],
&diskstart,
diskend));
OpenPOWER on IntegriCloud