[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 11/27] raw-posix: Implement .bdrv_lockf
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v4 11/27] raw-posix: Implement .bdrv_lockf |
Date: |
Tue, 10 May 2016 10:50:43 +0800 |
virtlockd in libvirt locks the first byte, we lock byte 1 to avoid
the intervene.
Both file and host device protocols are covered.
Suggested-by: "Daniel P. Berrange" <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
---
block/raw-posix.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/block/raw-posix.c b/block/raw-posix.c
index 4e4d0d2..926aee1 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"
#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_RWLOCK:
+ return qemu_lock_fd(s->fd, 1, 1, false);
+ case BDRV_LOCKF_ROLOCK:
+ return qemu_lock_fd(s->fd, 1, 1, true);
+ case BDRV_LOCKF_UNLOCK:
+ return qemu_unlock_fd(s->fd, 1, 1);
+ default:
+ abort();
+ }
+}
+
#ifdef CONFIG_LINUX_AIO
static int raw_set_aio(void **aio_ctx, int *use_aio, int bdrv_flags)
{
@@ -1952,6 +1970,8 @@ BlockDriver bdrv_file = {
.bdrv_detach_aio_context = raw_detach_aio_context,
.bdrv_attach_aio_context = raw_attach_aio_context,
+ .bdrv_lockf = raw_lockf,
+
.create_opts = &raw_create_opts,
};
@@ -2407,6 +2427,8 @@ static BlockDriver bdrv_host_device = {
#ifdef __linux__
.bdrv_aio_ioctl = hdev_aio_ioctl,
#endif
+
+ .bdrv_lockf = raw_lockf,
};
#if defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
--
2.8.2
- [Qemu-devel] [PATCH v4 09/27] osdep: Introduce qemu_dup, (continued)
- [Qemu-devel] [PATCH v4 09/27] osdep: Introduce qemu_dup, Fam Zheng, 2016/05/09
- [Qemu-devel] [PATCH v4 08/27] osdep: Add qemu_lock_fd and qemu_unlock_fd, Fam Zheng, 2016/05/09
- Re: [Qemu-devel] [PATCH v4 08/27] osdep: Add qemu_lock_fd and qemu_unlock_fd, Richard W.M. Jones, 2016/05/10
- Re: [Qemu-devel] [PATCH v4 08/27] osdep: Add qemu_lock_fd and qemu_unlock_fd, Daniel P. Berrange, 2016/05/10
- Re: [Qemu-devel] [PATCH v4 08/27] osdep: Add qemu_lock_fd and qemu_unlock_fd, Fam Zheng, 2016/05/10
- Re: [Qemu-devel] [PATCH v4 08/27] osdep: Add qemu_lock_fd and qemu_unlock_fd, Fam Zheng, 2016/05/10
- Re: [Qemu-devel] [PATCH v4 08/27] osdep: Add qemu_lock_fd and qemu_unlock_fd, Daniel P. Berrange, 2016/05/11
[Qemu-devel] [PATCH v4 10/27] raw-posix: Use qemu_dup, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 11/27] raw-posix: Implement .bdrv_lockf,
Fam Zheng <=
[Qemu-devel] [PATCH v4 13/27] qemu-io: Add "-L" option for BDRV_O_NO_LOCK, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 12/27] gluster: Implement .bdrv_lockf, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 15/27] qemu-img: Update documentation of "-L" option, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 16/27] qemu-nbd: Add "--no-lock/-L" option, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 14/27] qemu-img: Add "-L" option to sub commands, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 17/27] block: Don't lock drive-backup target image in none mode, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 18/27] mirror: Disable image locking on target backing chain, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 20/27] qemu-iotests: 046: Move version detection out from verify_io, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 22/27] qemu-iotests: 030: Disable image lock when checking test image, Fam Zheng, 2016/05/09
[Qemu-devel] [PATCH v4 19/27] qemu-iotests: 140: Disable image lock for qemu-io access, Fam Zheng, 2016/05/09