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.
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to