[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking |
Date: |
Fri, 15 Apr 2016 11:27:57 +0800 |
librbd has the locking API that can be used to implement .bdrv_lockf.
Signed-off-by: Fam Zheng <address@hidden>
---
block/rbd.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/block/rbd.c b/block/rbd.c
index 5bc5b32..a495083 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -810,6 +810,30 @@ static int qemu_rbd_truncate(BlockDriverState *bs, int64_t
offset)
return 0;
}
+static int qemu_rbd_lockf(BlockDriverState *bs, BdrvLockfCmd cmd)
+{
+ int ret;
+ BDRVRBDState *s = bs->opaque;
+
+ /* XXX: RBD locks are not released automatically when program exits, which
+ * means if QEMU dies it cannot open the image next time until manually
+ * unlocked. */
+ switch (cmd) {
+ case BDRV_LOCKF_RWLOCK:
+ ret = rbd_lock_exclusive(s->image, NULL);
+ break;
+ case BDRV_LOCKF_ROLOCK:
+ ret = rbd_lock_shared(s->image, NULL, NULL);
+ break;
+ case BDRV_LOCKF_UNLOCK:
+ ret = rbd_unlock(s->image, NULL);
+ break;
+ default:
+ abort();
+ }
+ return ret;
+}
+
static int qemu_rbd_snap_create(BlockDriverState *bs,
QEMUSnapshotInfo *sn_info)
{
@@ -998,6 +1022,7 @@ static BlockDriver bdrv_rbd = {
.bdrv_aio_discard = qemu_rbd_aio_discard,
#endif
+ .bdrv_lockf = qemu_rbd_lockf,
.bdrv_snapshot_create = qemu_rbd_snap_create,
.bdrv_snapshot_delete = qemu_rbd_snap_remove,
.bdrv_snapshot_list = qemu_rbd_snap_list,
--
2.8.0
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, (continued)
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Richard W.M. Jones, 2016/04/18
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Fam Zheng, 2016/04/19
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Richard W.M. Jones, 2016/04/19
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Fam Zheng, 2016/04/19
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Richard W.M. Jones, 2016/04/19
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Daniel P. Berrange, 2016/04/19
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Daniel P. Berrange, 2016/04/19
- Re: [Qemu-devel] [PATCH for-2.7 v2 05/17] raw-posix: Implement .bdrv_lockf, Richard W.M. Jones, 2016/04/19
[Qemu-devel] [PATCH for-2.7 v2 06/17] gluster: Implement .bdrv_lockf, Fam Zheng, 2016/04/14
[Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking,
Fam Zheng <=
- Re: [Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking, Jason Dillaman, 2016/04/22
- Re: [Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking, Fam Zheng, 2016/04/24
- Re: [Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking, Jason Dillaman, 2016/04/26
- Re: [Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking, Fam Zheng, 2016/04/26
- Re: [Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking, Jason Dillaman, 2016/04/27
- Re: [Qemu-devel] [PATCH for-2.7 v2 07/17] rbd: Implement image locking, Fam Zheng, 2016/04/27
[Qemu-devel] [PATCH for-2.7 v2 08/17] qemu-io: Add "-L" option for BDRV_O_NO_LOCK, Fam Zheng, 2016/04/14
[Qemu-devel] [PATCH for-2.7 v2 09/17] qemu-img: Add "-L" option to sub commands, Fam Zheng, 2016/04/14