[dm-devel] [RFC Patch 2/3] libmultipath: make sysfs_is_multipathed able to return wwid
Martin Wilck
Martin.Wilck at suse.com
Tue Mar 31 13:06:01 UTC 2020
On Mon, 2020-03-30 at 21:00 -0500, Benjamin Marzinski wrote:
> sysfs_is_multipathed reads the wwid of the dm device holding a path
> to
> check if its a multipath device. Add code to optinally set pp->wwid
> to
> that wwid. This will be used by a future patch.
>
> Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
> ---
> libmultipath/sysfs.c | 22 +++++++++++++++++++---
> libmultipath/sysfs.h | 2 +-
> multipath/main.c | 7 ++++---
> 3 files changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/libmultipath/sysfs.c b/libmultipath/sysfs.c
> index 62ec2ed7..034f082f 100644
> --- a/libmultipath/sysfs.c
> +++ b/libmultipath/sysfs.c
> @@ -295,7 +295,7 @@ static int select_dm_devs(const struct dirent
> *di)
> return fnmatch("dm-*", di->d_name, FNM_FILE_NAME) == 0;
> }
>
> -bool sysfs_is_multipathed(const struct path *pp)
> +bool sysfs_is_multipathed(struct path *pp, bool set_wwid)
> {
> char pathbuf[PATH_MAX];
> struct scandir_result sr;
> @@ -342,9 +342,25 @@ bool sysfs_is_multipathed(const struct path *pp)
> if (nr == sizeof(uuid) && !memcmp(uuid, "mpath-",
> sizeof(uuid)))
> found = true;
> else if (nr < 0) {
> - condlog(1, "%s: error reading from %s: %s",
> - __func__, pathbuf, strerror(errno));
> + condlog(1, "%s: error reading from %s: %m",
> + __func__, pathbuf);
> }
> + if (found && set_wwid) {
> + nr = read(fd, pp->wwid, WWID_SIZE);
I'd rather read the whole UUID in a single syscall (i.e. merge this
with the previous read() that fetched the first 6 chars).
Regards,
Martin
--
Dr. Martin Wilck <mwilck at suse.com>, Tel. +49 (0)911 74053 2107
SUSE Software Solutions Germany GmbH
HRB 36809, AG Nürnberg GF: Felix
Imendörffer
More information about the dm-devel
mailing list