svn commit: r326399 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs
Alan Somers
asomers at freebsd.org
Thu Nov 30 15:29:49 UTC 2017
Crap. Committed the wrong file. Fix coming shortly.
On Thu, Nov 30, 2017 at 8:28 AM, Alan Somers <asomers at freebsd.org> wrote:
> Author: asomers
> Date: Thu Nov 30 15:28:29 2017
> New Revision: 326399
> URL: https://svnweb.freebsd.org/changeset/base/326399
>
> Log:
> Fix assertion when ZFS fails to open certain devices
>
> "panic: vdev_geom_close_locked: cp->private is NULL"
> This panic will result if ZFS fails to open a device due to either of the
> following reasons:
>
> 1) The device's sector size is greater than 8KB.
> 2) ZFS wants to open the device RW, but it can't be opened for writing.
>
> The solution is to change the initialization order to ensure that the
> assertion will be satisfied.
>
> PR: 221066
> Reported by: David NewHamlet <wheelcomplex at gmail.com>
> Reviewed by: avg
> MFC after: 3 weeks
> Sponsored by: Spectra Logic Corp
> Differential Revision: https://reviews.freebsd.org/D13278
>
> Modified:
> head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
>
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
> ==============================================================================
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c Thu Nov 30 15:10:11 2017 (r326398)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c Thu Nov 30 15:28:29 2017 (r326399)
> @@ -2398,7 +2398,7 @@ vdev_raidz_io_done(zio_t *zio)
> */
> if (parity_errors + parity_untried <
> rm->rm_firstdatacol ||
> - (zio->io_flags & ZIO_FLAG_RESILVER)) {
> + (zio->io_flags & (ZIO_FLAG_RESILVER | ZIO_FLAG_SCRUB))) {
> n = raidz_parity_verify(zio, rm);
> unexpected_errors += n;
> ASSERT(parity_errors + n <=
> @@ -2450,7 +2450,7 @@ vdev_raidz_io_done(zio_t *zio)
> * out to failed devices later.
> */
> if (parity_errors < rm->rm_firstdatacol - n ||
> - (zio->io_flags & ZIO_FLAG_RESILVER)) {
> + (zio->io_flags & (ZIO_FLAG_RESILVER | ZIO_FLAG_SCRUB))) {
> n = raidz_parity_verify(zio, rm);
> unexpected_errors += n;
> ASSERT(parity_errors + n <=
> @@ -2552,7 +2552,8 @@ done:
> zio_checksum_verified(zio);
>
> if (zio->io_error == 0 && spa_writeable(zio->io_spa) &&
> - (unexpected_errors || (zio->io_flags & ZIO_FLAG_RESILVER))) {
> + (unexpected_errors ||
> + (zio->io_flags & (ZIO_FLAG_RESILVER | ZIO_FLAG_SCRUB)))) {
> /*
> * Use the good data we have in hand to repair damaged children.
> */
>
More information about the svn-src-head
mailing list