diff options
author | grog <grog@FreeBSD.org> | 2002-12-12 01:03:45 +0000 |
---|---|---|
committer | grog <grog@FreeBSD.org> | 2002-12-12 01:03:45 +0000 |
commit | d483f1ceb2a787a7cd9408b71bbf49fd5d6c8c57 (patch) | |
tree | 9f05d5bac7878f44fac9738f9d84515a9754b4e5 /sys | |
parent | b45b4e9e9ed7f3934c8cc78762585c6d71bba9ae (diff) | |
download | FreeBSD-src-d483f1ceb2a787a7cd9408b71bbf49fd5d6c8c57.zip FreeBSD-src-d483f1ceb2a787a7cd9408b71bbf49fd5d6c8c57.tar.gz |
revive_block: If we have an I/O error, don't forget to drop the stripe lock.
Approved by: re (jhb)
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/vinum/vinumrevive.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/vinum/vinumrevive.c b/sys/dev/vinum/vinumrevive.c index d74d5d3..8e6410e 100644 --- a/sys/dev/vinum/vinumrevive.c +++ b/sys/dev/vinum/vinumrevive.c @@ -169,9 +169,11 @@ revive_block(int sdno) bufwait(bp); } - if (bp->b_ioflags & BIO_ERROR) + if (bp->b_ioflags & BIO_ERROR) { error = bp->b_error; - else + if (lock) /* we took a lock, */ + unlockrange(sd->plexno, lock); /* give it back */ + } else /* Now write to the subdisk */ { bp->b_dev = VINUM_SD(sdno); /* create the device number */ |