git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rebase master to b117
[zfs.git]
/
module
/
zfs
/
vdev_raidz.c
diff --git
a/module/zfs/vdev_raidz.c
b/module/zfs/vdev_raidz.c
index
69e3144
..
92753d8
100644
(file)
--- a/
module/zfs/vdev_raidz.c
+++ b/
module/zfs/vdev_raidz.c
@@
-20,7
+20,7
@@
*/
/*
*/
/*
- * Copyright 200
8
Sun Microsystems, Inc. All rights reserved.
+ * Copyright 200
9
Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
* Use is subject to license terms.
*/
@@
-687,7
+687,7
@@
vdev_raidz_io_start(zio_t *zio)
rc->rc_skipped = 1;
continue;
}
rc->rc_skipped = 1;
continue;
}
- if (vdev_dtl_contains(
&cvd->vdev_dtl_map
, bp->blk_birth, 1)) {
+ if (vdev_dtl_contains(
cvd, DTL_MISSING
, bp->blk_birth, 1)) {
if (c >= rm->rm_firstdatacol)
rm->rm_missingdata++;
else
if (c >= rm->rm_firstdatacol)
rm->rm_missingdata++;
else
@@
-697,7
+697,7
@@
vdev_raidz_io_start(zio_t *zio)
continue;
}
if (c >= rm->rm_firstdatacol || rm->rm_missingdata > 0 ||
continue;
}
if (c >= rm->rm_firstdatacol || rm->rm_missingdata > 0 ||
- (zio->io_flags &
ZIO_FLAG_SCRUB
)) {
+ (zio->io_flags &
(ZIO_FLAG_SCRUB | ZIO_FLAG_RESILVER)
)) {
zio_nowait(zio_vdev_child_io(zio, NULL, cvd,
rc->rc_offset, rc->rc_data, rc->rc_size,
zio->io_type, zio->io_priority, 0,
zio_nowait(zio_vdev_child_io(zio, NULL, cvd,
rc->rc_offset, rc->rc_data, rc->rc_size,
zio->io_type, zio->io_priority, 0,
@@
-1165,7
+1165,7
@@
vdev_raidz_io_done(zio_t *zio)
done:
zio_checksum_verified(zio);
done:
zio_checksum_verified(zio);
- if (zio->io_error == 0 &&
(spa_mode & FWRITE
) &&
+ if (zio->io_error == 0 &&
spa_writeable(zio->io_spa
) &&
(unexpected_errors || (zio->io_flags & ZIO_FLAG_RESILVER))) {
/*
* Use the good data we have in hand to repair damaged children.
(unexpected_errors || (zio->io_flags & ZIO_FLAG_RESILVER))) {
/*
* Use the good data we have in hand to repair damaged children.
@@
-1180,7
+1180,8
@@
done:
zio_nowait(zio_vdev_child_io(zio, NULL, cvd,
rc->rc_offset, rc->rc_data, rc->rc_size,
ZIO_TYPE_WRITE, zio->io_priority,
zio_nowait(zio_vdev_child_io(zio, NULL, cvd,
rc->rc_offset, rc->rc_data, rc->rc_size,
ZIO_TYPE_WRITE, zio->io_priority,
- ZIO_FLAG_IO_REPAIR, NULL, NULL));
+ ZIO_FLAG_IO_REPAIR | (unexpected_errors ?
+ ZIO_FLAG_SELF_HEAL : 0), NULL, NULL));
}
}
}
}
}
}