On Sun, Jul 08, 2007 at 09:47:41AM +0800, Tai-hwa Liang wrote: > On Sat, 7 Jul 2007, Kostik Belousov wrote: > >On Sat, Jul 07, 2007 at 08:36:23PM +0800, Jiawei Ye wrote: > >>On 7/5/07, Kostik Belousov <kostikbel_at_gmail.com> wrote: > >>> > >>>Today, I reverted the part of commit that tried to transform > >>>destroy_dev() > >>>from d_close() into destroy_dev_sched(). See kern_conf.c, rev. 1.208. > >>>You shall call destroy_dev_sched() explicitely. > >>> > >>> > >>Does this mean that mount_smbfs has to explicitly call it now? It is > >>currently stuck in the devdrn state with the latest kernel :( > >> > >>Jiawei Ye > >Exactly. Patch by Tai-hwa Liang is pending. I also remember that sg(4) > > I'll ask for re_at_'s approval tomorrow. Hopefully the new KPI would have > more exposure before my patch is committed. > > >had the same problem, but I do not know it current status. > > Though it was reviewed before destroy_dev_sched() KPI enters to the tree, > I'd be appreciate it if you can reviewed the attached patch again. So, this is still the problem for scsi_targ ? It probably make sense to postpone free of softc until all threads finished using it. You may use destroy_dev_sched_cb() to run the function after the device is actually destroyed. It would just call free(). > > -- > Cheers, > > Tai-hwa Liang > --- cam/scsi/scsi_target.c.orig Wed May 2 11:42:46 2007 > +++ cam/scsi/scsi_target.c Wed May 2 11:43:11 2007 > _at__at_ -210,7 +210,7 _at__at_ targclose(struct cdev *dev, int flag, in > softc = (struct targ_softc *)dev->si_drv1; > if ((softc->periph == NULL) || > (softc->state & TARG_STATE_LUN_ENABLED) == 0) { > - destroy_dev(dev); > + destroy_dev_sched(dev); > FREE(softc, M_TARG); > return (0); > } > _at__at_ -229,7 +229,7 _at__at_ targclose(struct cdev *dev, int flag, in > cam_periph_invalidate(softc->periph); > softc->periph = NULL; > } > - destroy_dev(dev); > + destroy_dev_sched(dev); > FREE(softc, M_TARG); > } > cam_periph_unlock(periph);
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:13 UTC