From d1ad45cc416b99d31abc61fe444d360968cc3d8e Mon Sep 17 00:00:00 2001 From: Alasdair Kergon Date: Fri, 8 Feb 2002 14:30:37 +0000 Subject: [PATCH] Locking prototypes. --- lib/locking/locking.h | 50 +++++++++++++++++++++++++++++++++++++ lib/locking/locking_types.h | 29 +++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 lib/locking/locking.h create mode 100644 lib/locking/locking_types.h diff --git a/lib/locking/locking.h b/lib/locking/locking.h new file mode 100644 index 000000000..08233c96b --- /dev/null +++ b/lib/locking/locking.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2001 Sistina Software (UK) Limited. + * + * This file is released under the LGPL. + * + */ + +#include "metadata.h" +#include "uuid.h" +#include "config.h" + +int init_locking(int type, struct config_file *cf); +void fin_locking(void); + +/* + * LCK_VG: + * Lock/unlock on-disk volume group data + * Use "" to lock orphan PVs + * char *vol holds volume group name + * + * LCK_LV: + * Lock/unlock an individual logical volume + * Also suspends/resumes the LV if it's active. + * struct logical_volume *vol + * + * FIXME: Change to + * int lock_vol(struct id *id, int flags); + */ +int lock_vol(void *vol, int flags); + +/* + * Lock type + */ +#define LCK_TYPE_MASK 0x000000FF +#define LCK_NONE 0x00000000 +#define LCK_READ 0x00000001 +#define LCK_WRITE 0x00000002 + +/* + * Lock scope + */ +#define LCK_SCOPE_MASK 0x0000FF00 +#define LCK_VG 0x00000000 +#define LCK_LV 0x00000100 + +/* + * Lock bits + */ +#define LCK_NONBLOCK 0x00010000 + diff --git a/lib/locking/locking_types.h b/lib/locking/locking_types.h new file mode 100644 index 000000000..4b677f7e8 --- /dev/null +++ b/lib/locking/locking_types.h @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2001 Sistina Software (UK) Limited. + * + * This file is released under the LGPL. + * + */ + +#include "metadata.h" +#include "config.h" + +typedef int (*lock_resource_fn)(const char *resource, int flags); + +typedef void (*fin_lock_fn)(void); + + +struct locking_type { + lock_resource_fn lock_resource; + + fin_lock_fn fin_locking; +}; + + +/* + * Locking types + */ +int init_file_locking(struct locking_type *locking, struct config_file *cf); + +int init_external_locking(struct locking_type *locking, struct config_file *cf); + -- 2.43.5