mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
lock_driver_lockd: Introduce VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_METADATA flag
This flag causes virtlockd to use different offset when locking the file. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
afd5a27575
commit
21c34b86be
@ -37,6 +37,9 @@ VIR_LOG_INIT("locking.lock_daemon_dispatch");
|
||||
|
||||
#include "lock_daemon_dispatch_stubs.h"
|
||||
|
||||
#define DEFAULT_OFFSET 0
|
||||
#define METADATA_OFFSET 1
|
||||
|
||||
static int
|
||||
virLockSpaceProtocolDispatchAcquireResource(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||
virNetServerClientPtr client,
|
||||
@ -50,13 +53,14 @@ virLockSpaceProtocolDispatchAcquireResource(virNetServerPtr server ATTRIBUTE_UNU
|
||||
virNetServerClientGetPrivateData(client);
|
||||
virLockSpacePtr lockspace;
|
||||
unsigned int newFlags;
|
||||
off_t start = 0;
|
||||
off_t start = DEFAULT_OFFSET;
|
||||
off_t len = 1;
|
||||
|
||||
virMutexLock(&priv->lock);
|
||||
|
||||
virCheckFlagsGoto(VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_SHARED |
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE, cleanup);
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE |
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_METADATA, cleanup);
|
||||
|
||||
if (priv->restricted) {
|
||||
virReportError(VIR_ERR_OPERATION_DENIED, "%s",
|
||||
@ -82,6 +86,8 @@ virLockSpaceProtocolDispatchAcquireResource(virNetServerPtr server ATTRIBUTE_UNU
|
||||
newFlags |= VIR_LOCK_SPACE_ACQUIRE_SHARED;
|
||||
if (flags & VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE)
|
||||
newFlags |= VIR_LOCK_SPACE_ACQUIRE_AUTOCREATE;
|
||||
if (flags & VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_METADATA)
|
||||
start = METADATA_OFFSET;
|
||||
|
||||
if (virLockSpaceAcquireResource(lockspace,
|
||||
args->name,
|
||||
|
@ -723,7 +723,8 @@ static int virLockManagerLockDaemonRelease(virLockManagerPtr lock,
|
||||
|
||||
args.flags &=
|
||||
~(VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_SHARED |
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE);
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE |
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_METADATA);
|
||||
|
||||
if (virNetClientProgramCall(program,
|
||||
client,
|
||||
|
@ -25,6 +25,7 @@
|
||||
enum virLockSpaceProtocolAcquireResourceFlags {
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_SHARED = (1 << 0),
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_AUTOCREATE = (1 << 1),
|
||||
VIR_LOCK_SPACE_PROTOCOL_ACQUIRE_RESOURCE_METADATA = (1 << 2),
|
||||
};
|
||||
|
||||
#endif /* __VIR_LOCK_DRIVER_LOCKD_H__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user