On Thu, Nov 15, 2012 at 9:03 PM, Anthony Liguori <aligu...@us.ibm.com> wrote: > Stefan Hajnoczi <stefa...@redhat.com> writes: > >> The raw_get_aio_fd() function allows virtio-blk-data-plane to get the >> file descriptor of a raw image file with Linux AIO enabled. This >> interface is really a layering violation that can be resolved once the >> block layer is able to run outside the global mutex - at that point >> virtio-blk-data-plane will switch from custom Linux AIO code to using >> the block layer. >> >> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > > I think this creates user confusion because virtio-blk-data-plane can't > actually take a BDS. > > So why not just make a string 'filename' property and open it directly > in virtio-blk-data-plane? Then it's at least clear to the user and > management tools what the device is capable of doing.
There are some benefits to raw_get_aio_fd(): 1. virtio-blk-data-plane is only a subset virtio-blk implementation, it still needs a regular virtio-blk-pci device (with BDS) in order to run. If we use a filename the user would have to specify it twice. 2. Fetching the file descriptor in this way ensures that the image file is format=raw. 3. virtio-blk-data-plane uses Linux AIO and raw-posix.c has checks which I don't want to duplicate - we can simply check s->use_aio in raw_get_aio_fd() to confirm that Linux AIO can be used. If we open a file directly then we lose these benefits. Do you still think we should open a filename? Stefan