Am 26.04.2017 um 05:34 hat Fam Zheng geschrieben:
> This extends the permission bits of op blocker API to external using
> Linux OFD locks.
>
> Each permission in @perm and @shared_perm is represented by a locked
> byte in the image file. Requesting a permission in @perm is translated
> to a shared lock of the corresponding byte; rejecting to share the same
> permission is translated to a shared lock of a separate byte. With that,
> we use 2x number of bytes of distinct permission types.
>
> virtlockd in libvirt locks the first byte, so we do locking from a
> higher offset.
>
> Suggested-by: Kevin Wolf <[email protected]>
> Signed-off-by: Fam Zheng <[email protected]>
> BlockDriver bdrv_file = {
> .format_name = "file",
> .protocol_name = "file",
> @@ -1977,7 +2234,11 @@ BlockDriver bdrv_file = {
> .bdrv_get_info = raw_get_info,
> .bdrv_get_allocated_file_size
> = raw_get_allocated_file_size,
> -
> + .bdrv_inactivate = raw_inactivate,
> + .bdrv_invalidate_cache = raw_invalidate_cache,
> + .bdrv_check_perm = raw_check_perm,
> + .bdrv_set_perm = raw_set_perm,
> + .bdrv_abort_perm_update = raw_abort_perm_update,
> .create_opts = &raw_create_opts,
> };
By the way, is it intentional that we apply locking only to bdrv_file,
but not to bdrv_host_device or bdrv_host_cdrom?
Kevin