diff options
author | Alasdair G Kergon <agk@redhat.com> | 2014-04-18 02:46:34 +0100 |
---|---|---|
committer | Alasdair G Kergon <agk@redhat.com> | 2014-04-18 02:46:34 +0100 |
commit | b5f8f452ac563ef07513e770b3202c6dc209443c (patch) | |
tree | c75307dffc7318a7855730afa0589fe851cb688f /lib/locking | |
parent | 17e304e0ac24ba0d1887badfb51afa731aa138e9 (diff) | |
download | lvm2-b5f8f452ac563ef07513e770b3202c6dc209443c.tar.gz |
tools: Add --readonly support.
Offer lock-free access to display virtual machine or clustered VG metadata
while it might be in use.
Diffstat (limited to 'lib/locking')
-rw-r--r-- | lib/locking/locking.c | 5 | ||||
-rw-r--r-- | lib/locking/locking_types.h | 7 | ||||
-rw-r--r-- | lib/locking/no_locking.c | 14 |
3 files changed, 21 insertions, 5 deletions
diff --git a/lib/locking/locking.c b/lib/locking/locking.c index 9433e4027..b5250c10b 100644 --- a/lib/locking/locking.c +++ b/lib/locking/locking.c @@ -284,6 +284,11 @@ int init_locking(int type, struct cmd_context *cmd, int suppress_messages) break; return 1; + case 5: + init_dummy_locking(&_locking, cmd, suppress_messages); + log_verbose("Locking disabled for read-only access."); + return 1; + default: log_error("Unknown locking type requested."); return 0; diff --git a/lib/locking/locking_types.h b/lib/locking/locking_types.h index 300949096..6e4adcc3b 100644 --- a/lib/locking/locking_types.h +++ b/lib/locking/locking_types.h @@ -38,8 +38,11 @@ struct locking_type { /* * Locking types */ -int init_no_locking(struct locking_type *locking, struct cmd_context *cmd, - int suppress_messages); +void init_no_locking(struct locking_type *locking, struct cmd_context *cmd, + int suppress_messages); + +void init_dummy_locking(struct locking_type *locking, struct cmd_context *cmd, + int suppress_messages); int init_readonly_locking(struct locking_type *locking, struct cmd_context *cmd, int suppress_messages); diff --git a/lib/locking/no_locking.c b/lib/locking/no_locking.c index dac2f8085..f7718be5c 100644 --- a/lib/locking/no_locking.c +++ b/lib/locking/no_locking.c @@ -91,7 +91,7 @@ static int _readonly_lock_resource(struct cmd_context *cmd, return _no_lock_resource(cmd, resource, flags, lv); } -int init_no_locking(struct locking_type *locking, struct cmd_context *cmd __attribute__((unused)), +void init_no_locking(struct locking_type *locking, struct cmd_context *cmd __attribute__((unused)), int suppress_messages) { locking->lock_resource = _no_lock_resource; @@ -99,8 +99,6 @@ int init_no_locking(struct locking_type *locking, struct cmd_context *cmd __attr locking->reset_locking = _no_reset_locking; locking->fin_locking = _no_fin_locking; locking->flags = LCK_CLUSTERED; - - return 1; } int init_readonly_locking(struct locking_type *locking, struct cmd_context *cmd __attribute__((unused)), @@ -114,3 +112,13 @@ int init_readonly_locking(struct locking_type *locking, struct cmd_context *cmd return 1; } + +void init_dummy_locking(struct locking_type *locking, struct cmd_context *cmd __attribute__((unused)), + int suppress_messages) +{ + locking->lock_resource = _readonly_lock_resource; + locking->query_resource = _no_query_resource; + locking->reset_locking = _no_reset_locking; + locking->fin_locking = _no_fin_locking; + locking->flags = LCK_CLUSTERED; +} |