From: Benjamin Marzinski <bmarzins@redhat.com>
To: device-mapper development <dm-devel@redhat.com>
Cc: Christophe Varoqui <christophe.varoqui@gmail.com>
Subject: [PATCH V3 04/18] multipath: make devt2devname use lstat to check
Date: Sat, 12 Jan 2013 00:04:41 -0600 [thread overview]
Message-ID: <1357970695-3396-4-git-send-email-bmarzins@redhat.com> (raw)
In-Reply-To: <1357970695-3396-1-git-send-email-bmarzins@redhat.com>
dm_reassign wasn't working correctly for me because devt2devname used stat()
to check if /sys/dev/block/major:minor was a symlink. But stat() never returns
a symlink, if follows it. It needs to use lstat() instead. Also, I made
multipath log a message when a dm device gets reassigned to use multipath.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/devmapper.c | 4 +++-
libmultipath/sysfs.c | 6 ++++--
libmultipath/util.c | 3 ++-
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
index a6e7150..89615b0 100644
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -1394,8 +1394,10 @@ int dm_reassign(const char *mapname)
return 1;
}
- if (!(dmt = dm_task_create(DM_DEVICE_DEPS)))
+ if (!(dmt = dm_task_create(DM_DEVICE_DEPS))) {
+ condlog(3, "%s: couldn't make dm task", mapname);
return 0;
+ }
if (!dm_task_set_name(dmt, mapname))
goto out;
diff --git a/libmultipath/sysfs.c b/libmultipath/sysfs.c
index 9c554dd..d33747f 100644
--- a/libmultipath/sysfs.c
+++ b/libmultipath/sysfs.c
@@ -125,8 +125,10 @@ int sysfs_check_holders(char * check_devt, char * new_devt)
return 0;
}
- if (devt2devname(check_dev, PATH_SIZE, check_devt))
+ if (devt2devname(check_dev, PATH_SIZE, check_devt)) {
+ condlog(1, "can't get devname for %s", check_devt);
return 0;
+ }
condlog(3, "%s: checking holder", check_dev);
@@ -153,7 +155,7 @@ int sysfs_check_holders(char * check_devt, char * new_devt)
}
table_name = dm_mapname(major, table_minor);
- condlog(3, "%s: reassign table %s old %s new %s", check_dev,
+ condlog(0, "%s: reassign table %s old %s new %s", check_dev,
table_name, check_devt, new_devt);
dm_reassign_table(table_name, check_devt, new_devt);
diff --git a/libmultipath/util.c b/libmultipath/util.c
index 7cdfd28..3ac018c 100644
--- a/libmultipath/util.c
+++ b/libmultipath/util.c
@@ -161,6 +161,7 @@ devt2devname (char *devname, int devname_len, char *devt)
struct stat statbuf;
memset(block_path, 0, sizeof(block_path));
+ memset(dev, 0, sizeof(dev));
if (sscanf(devt, "%u:%u", &major, &minor) != 2) {
condlog(0, "Invalid device number %s", devt);
return 1;
@@ -172,7 +173,7 @@ devt2devname (char *devname, int devname_len, char *devt)
if (stat("/sys/dev/block", &statbuf) == 0) {
/* Newer kernels have /sys/dev/block */
sprintf(block_path,"/sys/dev/block/%u:%u", major, minor);
- if (stat(block_path, &statbuf) == 0) {
+ if (lstat(block_path, &statbuf) == 0) {
if (S_ISLNK(statbuf.st_mode) &&
readlink(block_path, dev, FILE_NAME_SIZE) > 0) {
char *p = strrchr(dev, '/');
--
1.8.0
next prev parent reply other threads:[~2013-01-12 6:04 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-12 6:04 [PATCH V3 01/18] multipath: default fast_io_fail to 5 seconds Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 02/18] multipath: remove default options from built-in Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 03/18] multipath: change default path_selector to Benjamin Marzinski
2013-01-12 6:04 ` Benjamin Marzinski [this message]
2013-01-12 6:04 ` [PATCH V3 05/18] multipath: add support for Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 06/18] multipath: remove duplicates from multipath Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 07/18] multipath: add detect_prio option to autodetect Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 08/18] multipath: update netapp config Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 09/18] multipath: fix set_oom_adj Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 10/18] multipath: rely on udev device creation for kpartx Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 11/18] multipath: update documentation Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 12/18] multipath: make multipathd work with new dm/lvm Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 13/18] multipath: make reservation_key print out correctly Benjamin Marzinski
2013-01-21 5:50 ` Chauhan, Vijay
2013-01-12 6:04 ` [PATCH V3 14/18] multipath: storagetek 6180 config Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 15/18] multipath: Fix kpartx and udevd race Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 16/18] multipath: Check blacklists as soon as possible Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 17/18] multipath: check for NULL from udev_device_get_* Benjamin Marzinski
2013-01-12 6:04 ` [PATCH V3 18/18] multipath: make path devices readonly again Benjamin Marzinski
2013-01-12 13:16 ` [PATCH V3 01/18] multipath: default fast_io_fail to 5 seconds Christophe Varoqui
2013-01-14 7:03 ` Hannes Reinecke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1357970695-3396-4-git-send-email-bmarzins@redhat.com \
--to=bmarzins@redhat.com \
--cc=christophe.varoqui@gmail.com \
--cc=dm-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox