Date: Mon, 28 Mar 2016 12:41:53 +0300 From: Konstantin Belousov <kostikbel@gmail.com> To: Alexander Motin <mav@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r297337 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs Message-ID: <20160328094153.GD1741@kib.kiev.ua> In-Reply-To: <201603280812.u2S8CTde080966@repo.freebsd.org> References: <201603280812.u2S8CTde080966@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Mar 28, 2016 at 08:12:29AM +0000, Alexander Motin wrote: > Author: mav > Date: Mon Mar 28 08:12:29 2016 > New Revision: 297337 > URL: https://svnweb.freebsd.org/changeset/base/297337 > > Log: > Pass through error code from make_dev_p(). > > ENAMETOOLONG is much more informative in logs then ENXIO. > > MFC after: 1 week > > Modified: > head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c > > Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c > ============================================================================== > --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Mon Mar 28 08:01:38 2016 (r297336) > +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Mon Mar 28 08:12:29 2016 (r297337) > @@ -688,13 +688,14 @@ zvol_create_minor(const char *name) > bioq_init(&zv->zv_queue); > mtx_init(&zv->zv_queue_mtx, "zvol", NULL, MTX_DEF); > } else if (zv->zv_volmode == ZFS_VOLMODE_DEV) { > - if (make_dev_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK, > + error = make_dev_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK, > &dev, &zvol_cdevsw, NULL, UID_ROOT, GID_OPERATOR, > - 0640, "%s/%s", ZVOL_DRIVER, name) != 0) { > + 0640, "%s/%s", ZVOL_DRIVER, name); > + if (error != 0) { > kmem_free(zv, sizeof(*zv)); > dmu_objset_disown(os, FTAG); > mutex_exit(&zfsdev_state_lock); > - return (SET_ERROR(ENXIO)); > + return (error); > } > zv->zv_dev = dev; > dev->si_iosize_max = MAXPHYS; Did you considered switching to make_dev_s(9) KPI ? The next line, not shown in the diff, is dev->si_drv2 = zv; The make_dev_s() use would solve an issue where user mode request might be executed before si_drv2 is assigned.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160328094153.GD1741>