On Tue, 05/24 19:09, Max Reitz wrote: > On 17.05.2016 09:35, Fam Zheng wrote: > > virtlockd in libvirt locks the first byte, we lock byte 1 to avoid > > the intervene. > > > > Both file and host device protocols are covered. > > Is there a reason you didn't cover host_cdrom other than it generally > being read-only and thus probably not really needing a lock?
That is the reason. > > > Suggested-by: "Daniel P. Berrange" <berra...@redhat.com> > > I think the quotation marks are superfluous. OK, I can remove them. > > > Signed-off-by: Fam Zheng <f...@redhat.com> > > --- > > block/raw-posix.c | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/block/raw-posix.c b/block/raw-posix.c > > index bb8669f..acd3be2 100644 > > --- a/block/raw-posix.c > > +++ b/block/raw-posix.c > > @@ -35,6 +35,7 @@ > > #include "raw-aio.h" > > #include "qapi/util.h" > > #include "qapi/qmp/qstring.h" > > +#include "glib.h" > > What for? It's stale from a previous revision. > > > > > #if defined(__APPLE__) && (__MACH__) > > #include <paths.h> > > @@ -397,6 +398,23 @@ static void raw_attach_aio_context(BlockDriverState > > *bs, > > #endif > > } > > > > +static int raw_lockf(BlockDriverState *bs, BdrvLockfCmd cmd) > > +{ > > + > > + BDRVRawState *s = bs->opaque; > > + > > + switch (cmd) { > > + case BDRV_LOCKF_EXCLUSIVE: > > + return qemu_lock_fd(s->fd, 1, 1, true); > > + case BDRV_LOCKF_SHARED: > > + return qemu_lock_fd(s->fd, 1, 1, false); > > + case BDRV_LOCKF_UNLOCK: > > + return qemu_unlock_fd(s->fd, 1, 1); > > + default: > > + abort(); > > + } > > I figure the comment from patch 8 about why byte 1 is locked should be > here somewhere. Yes. Thanks, Fam