On Thu, Apr 30, 2015 at 11:52:01AM +0200, Kevin Wolf wrote: > Am 30.04.2015 um 11:43 hat Wen Congyang geschrieben: > > On 04/30/2015 05:33 PM, Kevin Wolf wrote: > > > [Cc: qemu-block] > > > > > > Am 30.04.2015 um 11:11 hat Wen Congyang geschrieben: > > >> Some drivers use bdrv_open, while the other dirvers use bdrv_file_open(). > > >> What is the difference between bdrv_open() and bdrv_file_open()? > > > > > > bdrv_file_open() is used by protocol drivers that don't need any other > > > driver to work (e.g. raw-posix), bdrv_open() is used by format drivers > > > that need a bs->file (e.g. raw or qcow2). > > > > > > They used to have different parameters originally, but nowadays that's > > > the only difference. > > > > So, if the driver wants to open bs->file itself, it should use > > bdrv_file_open(), > > and the driver wants bs->file has already been opened before its open, it > > should > > use bdrv_open(). Is it right? > > Yes, that's how it works, even though I don't think a driver exists that > opens bs->file by itself.
Some extra context about this statement: .bdrv_file_open() block drivers (aka "protocols") operate directly on a POSIX file descriptor, a socket, GlusterFS API, etc so they usually have no need for bs->file. Stefan
pgpDEBuXny8lF.pgp
Description: PGP signature