Zdenek Kabelac
099aca0311
Check allocated pointers
...
Test pointers from allocation against NULL.
Error paths should be checked, some of them probably need
some extesions.
2012-03-01 22:52:59 +00:00
Alasdair Kergon
7126d8c21b
Reflect new file locations, include file updates etc.
2012-02-28 18:35:04 +00:00
Zdenek Kabelac
d2e33bed94
Add assert for oldname
...
Code cannot proceed if oldname would be NULL.
Since lvmetad currently doesn't use logging mechanism of lvm to report
internal errors - stay with current code style of lvmetad which uses
plain asserts for cases like this.
2012-02-27 10:19:00 +00:00
Zdenek Kabelac
0c35eb915c
Move allocation after check for vgid
...
so there is no mem leak on this error path.
Also actually check if the hash exists.
2012-02-27 10:10:43 +00:00
Petr Rockai
dc4a15bb69
Fix server-side leaks in lvmetad.
2012-02-24 00:24:37 +00:00
Petr Rockai
2a11eea2e1
Clean up the lvmetad state more thoroughly upon shutdown.
2012-02-24 00:11:59 +00:00
Petr Rockai
3f694b1265
Couple of improvements in the daemon (common + lvmetad) code:
...
- some client-side memory leak fixes
- announce and check protocols and protocol versions
2012-02-23 23:52:11 +00:00
Zdenek Kabelac
b6c5ea358e
Some reformating for lvmetad uddates
...
cleanup gcc warning,
use PRIu64
header cleanups
const pointer fixes.
2012-02-23 17:59:32 +00:00
Petr Rockai
dae0822698
The lvmetad client-side integration. Only active when use_lvmetad = 1 is set in
...
lvm.conf *and* lvmetad is running.
2012-02-23 13:11:07 +00:00
Petr Rockai
182d1f60d2
Also use DEFAULT_RUN_DIR for the lvmetad socket on the client side.
2012-02-23 11:40:24 +00:00
Petr Rockai
daa0000a47
Tweak lvmetad a bit more:
...
- allow at most one PV on any given device
- allow PV lookup by device
- merge the pvmeta info into VG metadata when responding to vg_lookup
2012-02-21 09:19:08 +00:00
Petr Rockai
64a20df41c
Drop the now-redundant pvid_to_status hash.
2012-02-15 17:37:09 +00:00
Petr Rockai
ff455b1806
Update lvmetad: use device major/minor pair to track devices. Keep a pvmeta
...
config tree per PV which is mostly provided by the client, so it can be used to
keep track of things like label_sector, PV format, mda count / offsets and so
on.
2012-02-15 17:30:07 +00:00
Petr Rockai
12dba91d9d
(lvmetad) Remove unused variable.
2012-02-15 14:15:50 +00:00
Petr Rockai
23ce26fe22
In lvmetad, also nuke VGs when all their PVs are stolen by another VG (vgmerge
...
& vgsplit do this).
2012-02-15 14:06:48 +00:00
Petr Rockai
69a82801ef
lvmetad server-side update:
...
- rename the hashes to be explicit about the mapping
- add VG/PV listing calls to the protocol
- cache slightly more of the per-PV state
- filter cached metadata
- compare the metadata upon metadata_update
2012-02-15 11:43:06 +00:00
Zdenek Kabelac
99e2a2e156
Add some FIXME around allocation code
...
Remove also unreachable break..
2012-02-13 14:25:14 +00:00
Zdenek Kabelac
d85050930b
Add breaks for cases
2012-01-25 21:42:09 +00:00
Zdenek Kabelac
a16915cb0b
Clean var declarations to the front of the function
2012-01-25 13:06:57 +00:00
Petr Rockai
cf1b05e7dd
Beef up the lvmetad code with more functionality and a bunch of bugfixes. There
...
used to be a few mis-ordered memory accesses (release and access in the next
block). Fix that set_flag could have sometimes corrupted the flags being
modified.
A few issues with metadata tracking are sorted out as well now, and there are
only a few problems remaining before we can integrate lvmetad, mostly on the
client side:
- metadata areas need to be tracked in lvmetad (most likely to be addressed
through an extension of metadata, meaning no special support in lvmetad would
be needed)
- non-udev scanning code needs to be taught about telling lvmetad about device
disappearance (pvscan most importantly)
- this last item also needs to mesh with metadata inconsistencies and
suddenly-incomplete volume groups (aux disable_dev in tests); udev-based
scanning should address this separately and more elegantly
2012-01-16 08:25:32 +00:00
Petr Rockai
f401655ee8
Fix up lvmetad for the minor API change in dm_config_create.
2011-12-18 22:31:10 +00:00
Alasdair Kergon
594753751a
Only use built-in stack size in clvmd - ignore lvm.conf.
2011-12-08 21:24:08 +00:00
Zdenek Kabelac
ade2b9345f
Cleanup for lvmetad passing uninit structure
...
Shown by clang analyzer.
2011-10-30 21:58:59 +00:00
Zdenek Kabelac
13dd31381c
Use Makefile for daemmons/common library.
...
Next iteration for better fit of lvmetad compilation.
Move build of libdaemon.a into common subdir Makefile.
libdaemon.a is device-mapper target.
Build and install lvmetad as lvm2 target.
2011-09-24 20:57:49 +00:00
Zdenek Kabelac
11dd5cf2aa
Few more updates to lvmetad build deps
...
It seem lvmetad deps must be expressed after the include.
Also adding lvmetad deps to device-mapper target in daemons dir.
2011-09-19 00:29:11 +00:00
Zdenek Kabelac
de154812a9
Build fixes for lvmetad
...
Should now be giving better build order and install lvmetad.
2011-09-17 14:50:22 +00:00
Zdenek Kabelac
1b8724d866
Fix for gcc compilation warnings
...
and put _XOPEN_SOURCE so pthread_mutexattr is properly defined.
2011-09-17 13:33:51 +00:00
Zdenek Kabelac
49cd515cd2
Compile fix
...
Reflecting change in dm_config_value float r -> float f.
2011-09-02 11:04:12 +00:00
Petr Rockai
e68a6fbf20
Fix warnings and constness handling in lvmetad-core (adjusting the
...
dm_config_find_node to give non-const node pointer, since that better reflects
the contract of that function).
2011-08-31 12:39:58 +00:00
Petr Rockai
d008fc86a0
Get rid of the old lvmetad Makefile.
2011-08-31 11:44:27 +00:00
Petr Rockai
615534d305
A compromise integration of LVMetaD into the build: I have kept all the
...
daemon/common code in a single libdaemon.a, which is completely private. This
is currently linked into the lvmetad binary, and will be linked into LVM (the
client part, since static linking only picks up only symbols that are actually
used). I have also added --enable/disable-lvmetad to ./configure; although the
current default is off, I expect this to be flipped to on shortly. There's no
LVM-side support yet, but when there is, even when built, it'll still need to
be enabled by an lvm.conf option.
2011-08-31 11:31:57 +00:00
Petr Rockai
04e647aa84
Adapt LVMetaD to use the new dm_config interfaces.
2011-08-30 15:44:01 +00:00
Petr Rockai
1d9c083fcc
lvmetad: Edit the MISSING_PV flags only after making a "reply" copy of the
...
metadata, which is then serialised and discarded. This fixes a couple of
outstanding TODO items about handling the MISSING flags correctly.
2011-07-25 17:59:50 +00:00
Petr Rockai
059ee25951
lvmetad: Check integrity of multiple metadata copies, i.e. ensure that seqno
...
equality implies metadata equality. Signal error in response to any update
requests that try to overwrite metadata without providing a higher seqno.
2011-07-25 15:51:51 +00:00
Petr Rockai
9474992482
lvmetad: A couple of TODOs, and fix a few trivial memory leaks.
2011-07-25 15:33:04 +00:00
Petr Rockai
c2ca1a707a
lvmetad: Obliterate vg_status by returning the same information from
...
update_pv_status, saving a dozen lines of code and execution time of one
walkthrough of the PV list.
2011-07-20 21:33:41 +00:00
Petr Rockai
bc0a902434
lvmetad: Fix a possible infinite loop in vg_status.
2011-07-20 21:27:28 +00:00
Petr Rockai
fba6c62b84
lvmetad: Robustify update_pv_status and remove an useless lookup.
2011-07-20 21:26:18 +00:00
Petr Rockai
0cfb99d385
First stab at making lvmetad-core threadsafe. The current design should allow
...
very reasonable amount of parallel access, although the hash tables may become
a point of contention under heavy loads. Nevertheless, there should be orders
of magnitude less contention on the hash table locks than we currently have on
block device scanning.
2011-07-20 21:23:43 +00:00
Petr Rockai
dcbf5a3b5d
lvmetad: Avoid stale PV -> VG mappings on metadata update.
2011-07-20 18:45:32 +00:00
Petr Rockai
cd7bca83e1
Optimise PV -> VG lookups by using a UUID (hash) map.
2011-07-20 18:34:57 +00:00
Petr Rockai
652e0757c9
Free up allocated memory before exiting, in lvmetad.
2011-07-20 18:24:49 +00:00
Petr Rockai
42e23dbf6c
Can't have a global memory pool in lvmetad (that would constitute an ongoing
...
memory leak) => remove it (it's been unused anyway).
2011-07-20 16:49:21 +00:00
Petr Rockai
50ff3c076e
Make lvmetad also report VGID in reply when adding a PV without MDAs (this
...
obviously only works for VGs that already had at least some MDA discovered).
2011-07-20 16:46:40 +00:00
Petr Rockai
4eb53158e5
Add code to lvmetad's testclient that scans an actual physical device,
...
effectively emulating a future "pvscan --lvmetad" command.
2011-07-20 15:15:41 +00:00
Petr Rockai
c33d33bab7
Make lvmetad report the VG ID and status (complete, partial) in reply to pv_add
...
requests.
2011-07-20 15:14:17 +00:00
Petr Rockai
2ef620ec7f
Towards MISSING (PV) flag management in lvmetad.
2011-07-19 19:15:22 +00:00
Petr Rockai
3c238baf03
Work out some more details in metadata update in lvmetad.
2011-07-19 16:48:13 +00:00
Petr Rockai
9796bd4db6
More work on cache maintenance code in lvmetad: keep track of PV status.
2011-07-19 14:13:59 +00:00
Petr Rockai
252853560c
Start filling in the core LVMetaD functionality and the corresponding
...
testclient bits.
2011-07-18 14:48:30 +00:00
Alasdair Kergon
730cfc74b8
move doc to doc dir
2011-07-08 18:55:28 +00:00
Petr Rockai
94bb67ab37
Add int/str lookup routines specific to the reply (in client) and request (in
...
server) for nicer-looking code (thin wrapping around find_config_{int,str}).
2011-06-27 14:03:58 +00:00
Petr Rockai
aaca7f111f
Also parse the config_tree on the client end (daemon-client.c).
2011-06-27 13:58:11 +00:00
Petr Rockai
55e300716f
Parse the incoming config tree in daemon-server.c, providing the
...
daemon-specific handler with a struct config_tree pointer to look things up in.
2011-06-27 13:46:45 +00:00
Petr Rockai
9925977b07
LVMetaD build hack: link to lvm-internal &c. and add a simple test script.
2011-06-27 13:44:33 +00:00
Petr Rockai
4fcbeed6ef
Implement daemon_send_simple and use it in the testclient.
2011-06-27 13:15:49 +00:00
Petr Rockai
ea32ca07e7
Call daemon_close before exit in the testclient.
2011-06-27 12:27:34 +00:00
Petr Rockai
acf3616b3a
Add a skeleton for lvmetad, a test client, and a temporary Makefile to build
...
them. These are currently mostly for testing the daemon-common code. LVMetaD
functionality is expected to trickle in soon though.
2011-06-14 02:36:38 +00:00
Milan Broz
7c1a2417f5
Use /var/run/lvm for lvmetad socket.
2011-06-02 08:58:05 +00:00
Petr Rockai
ba7d33be9c
Mention code layout in lvmetad DESIGN.
2011-05-23 14:46:48 +00:00
Petr Rockai
04507b0ace
First go at the lvmetad client-side interface.
2011-05-13 08:17:26 +00:00
Petr Rockai
f03e3ac15b
Initial design document for LVMetaD, building on the draft from June of last
...
year, incorporating the outcomes of today's and yesterday's discussions.
2011-05-12 17:49:46 +00:00