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 ) ;
/*
2002-02-11 14:43:17 +03:00
* 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
*
2002-02-11 14:43:17 +03:00
* LCK_LV :
2002-02-08 17:30:37 +03:00
* Lock / unlock an individual logical volume
2002-02-27 15:26:41 +03:00
* If it ' s active , LCK_WRITE suspends it ; LCK_EXCLUSIVE deactivates it ;
* LCK_NONE unsuspends it .
* LCK_READ activates it .
2002-02-25 15:56:16 +03:00
* char * vol holds " VG_name/LV_uuid "
2002-02-08 17:30:37 +03:00
*
2002-02-25 15:56:16 +03:00
* FIXME : Change to something like
* int lock_vol ( struct cmd_context * cmd , const struct id * id , int flags ) ;
2002-02-08 17:30:37 +03:00
*/
2002-02-25 15:56:16 +03:00
int lock_vol ( struct cmd_context * cmd , const char * vol , int flags ) ;
2002-02-08 17:30:37 +03:00
/*
* Lock type
*/
# define LCK_TYPE_MASK 0x000000FF
# define LCK_NONE 0x00000000
# define LCK_READ 0x00000001
# define LCK_WRITE 0x00000002
2002-02-27 15:26:41 +03:00
# define LCK_EXCL 0x00000003
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
2002-02-27 15:26:41 +03:00
/*
* Common combinations
*/
# define LCK_VG_READ (LCK_VG | LCK_READ)
# define LCK_VG_WRITE (LCK_VG | LCK_WRITE)
# define LCK_VG_UNLOCK (LCK_VG | LCK_NONE)
# define LCK_LV_DEACTIVATE (LCK_LV | LCK_EXCL)
# define LCK_LV_SUSPEND (LCK_LV | LCK_WRITE)
# define LCK_LV_ACTIVATE (LCK_LV | LCK_READ)
# define LCK_LV_UNLOCK (LCK_LV | LCK_NONE)