~ubuntu-branches/ubuntu/saucy/lvm2/saucy-proposed

« back to all changes in this revision

Viewing changes to lib/config/config.h

  • Committer: Package Import Robot
  • Author(s): Dmitrijs Ledkovs
  • Date: 2012-08-14 14:35:57 UTC
  • mfrom: (3.1.25 sid)
  • Revision ID: package-import@ubuntu.com-20120814143557-93aill2tp3kf3o30
Tags: 2.02.95-4ubuntu1
* Merge from Debian unstable, remaining changes:
  - debian/patches/avoid-dev-block.patch: Prefer any other device name over
    names in /dev/block/ since lvm.conf won't handle this.
  - debian/rules:
    - copy .po file to .pot file for Rosetta (Ubuntu specific).
  - debian/{dmsetup,lvm2}-udeb.install:
    - install initramfs and udev hooks in udebs (Debian bug 504341).
  - auto-start VGs as their PVs are discovered (Ubuntu specific):
    - add debian/tree/lvm2/lib/udev/rules.d/85-lvm2.rules: use watershed plus
      the sledgehammer of vgscan/vgchange to turn on VGs as they come online.
    - debian/tree/lvm2/usr/share/initramfs-tools/scripts/hooks/lvm2:
      - add 85-lvm2.rules to the list of udev rules to copy.
      - depend on udev.
    - debian/control:
      - add versioned Depend on watershed in lvm2 for udev rules.
      - add Depends on watershed-udeb in lvm2-udeb for udev rules.
      - add versioned Depend/Breaks on udev in dmsetup for udev rules.
      - add Depend on initramfs-tools in dmsetup so system is not potentially
        rendered unbootable by out-of-order dpkg configuration.
    - debian/rules:
      - do not install local-top scripts since Ubuntu mounts root using udev.
      - do not install init scripts for lvm2, since udev starts LVM.
    - debian/lvm2.postinst: handle missing lvm2 init script.
    - debian/tree/dmsetup/lib/udev/rules.d/60-persistent-storage-dm.rules:
      watch dm devices for changes with inotify
  - add mountroot failure hooks to help fix bad boots (Debian bug 468115):
    - debian/tree/lvm2/usr/share/initramfs-tools/scripts/init-premount/lvm2
  - remaining changes to upstream event manager packages (Debian bug 514706):
    - debian/rules:
      - enable dmeventd during configure.
    - debian/dmeventd.{8,manpages}: install dmeventd files.
  - rename debian/clvm.defaults to debian/clvm.default so it is installed
    correctly.
  - debian/control: add dmsetup-udeb to libdevmapper1.02.1-udeb recommends.
  - debian/rules: make sure dmsetup and lvm2 initramfs-tools scripts are
    executable.  When the Ubuntu-specific ones are added with a patch,
    they may lose their executable bit.
  - Add and install clvmd resource agent
  - Add dependency on libudev-dev to libdevmapper-dev so that the .pc file
    works.
  - debian/{clvmd.ra,clvm.init}:
    - create /run/lvm if it doesn't exist.
  - debian/clvm.init:
    - exit 3 if not running on status action.
  - Call dh_installman so that our dmeventd manpage actually gets installed
  - Install the missing fsadm manpage.

 * libdevmapper-dev:
  - move .so symlinks and pkgconfig files to multiarched locations.
  - mark libdevmapper-dev M-A: same

 * libdevmapper-event1.02.1:
  - Add Breaks: dmeventd (<< 2.02.95-4ubuntu1) due to debian symbol rename

 * debian/lvm2.{preinst,postinst,postrm}:
  - Implement removal of obsolete /etc/init.d/lvm2 conffile, which
    should not have been re-introduced in Quantal.

 * Dropped Changes, included in Debian:
  - Mostly included packages for upstream event manager (Debian bug 514706).
  - debian/patches/rules-subdir.patch: removed as reordering will cause
    build failure with dmeventd.
  - debian/patches/libdm-event-static.patch: removed as other static libs
    aren't being built anymore either.
  - Update symbols for libdevmapper-event.
  - Update libdevmapper-event, dmeventd descriptions to match Debian
    boilerplate.

 * Disappeared Changes:
  - Don't install documentation in udebs. No diff found, but no docs are
    installed into udebs either.

 * Resurected Changes:
  - corrected dropping the wrong init script. Now clvm.init is shipped
    and lvm2.init is dropped in favor of udev rules as per original
    intention (LP: #1037033).

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
struct device;
22
22
struct cmd_context;
23
23
 
24
 
enum {
25
 
        CFG_STRING,
26
 
        CFG_FLOAT,
27
 
        CFG_INT,
28
 
        CFG_EMPTY_ARRAY
29
 
};
30
 
 
31
 
struct config_value {
32
 
        int type;
33
 
        union {
34
 
                int64_t i;
35
 
                float r;
36
 
                const char *str;
37
 
        } v;
38
 
        struct config_value *next;      /* for arrays */
39
 
};
40
 
 
41
 
struct config_node {
42
 
        const char *key;
43
 
        struct config_node *parent, *sib, *child;
44
 
        struct config_value *v;
45
 
};
46
 
 
47
 
struct config_tree {
48
 
        struct config_node *root;
49
 
};
50
 
 
51
 
struct config_tree_list {
52
 
        struct dm_list list;
53
 
        struct config_tree *cft;
54
 
};
55
 
 
56
 
struct config_tree *create_config_tree(const char *filename, int keep_open);
57
 
struct config_tree *create_config_tree_from_string(const char *config_settings);
58
 
 
59
24
int override_config_tree_from_string(struct cmd_context *cmd,
60
25
                                     const char *config_settings);
61
 
void destroy_config_tree(struct config_tree *cft);
 
26
struct dm_config_tree *remove_overridden_config_tree(struct cmd_context *cmd);
62
27
 
63
28
typedef uint32_t (*checksum_fn_t) (uint32_t initial, const uint8_t *buf, uint32_t size);
64
29
 
65
 
int read_config_fd(struct config_tree *cft, struct device *dev,
66
 
                   off_t offset, size_t size, off_t offset2, size_t size2,
67
 
                   checksum_fn_t checksum_fn, uint32_t checksum);
68
 
 
69
 
int read_config_file(struct config_tree *cft);
70
 
int write_config_file(struct config_tree *cft, const char *file,
71
 
                      int argc, char **argv);
72
 
 
73
 
typedef int (*putline_fn)(const char *line, void *baton);
74
 
int write_config_node(const struct config_node *cn, putline_fn putline, void *baton);
75
 
 
76
 
time_t config_file_timestamp(struct config_tree *cft);
77
 
int config_file_changed(struct config_tree *cft);
78
 
int merge_config_tree(struct cmd_context *cmd, struct config_tree *cft,
79
 
                      struct config_tree *newdata);
80
 
 
81
 
const struct config_node *find_config_node(const struct config_node *cn,
82
 
                                           const char *path);
83
 
const char *find_config_str(const struct config_node *cn, const char *path,
84
 
                            const char *fail);
85
 
int find_config_int(const struct config_node *cn, const char *path, int fail);
86
 
float find_config_float(const struct config_node *cn, const char *path,
87
 
                        float fail);
 
30
struct dm_config_tree *config_file_open(const char *filename, int keep_open);
 
31
int config_file_read_fd(struct dm_config_tree *cft, struct device *dev,
 
32
                        off_t offset, size_t size, off_t offset2, size_t size2,
 
33
                        checksum_fn_t checksum_fn, uint32_t checksum);
 
34
        int config_file_read(struct dm_config_tree *cft);
 
35
int config_write(struct dm_config_tree *cft, const char *file,
 
36
                 int argc, char **argv);
 
37
void config_file_destroy(struct dm_config_tree *cft);
 
38
 
 
39
time_t config_file_timestamp(struct dm_config_tree *cft);
 
40
int config_file_changed(struct dm_config_tree *cft);
 
41
int config_file_check(struct dm_config_tree *cft, const char **filename, struct stat *info);
 
42
 
 
43
 
 
44
int merge_config_tree(struct cmd_context *cmd, struct dm_config_tree *cft,
 
45
                      struct dm_config_tree *newdata);
88
46
 
89
47
/*
90
48
 * These versions check an override tree, if present, first.
91
49
 */
92
 
const struct config_node *find_config_tree_node(struct cmd_context *cmd,
93
 
                                                const char *path);
 
50
const struct dm_config_node *find_config_tree_node(struct cmd_context *cmd,
 
51
                                                   const char *path);
94
52
const char *find_config_tree_str(struct cmd_context *cmd,
95
53
                                 const char *path, const char *fail);
 
54
const char *find_config_tree_str_allow_empty(struct cmd_context *cmd,
 
55
                                             const char *path, const char *fail);
96
56
int find_config_tree_int(struct cmd_context *cmd, const char *path,
97
57
                         int fail);
98
58
int64_t find_config_tree_int64(struct cmd_context *cmd, const char *path,
100
60
float find_config_tree_float(struct cmd_context *cmd, const char *path,
101
61
                             float fail);
102
62
 
103
 
/*
104
 
 * Understands (0, ~0), (y, n), (yes, no), (on,
105
 
 * off), (true, false).
106
 
 */
107
 
int find_config_bool(const struct config_node *cn, const char *path, int fail);
108
63
int find_config_tree_bool(struct cmd_context *cmd, const char *path, int fail);
109
64
 
110
 
int get_config_uint32(const struct config_node *cn, const char *path,
111
 
                      uint32_t *result);
112
 
 
113
 
int get_config_uint64(const struct config_node *cn, const char *path,
114
 
                      uint64_t *result);
115
 
 
116
 
int get_config_str(const struct config_node *cn, const char *path,
117
 
                   const char **result);
118
 
 
119
 
unsigned maybe_config_section(const char *str, unsigned len);
120
 
 
121
 
const char *config_parent_name(const struct config_node *n);
122
 
 
123
 
struct config_node *clone_config_node_with_mem(struct dm_pool *mem,
124
 
                                               const struct config_node *node,
125
 
                                               int siblings);
126
 
struct config_node *create_config_node(struct config_tree *cft, const char *key);
127
 
struct config_value *create_config_value(struct config_tree *cft);
128
 
struct config_node *clone_config_node(struct config_tree *cft, const struct config_node *cn,
129
 
                                      int siblings);
130
 
 
131
 
struct dm_pool *config_tree_memory(struct config_tree *cft);
132
 
 
133
65
#endif