summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* [WIP] spec+lvmpolld: attempt to add polld to specdev-mcsontos-lvmpolld-testMarian Csontos2015-06-024-0/+18
|
* lvmlockd: fix syslog optionDavid Teigland2015-06-011-14/+63
| | | | | Use standard syslog level names as option args to specify the level at which to send to syslog.
* vgcreate/vgchange: wait for lock start by defaultDavid Teigland2015-06-012-3/+16
| | | | | | | By default, vgcreate and vgchange --lock-start will wait for the lockspace to start. Adding --lock-opt nowait will cause them not to wait. The waiting can always be canceled by Ctrl-C without any harm.
* lib lvmlockd: retry busy locksDavid Teigland2015-06-013-0/+36
| | | | | | | | | | | By default retry lock operations that return EAGAIN because the lock is held by another host. These retries occur at the client/command level, and can be adjusted using global/lock_retries. lvmlockd already has some automatic retries to handle most incidental lock conflicts.
* man lvmlockd: remove section about recovering lost locksDavid Teigland2015-06-011-46/+48
|
* lib lvmlockd: print a warning when overriding lockingDavid Teigland2015-06-011-19/+32
| | | | | In addition to requiring lvm.conf configuration to override lock modes, also print a warning if it is done.
* client lvmlockd: improve warnings during initDavid Teigland2015-06-011-7/+14
| | | | | Print one simple warning message if the command cannot properly use lvmlockd.
* lib lvmlockd: add comments about locking functionsDavid Teigland2015-06-011-3/+111
| | | | | Add explanations of when and why to use the basic lvmlockd locking functions.
* tools: add comments about the global lockdev-dct-lvmlockd-AJDavid Teigland2015-05-2918-12/+53
| | | | | State the reason that the global lock is needed in each place it is taken.
* test: structure for lvmlockd testingDavid Teigland2015-05-2913-0/+334
| | | | | | | | | | | | | | | | | | | | | | | make check_lvmlockd_sanlock T=shell/sanlock-hello-world.sh will run: shell/sanlock-prepare.sh to prepare sanlock and lvmlockd on the system shell/sanlock-hello-work.sh to test using lvmlockd and sanlock shell/sanlock-remove.sh to undo the things from sanlock-prepare.sh TODO: - use alias vgcreate="vgcreate --lock-type sanlock" in sanlock-prepare so that existing shell tests can just call vgcreate can be used to create and test sanlock vgs. - when using existing shell tests with sanlock, we need prepare_devs/prepare_pvs to create adequately large devs. See the necessity of sanlock-hello-world of specifying a large device size. This is needed for all the ondisk leases that are created by vgcreate. - get check_lvmlockd_dlm working
* vgcreate: option to allow waiting for lock startDavid Teigland2015-05-292-4/+18
| | | | | | | vgcreate with '--lock-opt wait' will cause the command to wait for the lock start to complete before returning, the same as when starting explicitly with 'vgchange --lock-start --lock-opt wait'
* lib lvmlockd: fix segfault in logging result flagsDavid Teigland2015-05-291-10/+8
|
* lvmlockd: clean up the use/connect/connected logicDavid Teigland2015-05-296-110/+105
| | | | | Get rid of the round about logic that was copied from lvmetad. Make it simple and clear.
* lvmlockd: fix dm checks of active lvs and add uuid checkDavid Teigland2015-05-291-8/+76
| | | | | | | The split names function wasn't used correct, it just accidentally worked before. Check for the LVM prefix on dm uuids.
* report: display lock_type and lock_argsDavid Teigland2015-05-297-0/+78
| | | | | -o locktype,lockargs can be used to display the lock_type and lock_args of VGs or LVs.
* lvmlock: drop old -c optionDavid Teigland2015-05-291-95/+3
| | | | was used for early testing, no purpose any more.
* lvmlockd: use libdevmapper to get active LVsDavid Teigland2015-05-292-50/+72
| | | | | | | rather than reading /dev dirs. This identifies LVs that need to have locks adopted if lvmlockd is restarted while in use.
* lvmlockd: use xlate.h for endian macrosDavid Teigland2015-05-294-37/+65
| | | | and add the clearer macros to xlate.h
* lvmlockd: include time.h and link with rtDavid Teigland2015-05-282-1/+2
|
* lvmlockd: rename socket variableDavid Teigland2015-05-281-2/+2
| | | | to avoid shadowing warning
* lvmlockd: fix setup_structsDavid Teigland2015-05-282-5/+47
| | | | | | | The alloc/free loop was not populating the list of unused structs. Also print the number of structs when reporting info from daemon.
* lvmlockd: apply consistent buffer strategy to clientDavid Teigland2015-05-282-2/+2
|
* lvmlockd: put GNU_SOURCE in source filesDavid Teigland2015-05-283-1/+3
|
* lvmlockd: use libsanlock_clientDavid Teigland2015-05-281-1/+1
| | | | instead of the full libsanlock which isn't needed
* lib: define constant for NO_LOCKD_RESULTDavid Teigland2015-05-281-4/+9
|
* lib: rename flags variablesDavid Teigland2015-05-281-59/+59
|
* lib: use static inline stubs for lockd functionsDavid Teigland2015-05-281-19/+100
| | | | when lvm is built without lvmlockd enabled.
* configure: use pc checks for lvmlockdDavid Teigland2015-05-281-0/+7
|
* lvconvert, pvmove, polldaemon: add locking for lvmlockdDavid Teigland2015-05-283-21/+210
|
* scripts: lvmlockd related service filesDavid Teigland2015-05-282-0/+43
|
* man: add lvmlockd man pageDavid Teigland2015-05-281-0/+794
|
* liblvm: new unused arg for vg_readDavid Teigland2015-05-281-1/+1
|
* tools: use locks from lvmlockdDavid Teigland2015-05-2822-76/+765
|
* tools: locking support for toolsDavid Teigland2015-05-284-16/+61
|
* lib: use locks from lvmlockdDavid Teigland2015-05-2813-31/+310
|
* lib: client side locking interface to lvmlockdDavid Teigland2015-05-282-0/+2425
|
* lvmlockd: add daemonDavid Teigland2015-05-287-0/+8960
|
* libdaemon: allow main processing function to be specifiedDavid Teigland2015-05-282-1/+8
|
* build: standard configure and Makefile for lvmlockdDavid Teigland2015-05-284-2/+55
|
* metadata: add lock_type and lock_argsDavid Teigland2015-05-284-1/+29
| | | | | | | | | Structs and metadata for VG and LV each have a lock_type string and a lock_args string. The VG lock_type is inherited by its LVs, but special LVs that are not locked will have no lock_type set.
* lvmcache: reread a VG if the lvmetad copy is staleDavid Teigland2015-05-284-57/+165
| | | | | | | | | | | | | | | | | | | | | and update the lvmetad copy after it is reread from disk. To test this: - Create VG foo that is visible to two hosts and usable by both. - On both run 'lvmeta vg_lookup_name foo' to see the cached copy of foo and its seqno. Say the seqno is 8. - On host1 run 'lvcreate -n lv1 -L1G foo'. - On host1 run 'lvmeta vg_lookup_name foo' to see the new version of foo in lvmetad. It should have seqno 9. - On host2 run 'lvmeta vg_lookup_name foo' to see the old cached version of foo. It should have seqno 8. - On host2 run 'lvmeta set_vg_version <uuid of foo> 9'. - On host2 run 'lvmeta vg_lookup_name foo' to see that the vg_invalid config node is reported along with the old cached version of foo. - On host2 run 'lvs foo'. It should reread foo from disk and display lv1. - On host2 run 'lvmeta vg_lookup_name foo' to see that the cached version of foo is now updated to seqno 9, and the vg_invalid node is not reported.
* lvmcache: add function to validate and update global cacheDavid Teigland2015-05-282-0/+88
| | | | | Will be used in later patches to check and update the local lvmetad global cache when needed.
* lvmeta: new program to interact with lvmetadDavid Teigland2015-05-282-1/+188
| | | | This is useful for testing and debugging.
* lvmetad: add invalidation methodDavid Teigland2015-05-281-1/+201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the ability to invalidate global or individual VG metadata. The invalid state is returned to lvm commands along with the metadata. This allows lvm commands to detect stale metadata from the cache and reread the latest metadata from disk (in a subsequent patch.) These changes do not change the protocol or compatibility between lvm commands and lvmetad. Global information ------------------ Global information refers to metadata that is not isolated to a single VG , e.g. the list of vg names, or the list of pvs. When an external system, e.g. a locking system, detects that global information has been changed from another host (e.g. a new vg has been created) it sends lvmetad the message: set_global_info: global_invalid=1. lvmetad sets the global invalid flag to indicate that its cached data is stale. When lvm commands request information from lvmetad, lvmetad returns the cached information, along with an additional top-level config node called "global_invalid". This new info tells the lvm command that the cached information is stale. When an lvm command sees global_invalid from lvmated, it knows it should rescan devices and update lvmetad with the latest information. When this is complete, it sends lvmetad the message: set_global_info: global_invalid=0, and lvmetad clears the global invalid flag. Further lvm commands will use the lvmetad cache until it is invalidated again. The most common commands that cause global invalidation are vgcreate and vgextend. These are uncommon compared to commands that report global information, e.g. vgs. So, the percentage of lvmetad replies containing global_invalid should be very small. VG information -------------- VG information refers to metadata that is isolated to a single VG, e.g. an LV or the size of an LV. When an external system determines that VG information has been changed from another host (e.g. an lvcreate or lvresize), it sends lvmetad the message: set_vg_info: uuid=X version=N. X is the VG uuid, and N is the latest VG seqno that was written. lvmetad checks the seqno of its cached VG, and if the version from the message is newer, it sets an invalid flag for the cached VG. The invalid flag, along with the newer seqno are saved in a new vg_info struct. When lvm commands request VG metadata from lvmetad, lvmetad includes the invalid flag along with the VG metadata. The lvm command checks for this flag, and rereads the VG from disk if set. The VG read from disk is sent to lvmetad. lvmetad sees that the seqno in the new version matches the seqno from the last set_vg_info message, and clears the vg invalid flag. Further lvm commands will use the VG metadata from lvmetad until it is next invalidated.
* WHATS_NEW: various updatesOndrej Kozina2015-05-191-0/+3
|
* polldaemon.c: do not report error when LV not foundOndrej Kozina2015-05-191-10/+8
| | | | | | | | | | currently in wait_for_single_lv() fn trying to poll missing pvmove LV is considered success. It may have been already finished by another instance of polldaemon. either by another forked off polldaemon or by lvmpolld. Let's try to handle the mirror conversion and snapshot merge the same way.
* lvconvert.c: drop get_vg_lock_and_logical_volume fnDavid Teigland2015-05-191-48/+33
|
* pvmove.c: code cleanupDavid Teigland2015-05-191-12/+17
|
* polldaemon: remove get_copy_vg and get_copy_lv wrappersDavid Teigland2015-05-195-59/+0
| | | | | | | | These wrappers have been replaced by direct calls to vg_read() and find_lv() in previous commits. This commit should have no functional impact since all bits were already unreachable.
* polldaemon.c: call find_lv directlyOndrej Kozina2015-05-191-4/+20
|