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

Reply via email to