--- /dev/null
+/*
+ * 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
+
--- /dev/null
+/*
+ * 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);
+