Date: Thu, 30 Nov 2017 08:29:45 -0700 From: Alan Somers <asomers@freebsd.org> Cc: "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org> Subject: Re: svn commit: r326399 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs Message-ID: <CAOtMX2jv%2BBMZT5NfuTtwYf6v4Sx4NnMeyRbuPsWK5zeehS2OXg@mail.gmail.com> In-Reply-To: <201711301528.vAUFSTO3062941@repo.freebsd.org> References: <201711301528.vAUFSTO3062941@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Crap. Committed the wrong file. Fix coming shortly. On Thu, Nov 30, 2017 at 8:28 AM, Alan Somers <asomers@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@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. > */ >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2jv%2BBMZT5NfuTtwYf6v4Sx4NnMeyRbuPsWK5zeehS2OXg>