[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] [Qemu-devel] [PATCH v2] Add support for fd: protocol

On 06/14/2011 04:18 PM, Eric Blake wrote:
On 06/14/2011 01:55 PM, Corey Bryant wrote:
>>  So we would need something like -drive
>>  file=fd:4,format=qcow2,backing=fd:5
>>  and since backing files can be nested, we'd need some way of specifying
>>  more than one level of backing file.  Libvirt already knows how to walk
>>  a chain of backing images in qcow2 files (it has to, in order to set
>>  sVirt SELinux permissions on all of those files so that qemu can open()
>>  each file), so it wouldn't be much harder for libvirt to instead do the
>>  open() and pass each fd.
>  Right.  So what I was talking about here (and poorly stated) is that
>  starting Qemu with a copy-on-write image file causes a reopen of the
>  backing file. In this case you would only be passing the fd of the
>  copy-on-write file to Qemu. I've fenced that off as unsupported for now.
>  I like your approach for passing multiple fds. Do you think backing file
>  support is needed immediately with this patch?
Incremental support is fine by me, but we'll need it sooner or later.
And for the nested backing file case, does:

-drive file=fd:4,format=qcow2,backing=fd:5,backing=fd:6

work, or would we need:

-drive file=fd:4,format=qcow2,backing1=fd:5,backing2=fd:6

That is, can you have more than one backing=, or do you need distinct
backingN=, and if you have to support multiple N, we must make sure the
solution allows arbitrarily deep nesting (or at least as deep as any
current limits qemu places on qcow2 backing file nesting).

Qemu currently opens the specified copy-on-write file, finds a backing file name in the opened file's header, opens that backing file, and repeats.

So it seems that either a backingN= would be needed or a way to map a file descriptor to the file name in the header.

I think the latter is along the lines of what was discussed here with -blockdev:

Repeating the syntax specified in that thread, you'd have:

-blockdev id=foo-base,path=fd:4,format=raw
-blockdev id=foo,path=fd:3,format=qcow2,backing_file=foo-base

where id is the file name. This chains the backing files on the command line.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]