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