Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Sep 2013 15:57:50 +0300
From:      "Sergey V. Dyatko" <sergey.dyatko@gmail.com>
To:        Edward Tomasz =?KOI8-R?Q?Napierala?= <trasz@freebsd.org>
Cc:        Sergey Kandaurov <pluknet@gmail.com>, current Current <current@freebsd.org>
Subject:   Re: panic: make_dev_credv: bad si_name (error=17, si_name=iscsi)
Message-ID:  <20130926155750.6b1c86fc@laptop.minsk.domain>
In-Reply-To: <F82E3854-76B3-433C-B26B-8ACC3358CB07@freebsd.org>
References:  <20130924104658.46313090@laptop.minsk.domain> <CAE-mSO%2BfWdySa%2BO6kuSe-z9AQsi0TNFy7LMrgx-btUJfQhx=jw@mail.gmail.com> <CAE-mSOKpNMV9PWR-Z2geS889aSbaBiTZavdDmvaxwx6U4_7EPw@mail.gmail.com> <842AF8F6-E143-494C-B275-F395220732FF@freebsd.org> <CAE-mSOLfm8rZZKLqp=U3Xid_3YtsX4ZUT_S6K=m7Kxkr1G3bTA@mail.gmail.com> <F82E3854-76B3-433C-B26B-8ACC3358CB07@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 25 Sep 2013 18:06:01 +0200
Edward Tomasz Napierala <trasz@freebsd.org> wrote:

> Wiadomo's'c napisana przez Sergey Kandaurov <pluknet@gmail.com> w dniu
> 24 wrz 2013, o godz. 14:04:
> > On 24 September 2013 15:44, Edward Tomasz Napierala
> > <trasz@freebsd.org> wrote:
> >> Wiadomo's'c napisana przez Sergey Kandaurov <pluknet@gmail.com> w
> >> dniu 24 wrz 2013, o godz. 13:00:
> >>> On 24 September 2013 14:40, Sergey Kandaurov <pluknet@gmail.com>
> >>> wrote:
> >>>> On 24 September 2013 11:46, Sergey V. Dyatko
> >>>> <sergey.dyatko@gmail.com> wrote:
> >>>>> Hi,
> >>>>> 
> >>>>> today I tried to play a bit with new iscsi
> >>>>> 
> >>>>> r255812 isn't fully complete fix?
> >>>>> 
> >>>> [...]
> >>>>> run  `kldload iscsi_initiator` and got a panic:
> >>>> 
> >>>> Something like this quick'n'dirty should work.
> >>>> Compile tested only.
> >>>> 
> >>>> Index: sys/dev/iscsi_initiator/iscsi.c
> >>>> ===================================================================
> >>>> --- sys/dev/iscsi_initiator/iscsi.c    (revision 255841)
> >>>> +++ sys/dev/iscsi_initiator/iscsi.c    (working copy)
> >>>> @@ -715,7 +715,8 @@
> >>>>     TUNABLE_INT_FETCH("net.iscsi_initiator.max_pdus", &max_pdus);
> >>>> 
> >>>>     isc =  malloc(sizeof(struct isc_softc), M_ISCSI,
> >>>> M_ZERO|M_WAITOK);
> >>>> -     isc->dev = make_dev(&iscsi_cdevsw, max_sessions, UID_ROOT,
> >>>> GID_WHEEL, 0600, "iscsi");
> >>>> +     isc->dev = make_dev_credf(MAKEDEV_CHECKNAME,
> >>>> &iscsi_cdevsw, max_sessions,
> >>>> +                               NULL, UID_ROOT, GID_WHEEL, 0600,
> >>>> "iscsi"); isc->dev->si_drv1 = isc;
> >>>>     mtx_init(&isc->isc_mtx, "iscsi-isc", NULL, MTX_DEF);
> >>> 
> >>> Erm, of course it shall be checked against failure.
> >> 
> >> Sure.  What do you think about this:
> >> 
> >> Index: sys/dev/iscsi_initiator/iscsi.c
> >> ===================================================================
> >> --- sys/dev/iscsi_initiator/iscsi.c     (revision 255834)
> >> +++ sys/dev/iscsi_initiator/iscsi.c     (working copy)
> >> @@ -715,8 +715,14 @@ iscsi_start(void)
> >>      TUNABLE_INT_FETCH("net.iscsi_initiator.max_pdus", &max_pdus);
> >> 
> >>      isc =  malloc(sizeof(struct isc_softc), M_ISCSI,
> >> M_ZERO|M_WAITOK);
> >> -     isc->dev = make_dev(&iscsi_cdevsw, max_sessions, UID_ROOT,
> >> GID_WHEEL, 0600, "iscsi");
> >> -     isc->dev->si_drv1 = isc;
> >> +     isc->dev = make_dev_credf(MAKEDEV_CHECKNAME, &iscsi_cdevsw,
> >> max_sessions,
> >> +         NULL, UID_ROOT, GID_WHEEL, 0600, "iscsi");
> >> +     if (isc->dev == NULL) {
> >> +         xdebug("iscsi_initiator: make_dev_credf failed");
> >> +         // XXX: don't return; otherwise it would panic on unload
> >> +     } else {
> >> +            isc->dev->si_drv1 = isc;
> >> +     }
> >>      mtx_init(&isc->isc_mtx, "iscsi-isc", NULL, MTX_DEF);
> >> 
> >>      TAILQ_INIT(&isc->isc_sess);
> >> 
> > 
> > LGTM, except there is different indentation where for function calls
> > each new line aligned with the first function argument.
> 
> Committed in a somewhat different form.  I've also realized the new
> initiator had a similar bug; could you please test both to make sure
> everything is right now?  Thanks!
> 

looks good (r255873):

laptop# kldstat -v | grep -i iscsi
laptop# 
laptop# iscsictl 
Target name                          Target addr      State
laptop# kldstat -v | grep -i iscsi
18    1 0xffffffff8262e000 abb3     iscsi.ko (/boot/kernel/iscsi.ko)
                402 iscsi
laptop# kldload iscsi_initiator
kldload: can't load iscsi_initiator: Exec format error

/var/log/messages:
Sep 26 15:54:16 laptop kernel: >>> iscsi_start: iscsi_initiator:
make_dev_credf failed
Sep 26 15:54:16 laptop kernel: module_register_init: MOD_LOAD
(iscsi_initiator, 0xffffffff82639000, 0) error 17

laptop# iscsictl -A -h 192.168.9.98 -t iqn.desktop:target0
laptop# kldunload iscsi
kldunload: can't unload file: Device busy
laptop# iscsictl -Ra
laptop# kldunload iscsi
laptop# 
laptop# kldload iscsi_initiator
laptop# kldunload iscsi_initiator
laptop# kldstat -v | grep -i iscsi
laptop# 


-- 
wbr, tiger



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130926155750.6b1c86fc>