Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Jun 2012 19:50:01 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        "Kenneth D. Merry" <ken@FreeBSD.org>
Cc:        FreeBSD current <freebsd-current@freebsd.org>
Subject:   Re: minor GEOM disk API change coming
Message-ID:  <4FE4A239.5030000@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
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.

-- 
Alexander Motin



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