On Fri, Jun 22, 2012 at 19:50:01 +0300, Alexander Motin wrote: > Hi. > > I understand problem you are going to fix and I think your patch should > do it. What I don't very like is addition of new GEOM method. Now GEOM > doesn't need it because all internal open/close operations and provider > destructions there protected by the topology SX lock. Unluckily that > lock doesn't cover g_wither_provider(), called by disk_gone() while > holding CAM SIM lock. If not that SIM lock, it would be enough to just > grab and drop GEOM topology lock to ensure that no new open() calls will > follow. Indirect way to do it could be to post GEOM event that would > drop the reference as soon as it will be handled and can obtain the > topology lock. Unluckily it uses malloc() for event storage and also can > be unreliable if called from under the SIM mutex lock. So it seems many > things would be much easier if it was possible to drop SIM lock inside > periph invalidate method, but now it is unsafe > > That is not an objection, just some thoughts about. Yeah, there are things in CAM (and GEOM) that need to be cleaned up. I wouldn't have added a GEOM method if there were a reasonable way around it, but as you pointed out, there isn't right now. I committed the patch, and plan to merge it to stable/9. Ken -- Kenneth Merry ken_at_FreeBSD.ORGReceived on Sun Jun 24 2012 - 02:33:15 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:28 UTC