[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v5 11/27] raw-posix: Implement .bdrv_lockf
From: |
Max Reitz |
Subject: |
Re: [Qemu-devel] [PATCH v5 11/27] raw-posix: Implement .bdrv_lockf |
Date: |
Tue, 24 May 2016 19:09:34 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.0 |
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?
> Suggested-by: "Daniel P. Berrange" <address@hidden>
I think the quotation marks are superfluous.
> 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 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?
>
> #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.
Max
> +}
> +
> #ifdef CONFIG_LINUX_AIO
> static int raw_set_aio(LinuxAioState **aio_ctx, int *use_aio, int bdrv_flags)
> {
> @@ -1942,6 +1960,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,
> };
>
> @@ -2396,6 +2416,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__)
>
signature.asc
Description: OpenPGP digital signature
- Re: [Qemu-devel] [PATCH v5 05/27] block: Add bdrv_image_locked, (continued)
- [Qemu-devel] [PATCH v5 06/27] block: Make bdrv_reopen_{commit, abort} private functions, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 08/27] osdep: Add qemu_lock_fd and qemu_unlock_fd, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 12/27] gluster: Implement .bdrv_lockf, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 09/27] osdep: Introduce qemu_dup, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 11/27] raw-posix: Implement .bdrv_lockf, Fam Zheng, 2016/05/17
- Re: [Qemu-devel] [PATCH v5 11/27] raw-posix: Implement .bdrv_lockf,
Max Reitz <=
- [Qemu-devel] [PATCH v5 10/27] raw-posix: Use qemu_dup, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 16/27] qemu-nbd: Add "--no-lock/-L" option, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 15/27] qemu-img: Update documentation of "-L" option, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 14/27] qemu-img: Add "-L" option to sub commands, Fam Zheng, 2016/05/17
- [Qemu-devel] [PATCH v5 13/27] qemu-io: Add "-L" option for BDRV_O_NO_LOCK, Fam Zheng, 2016/05/17