1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00
lvm2/lib/locking/locking.h

68 lines
1.7 KiB
C
Raw Normal View History

2002-02-08 17:30:37 +03:00
/*
* 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:
2002-02-08 17:30:37 +03:00
* Lock/unlock on-disk volume group data
* Use "" to lock orphan PVs
* char *vol holds volume group name
*
* LCK_LV:
2002-02-08 17:30:37 +03:00
* Lock/unlock an individual logical volume
* char *vol holds lvid
2002-02-08 17:30:37 +03:00
*/
int lock_vol(struct cmd_context *cmd, const char *vol, int flags);
2002-02-08 17:30:37 +03:00
/*
* Lock type - these numbers are the same as VMS and the IBM DLM
2002-02-08 17:30:37 +03:00
*/
#define LCK_TYPE_MASK 0x000000FF
#define LCK_NULL 0x00000000 /* LCK$_NLMODE */
#define LCK_READ 0x00000001 /* LCK$_CRMODE */
/* LCK$_CWMODE */
/* LCK$_PRMODE */
#define LCK_WRITE 0x00000004 /* LCK$_PWMODE */
#define LCK_EXCL 0x00000005 /* LCK$_EXMODE */
#define LCK_UNLOCK 0x00000010 /* This is ours */
2002-02-08 17:30:37 +03:00
/*
* Lock scope
*/
#define LCK_SCOPE_MASK 0x0000FF00
#define LCK_VG 0x00000000
#define LCK_LV 0x00000100
/*
* Lock bits
*/
#define LCK_NONBLOCK 0x00010000 /* Don't block waiting for lock? */
#define LCK_HOLD 0x00020000 /* Hold lock when lock_vol returns? */
2002-02-08 17:30:37 +03:00
/*
* Common combinations
*/
#define LCK_VG_READ (LCK_VG | LCK_READ | LCK_HOLD)
#define LCK_VG_WRITE (LCK_VG | LCK_WRITE | LCK_HOLD)
2002-04-04 15:18:45 +04:00
#define LCK_VG_UNLOCK (LCK_VG | LCK_UNLOCK)
#define LCK_LV_DEACTIVATE (LCK_LV | LCK_EXCL)
#define LCK_LV_SUSPEND (LCK_LV | LCK_WRITE)
#define LCK_LV_ACTIVATE (LCK_LV | LCK_READ)
2002-04-04 15:18:45 +04:00
#define LCK_LV_UNLOCK (LCK_LV | LCK_UNLOCK)
#define unlock_lv(cmd, vol) lock_vol(cmd, vol, LCK_LV_UNLOCK)
#define unlock_vg(cmd, vol) lock_vol(cmd, vol, LCK_VG_UNLOCK)