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