Gentoo Archives: gentoo-commits

From: "Samuli Suominen (ssuominen)" <ssuominen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in sys-fs/lvm2/files: lvm2-2.02.95-udev185.patch
Date: Thu, 05 Jul 2012 08:55:24
Message-Id: 20120705085513.CFE592004B@flycatcher.gentoo.org
1 ssuominen 12/07/05 08:55:13
2
3 Added: lvm2-2.02.95-udev185.patch
4 Log:
5 Fix compability with sys-fs/udev >= 185 wrt #424810 by Marien Zwart
6
7 (Portage version: 2.2.0_alpha116/cvs/Linux x86_64)
8
9 Revision Changes Path
10 1.1 sys-fs/lvm2/files/lvm2-2.02.95-udev185.patch
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/lvm2/files/lvm2-2.02.95-udev185.patch?rev=1.1&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-fs/lvm2/files/lvm2-2.02.95-udev185.patch?rev=1.1&content-type=text/plain
14
15 Index: lvm2-2.02.95-udev185.patch
16 ===================================================================
17 From 06738cac051b671ed26bd137676713eab457b37f Mon Sep 17 00:00:00 2001
18 From: Peter Rajnoha <prajnoha@××××××.com>
19 Date: Tue, 29 May 2012 08:09:10 +0000
20 Subject: [PATCH] Remove unsupported udev_get_dev_path libudev call used for checking udev dir.
21
22 With latest changes in the udev, some deprecated functions were removed
23 from libudev amongst which there was the "udev_get_dev_path" function
24 we used to compare a device directory used in udev and directore set in
25 libdevmapper. The "/dev" is hardcoded in udev now (udev version >= 183).
26
27 Amongst other changes and from packager's point of view, it's also
28 important to note that the libudev development library ("libudev-devel")
29 could now be a part of the systemd development library ("systemd-devel")
30 because of the udev + systemd merge.
31 ---
32 WHATS_NEW_DM | 1 +
33 lib/commands/toolcontext.c | 28 ++++++++++++++++------------
34 lib/misc/lvm-wrappers.c | 14 --------------
35 lib/misc/lvm-wrappers.h | 1 -
36 libdm/libdevmapper.h | 3 +++
37 tools/dmsetup.c | 30 ++++++++++++------------------
38 6 files changed, 32 insertions(+), 45 deletions(-)
39
40 diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
41 index 78f0801..cc23163 100644
42 --- a/lib/commands/toolcontext.c
43 +++ b/lib/commands/toolcontext.c
44 @@ -650,9 +650,9 @@ static int _init_dev_cache(struct cmd_context *cmd)
45 {
46 const struct dm_config_node *cn;
47 const struct dm_config_value *cv;
48 - size_t uninitialized_var(udev_dir_len), len;
49 + size_t len, udev_dir_len = strlen(DM_UDEV_DEV_DIR);
50 + int len_diff;
51 int device_list_from_udev;
52 - const char *uninitialized_var(udev_dir);
53
54 init_dev_disable_after_error_count(
55 find_config_tree_int(cmd, "devices/disable_after_error_count",
56 @@ -661,13 +661,9 @@ static int _init_dev_cache(struct cmd_context *cmd)
57 if (!dev_cache_init(cmd))
58 return_0;
59
60 - if ((device_list_from_udev = udev_is_running() ?
61 + device_list_from_udev = udev_is_running() ?
62 find_config_tree_bool(cmd, "devices/obtain_device_list_from_udev",
63 - DEFAULT_OBTAIN_DEVICE_LIST_FROM_UDEV) : 0)) {
64 - if (!(udev_dir = udev_get_dev_dir()))
65 - stack;
66 - udev_dir_len = (udev_dir) ? strlen(udev_dir) : 0;
67 - }
68 + DEFAULT_OBTAIN_DEVICE_LIST_FROM_UDEV) : 0;
69 init_obtain_device_list_from_udev(device_list_from_udev);
70
71 if (!(cn = find_config_tree_node(cmd, "devices/scan"))) {
72 @@ -688,11 +684,19 @@ static int _init_dev_cache(struct cmd_context *cmd)
73 return 0;
74 }
75
76 - if (device_list_from_udev && udev_dir) {
77 + if (device_list_from_udev) {
78 len = strlen(cv->v.str);
79 - len = udev_dir_len > len ? len : udev_dir_len;
80 - if (strncmp(udev_dir, cv->v.str, len) ||
81 - udev_dir[len] != cv->v.str[len]) {
82 +
83 + /*
84 + * DM_UDEV_DEV_DIR always has '/' at its end.
85 + * If the item in the conf does not have it, be sure
86 + * to make the right comparison without the '/' char!
87 + */
88 + len_diff = len && cv->v.str[len - 1] != '/' ?
89 + udev_dir_len - 1 != len :
90 + udev_dir_len != len;
91 +
92 + if (len_diff || strncmp(DM_UDEV_DEV_DIR, cv->v.str, len)) {
93 device_list_from_udev = 0;
94 init_obtain_device_list_from_udev(0);
95 }
96 diff --git a/lib/misc/lvm-wrappers.c b/lib/misc/lvm-wrappers.c
97 index 84f61a6..6cffae3 100644
98 --- a/lib/misc/lvm-wrappers.c
99 +++ b/lib/misc/lvm-wrappers.c
100 @@ -65,16 +65,6 @@ bad:
101 return 0;
102 }
103
104 -const char *udev_get_dev_dir(void)
105 -{
106 - if (!_udev) {
107 - log_debug(_no_context_msg);
108 - return NULL;
109 - }
110 -
111 - return udev_get_dev_path(_udev);
112 -}
113 -
114 struct udev* udev_get_library_context(void)
115 {
116 return _udev;
117 @@ -96,10 +86,6 @@ int udev_is_running(void)
118 return 0;
119 }
120
121 -const char *udev_get_dev_dir(void)
122 -{
123 - return NULL;
124 -}
125 #endif
126
127 int lvm_getpagesize(void)
128 diff --git a/lib/misc/lvm-wrappers.h b/lib/misc/lvm-wrappers.h
129 index f5b381c..e43f831 100644
130 --- a/lib/misc/lvm-wrappers.h
131 +++ b/lib/misc/lvm-wrappers.h
132 @@ -24,7 +24,6 @@ struct udev *udev_get_library_context(void);
133 int udev_init_library_context(void);
134 void udev_fin_library_context(void);
135 int udev_is_running(void);
136 -const char *udev_get_dev_dir(void);
137
138 int lvm_getpagesize(void);
139
140 diff --git a/libdm/libdevmapper.h b/libdm/libdevmapper.h
141 index 7df4db8..1f780a3 100644
142 --- a/libdm/libdevmapper.h
143 +++ b/libdm/libdevmapper.h
144 @@ -1500,6 +1500,9 @@ struct dm_config_node *dm_config_clone_node(struct dm_config_tree *cft, const st
145
146 struct dm_pool *dm_config_memory(struct dm_config_tree *cft);
147
148 +/* Udev device directory. */
149 +#define DM_UDEV_DEV_DIR "/dev/"
150 +
151 /* Cookie prefixes.
152 *
153 * The cookie value consists of a prefix (16 bits) and a base (16 bits).
154 diff --git a/tools/dmsetup.c b/tools/dmsetup.c
155 index 6934de8..2787b76 100644
156 --- a/tools/dmsetup.c
157 +++ b/tools/dmsetup.c
158 @@ -1008,11 +1008,9 @@ static int _udevcookies(CMD_ARGS)
159 #else /* UDEV_SYNC_SUPPORT */
160 static int _set_up_udev_support(const char *dev_dir)
161 {
162 - struct udev *udev;
163 - const char *udev_dev_dir;
164 - size_t udev_dev_dir_len;
165 int dirs_diff;
166 const char *env;
167 + size_t len = strlen(dev_dir), udev_dir_len = strlen(DM_UDEV_DEV_DIR);
168
169 if (_switches[NOUDEVSYNC_ARG])
170 dm_udev_set_sync_support(0);
171 @@ -1030,14 +1028,6 @@ static int _set_up_udev_support(const char *dev_dir)
172 " defined by --udevcookie option.",
173 _udev_cookie);
174
175 - if (!(udev = udev_new()) ||
176 - !(udev_dev_dir = udev_get_dev_path(udev)) ||
177 - !*udev_dev_dir) {
178 - log_error("Could not get udev dev path.");
179 - return 0;
180 - }
181 - udev_dev_dir_len = strlen(udev_dev_dir);
182 -
183 /*
184 * Normally, there's always a fallback action by libdevmapper if udev
185 * has not done its job correctly, e.g. the nodes were not created.
186 @@ -1049,12 +1039,17 @@ static int _set_up_udev_support(const char *dev_dir)
187 * is the same as "dev path" used by libdevmapper.
188 */
189
190 - /* There's always a slash at the end of dev_dir. But check udev_dev_dir! */
191 - if (udev_dev_dir[udev_dev_dir_len - 1] != '/')
192 - dirs_diff = strncmp(dev_dir, udev_dev_dir, udev_dev_dir_len);
193 - else
194 - dirs_diff = strcmp(dev_dir, udev_dev_dir);
195
196 + /*
197 + * DM_UDEV_DEV_DIR always has '/' at its end.
198 + * If the dev_dir does not have it, be sure
199 + * to make the right comparison without the '/' char!
200 + */
201 + if (dev_dir[len - 1] != '/')
202 + udev_dir_len--;
203 +
204 + dirs_diff = udev_dir_len != len ||
205 + strncmp(DM_UDEV_DEV_DIR, dev_dir, len);
206 _udev_only = !dirs_diff && (_udev_cookie || !_switches[VERIFYUDEV_ARG]);
207
208 if (dirs_diff) {
209 @@ -1064,11 +1059,10 @@ static int _set_up_udev_support(const char *dev_dir)
210 "about udev not working correctly while processing "
211 "particular nodes will be suppressed. These nodes "
212 "and symlinks will be managed in each directory "
213 - "separately.", dev_dir, udev_dev_dir);
214 + "separately.", dev_dir, DM_UDEV_DEV_DIR);
215 dm_udev_set_checking(0);
216 }
217
218 - udev_unref(udev);
219 return 1;
220 }
221
222 --
223 1.7.2.1