Yes, but you can't say be open BY_DRIVER when something like a file system
won't let you have the block io protocol, so you either have to move to
BY_HANDLE or EXCLUSIVE.  You go Exclusive, you kick it off, you go
BY_HANDLE now you're unsafe for hot-swap.



On Tue, Sep 17, 2013 at 9:16 AM, Andrew Fish <af...@apple.com> wrote:

>
> On Sep 17, 2013, at 8:59 AM, Andrew Fish <af...@apple.com> wrote:
>
> EXCLUSIVE means kick every one else off. So for example if you were about
> to format a driver
>
>
> Make that drive
>
> you would open the BlockIo EXCLUSIVE. So it sounds like it is functioning
> as intended. EXCLUSIVE is a massive hammer, and general is not used, unless
> it is really required.
>
> Thanks,
>
> Andrew Fish
>
> On Sep 17, 2013, at 12:48 AM, David F. <df7...@gmail.com> wrote:
>
> I think I get what happens - the implementation must be holding on to the
> device path protocol, the by_driver fails so we try the by_driver|exclusive
> which then triggers the disconnectcontroller logic internally which isn't
> protocol specific and just stops whatever it is, in this case the file
> system driver which also provided the handle/device path attempting to be
> opened so then it fails to open after that (and there is no handle now for
> connectcontroller - you'd need to trigger that on the parent).   But I've
> concluded there is probably no way under the current implementation/model
> of UEFI to have both the ability to open block/disk protocols that won't go
> away without our consent and be able to use the simple file system protocol
> at the same time.  You either have to kick off the file system while you
> have a protocol open or open the protocol in a way that can disappear
> without our knowledge due to hot-swap.  There are also issues if you say
> have block io open by_driver|exclusive  then want to open the disk io
> driver which (probably) wants the block io protocol itself (so it fails,
> which means you have to open unsafe method which means the disk io protocol
> can go away, even though the block io protocol is safe, at least the spec
> seems to read that it's per protocol the driver model).
>
>
>
> On Mon, Sep 16, 2013 at 8:23 PM, David F. <df7...@gmail.com> wrote:
>
>> .. while I can remember .. Under OVMF (would guess it's using shared code
>> others would be), if you have a EFI_SIMPLE_FILE_SYSTEM_PROTOCOL you want to
>> try and coexist with direct access to drive in a way safe from hot-swap
>> there are issue.  If you attempt to open that device path (returned with
>> LocateHandleBuffer searching for Block IO devices) in BY_DRIVER|EXCLUSIVE
>> under driver model, it will disappear and that protocol can no longer be
>> found.    Same occurs if you open Block IO2 exclusive or Block IO
>> exclusive.  If you exit the app and from the shell try map -r, it also
>> can't find it.  Seems no way to get it back except to reboot.   If you
>> don't try to do things in a hot-swap safe way then there are no problems
>> (expect of course if a drive is "open" and the block io protocol is being
>> used and the drive is removed, that protocol (memory structure) is no
>> longer valid and everything crashes).  It be nice if everything could just
>> get along...
>>
>>
>> On Mon, Sep 16, 2013 at 6:26 PM, David F. <df7...@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I open exclusive access to the device path for a given block io device.
>>> I want to ensure the structure (protocol) doesn't go away while in a
>>> routine.  Meanwhile a support routine will take a handle to a mounted file
>>> system on that same block io device and attempt to use the
>>> DevicePathFromHandle support routine which uses HandleProtocol but it fails
>>> with INVALID_PARAMETER.   The two protocols have nothing to do with each
>>> other other than the same device, so why would it fail to get the device
>>> path of the file system (different handles)?  If I change it to not be
>>> exclusive but to be BY_HANDLE_PROTOCOL on the block io device then the
>>> DevicePathFromHandle will return the device path to the partition.
>>>
>>>
>>>
>>
>
> ------------------------------------------------------------------------------
> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8,
> SharePoint
> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack
> includes
> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk_______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
>
> ------------------------------------------------------------------------------
> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8,
> SharePoint
> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack
> includes
> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk_______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
>
>
> ------------------------------------------------------------------------------
> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8,
> SharePoint
> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack
> includes
> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. 
http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to