From patchwork Mon Jul 4 07:08:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Reinecke X-Patchwork-Id: 9211763 X-Patchwork-Delegate: christophe.varoqui@free.fr Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9EB9B60572 for ; Mon, 4 Jul 2016 07:13:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 885E528384 for ; Mon, 4 Jul 2016 07:13:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7CDDC27C2C; Mon, 4 Jul 2016 07:13:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from mx6-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B4F4A27C2C for ; Mon, 4 Jul 2016 07:13:27 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx6-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u6479ixu062357; Mon, 4 Jul 2016 03:09:45 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id u6479DFg017791 for ; Mon, 4 Jul 2016 03:09:13 -0400 Received: from mx1.redhat.com (ext-mx06.extmail.prod.ext.phx2.redhat.com [10.5.110.30]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u6479DtB012158 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 4 Jul 2016 03:09:13 -0400 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 87FC33B70E; Mon, 4 Jul 2016 07:09:11 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 96707AD14; Mon, 4 Jul 2016 07:09:05 +0000 (UTC) From: Hannes Reinecke To: Christophe Varoqui Date: Mon, 4 Jul 2016 09:08:37 +0200 Message-Id: <1467616126-10036-18-git-send-email-hare@suse.de> In-Reply-To: <1467616126-10036-1-git-send-email-hare@suse.de> References: <1467616126-10036-1-git-send-email-hare@suse.de> X-Greylist: Sender IP whitelisted by DNSRBL, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 04 Jul 2016 07:09:11 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 04 Jul 2016 07:09:11 +0000 (UTC) for IP:'195.135.220.15' DOMAIN:'mx2.suse.de' HELO:'mx2.suse.de' FROM:'hare@suse.de' RCPT:'' X-RedHat-Spam-Score: -3.188 (BAYES_50, DCC_REPUT_00_12, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, SPF_PASS) 195.135.220.15 mx2.suse.de 195.135.220.15 mx2.suse.de X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Scanned-By: MIMEDefang 2.78 on 10.5.110.30 X-loop: dm-devel@redhat.com Cc: Hannes Reinecke , dm-devel@redhat.com Subject: [dm-devel] [PATCH 17/26] libmultipath: use 'struct config' as argument for pathinfo() X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Virus-Scanned: ClamAV using ClamSMTP pathinfo() requires access to the entire configuration, not just hwtable. So don't pretend this is the case. Signed-off-by: Hannes Reinecke --- libmpathpersist/mpath_persist.c | 6 +++--- libmultipath/configure.c | 8 ++++---- libmultipath/discovery.c | 24 ++++++++++++------------ libmultipath/discovery.h | 8 ++++---- libmultipath/structs_vec.c | 2 +- multipath/main.c | 6 +++--- multipathd/cli_handlers.c | 2 +- multipathd/main.c | 16 ++++++++-------- 8 files changed, 36 insertions(+), 36 deletions(-) diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c index dc11d4f..d557da3 100644 --- a/libmpathpersist/mpath_persist.c +++ b/libmpathpersist/mpath_persist.c @@ -94,16 +94,16 @@ updatepaths (struct multipath * mpp) continue; } pp->mpp = mpp; - pathinfo(pp, conf->hwtable, DI_ALL); + pathinfo(pp, conf, DI_ALL); continue; } pp->mpp = mpp; if (pp->state == PATH_UNCHECKED || pp->state == PATH_WILD) - pathinfo(pp, conf->hwtable, DI_CHECKER); + pathinfo(pp, conf, DI_CHECKER); if (pp->priority == PRIO_UNDEF) - pathinfo(pp, conf->hwtable, DI_PRIO); + pathinfo(pp, conf, DI_PRIO); } } return 0; diff --git a/libmultipath/configure.c b/libmultipath/configure.c index 54fcde2..53d89b0 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -959,7 +959,7 @@ get_refwwid (enum mpath_cmds cmd, char * dev, enum devtypes dev_type, condlog(2, "%s: can't get udev device", buff); return 1; } - ret = store_pathinfo(pathvec, conf->hwtable, udevice, + ret = store_pathinfo(pathvec, conf, udevice, flags, &pp); udev_device_unref(udevice); if (!pp) { @@ -991,7 +991,7 @@ get_refwwid (enum mpath_cmds cmd, char * dev, enum devtypes dev_type, condlog(2, "%s: can't get udev device", dev); return 1; } - ret = store_pathinfo(pathvec, conf->hwtable, udevice, + ret = store_pathinfo(pathvec, conf, udevice, flags, &pp); udev_device_unref(udevice); if (!pp) { @@ -1016,7 +1016,7 @@ get_refwwid (enum mpath_cmds cmd, char * dev, enum devtypes dev_type, condlog(2, "%s: can't get udev device", dev); return 1; } - ret = store_pathinfo(pathvec, conf->hwtable, udevice, + ret = store_pathinfo(pathvec, conf, udevice, flags, &pp); udev_device_unref(udevice); if (!pp) { @@ -1085,7 +1085,7 @@ extern int reload_map(struct vectors *vecs, struct multipath *mpp, int refresh, update_mpp_paths(mpp, vecs->pathvec); if (refresh) { vector_foreach_slot (mpp->paths, pp, i) { - r = pathinfo(pp, conf->hwtable, DI_PRIO); + r = pathinfo(pp, conf, DI_PRIO); if (r) { condlog(2, "%s: failed to refresh pathinfo", mpp->alias); diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c index e598337..ffd26a6 100644 --- a/libmultipath/discovery.c +++ b/libmultipath/discovery.c @@ -32,7 +32,7 @@ #include "defaults.h" int -alloc_path_with_pathinfo (vector hwtable, struct udev_device *udevice, +alloc_path_with_pathinfo (struct config *conf, struct udev_device *udevice, int flag, struct path **pp_ptr) { int err = PATHINFO_FAILED; @@ -55,7 +55,7 @@ alloc_path_with_pathinfo (vector hwtable, struct udev_device *udevice, condlog(0, "pp->dev too small"); } else { pp->udev = udev_device_ref(udevice); - err = pathinfo(pp, hwtable, flag | DI_BLACKLIST); + err = pathinfo(pp, conf, flag | DI_BLACKLIST); } if (err) @@ -66,8 +66,8 @@ alloc_path_with_pathinfo (vector hwtable, struct udev_device *udevice, } int -store_pathinfo (vector pathvec, vector hwtable, struct udev_device *udevice, - int flag, struct path **pp_ptr) +store_pathinfo (vector pathvec, struct config *conf, + struct udev_device *udevice, int flag, struct path **pp_ptr) { int err = PATHINFO_FAILED; struct path * pp; @@ -90,7 +90,7 @@ store_pathinfo (vector pathvec, vector hwtable, struct udev_device *udevice, goto out; } pp->udev = udev_device_ref(udevice); - err = pathinfo(pp, hwtable, flag); + err = pathinfo(pp, conf, flag); if (err) goto out; @@ -126,10 +126,10 @@ path_discover (vector pathvec, struct config * conf, pp = find_path_by_dev(pathvec, (char *)devname); if (!pp) { - return store_pathinfo(pathvec, conf->hwtable, + return store_pathinfo(pathvec, conf, udevice, flag, NULL); } - return pathinfo(pp, conf->hwtable, flag); + return pathinfo(pp, conf, flag); } int @@ -1397,7 +1397,7 @@ cciss_ioctl_pathinfo (struct path * pp, int mask) } int -get_state (struct path * pp, vector hwtable, int daemon) +get_state (struct path * pp, struct config *conf, int daemon) { struct checker * c = &pp->checker; int state; @@ -1406,7 +1406,7 @@ get_state (struct path * pp, vector hwtable, int daemon) if (!checker_selected(c)) { if (daemon) { - if (pathinfo(pp, hwtable, DI_SYSFS) != PATHINFO_OK) { + if (pathinfo(pp, conf, DI_SYSFS) != PATHINFO_OK) { condlog(3, "%s: couldn't get sysfs pathinfo", pp->dev); return PATH_UNCHECKED; @@ -1588,7 +1588,7 @@ get_uid (struct path * pp, int path_state) } extern int -pathinfo (struct path *pp, vector hwtable, int mask) +pathinfo (struct path *pp, struct config *conf, int mask) { int path_state; @@ -1610,7 +1610,7 @@ pathinfo (struct path *pp, vector hwtable, int mask) /* * fetch info available in sysfs */ - if (mask & DI_SYSFS && sysfs_pathinfo(pp, hwtable)) + if (mask & DI_SYSFS && sysfs_pathinfo(pp, conf->hwtable)) return PATHINFO_FAILED; if (mask & DI_BLACKLIST && mask & DI_SYSFS) { @@ -1649,7 +1649,7 @@ pathinfo (struct path *pp, vector hwtable, int mask) if (mask & DI_CHECKER) { if (path_state == PATH_UP) { - pp->chkrstate = pp->state = get_state(pp, hwtable, 0); + pp->chkrstate = pp->state = get_state(pp, conf, 0); if (pp->state == PATH_UNCHECKED || pp->state == PATH_WILD) goto blank; diff --git a/libmultipath/discovery.h b/libmultipath/discovery.h index 2619015..fca9637 100644 --- a/libmultipath/discovery.h +++ b/libmultipath/discovery.h @@ -34,11 +34,11 @@ int path_discovery (vector pathvec, struct config * conf, int flag); int do_tur (char *); int path_offline (struct path *); -int get_state (struct path * pp, vector hwtable, int daemon); -int pathinfo (struct path *, vector hwtable, int mask); -int alloc_path_with_pathinfo (vector hwtable, struct udev_device *udevice, +int get_state (struct path * pp, struct config * conf, int daemon); +int pathinfo (struct path * pp, struct config * conf, int mask); +int alloc_path_with_pathinfo (struct config *conf, struct udev_device *udevice, int flag, struct path **pp_ptr); -int store_pathinfo (vector pathvec, vector hwtable, +int store_pathinfo (vector pathvec, struct config *conf, struct udev_device *udevice, int flag, struct path **pp_ptr); int sysfs_set_scsi_tmo (struct multipath *mpp, int checkint); diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c index 8ddc292..dee6447 100644 --- a/libmultipath/structs_vec.c +++ b/libmultipath/structs_vec.c @@ -69,7 +69,7 @@ adopt_paths (vector pathvec, struct multipath * mpp) if (!find_path_by_dev(mpp->paths, pp->dev) && store_path(mpp->paths, pp)) return 1; - if (pathinfo(pp, conf->hwtable, + if (pathinfo(pp, conf, DI_PRIO | DI_CHECKER)) return 1; } diff --git a/multipath/main.c b/multipath/main.c index df6a7ca..ca4c1f5 100644 --- a/multipath/main.c +++ b/multipath/main.c @@ -156,19 +156,19 @@ update_paths (struct multipath * mpp) continue; } pp->mpp = mpp; - if (pathinfo(pp, conf->hwtable, DI_ALL)) + if (pathinfo(pp, conf, DI_ALL)) pp->state = PATH_UNCHECKED; continue; } pp->mpp = mpp; if (pp->state == PATH_UNCHECKED || pp->state == PATH_WILD) { - if (pathinfo(pp, conf->hwtable, DI_CHECKER)) + if (pathinfo(pp, conf, DI_CHECKER)) pp->state = PATH_UNCHECKED; } if (pp->priority == PRIO_UNDEF) { - if (pathinfo(pp, conf->hwtable, DI_PRIO)) + if (pathinfo(pp, conf, DI_PRIO)) pp->priority = PRIO_UNDEF; } } diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c index c8c712a..90259ae 100644 --- a/multipathd/cli_handlers.c +++ b/multipathd/cli_handlers.c @@ -640,7 +640,7 @@ cli_add_path (void * v, char ** reply, int * len, void * data) udevice = udev_device_new_from_subsystem_sysname(udev, "block", param); - r = store_pathinfo(vecs->pathvec, conf->hwtable, + r = store_pathinfo(vecs->pathvec, conf, udevice, DI_ALL, &pp); udev_device_unref(udevice); if (!pp) { diff --git a/multipathd/main.c b/multipathd/main.c index fe80d1a..61ef2e6 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -213,7 +213,7 @@ need_switch_pathgroup (struct multipath * mpp, int refresh) if (refresh) vector_foreach_slot (mpp->pg, pgp, i) vector_foreach_slot (pgp->paths, pp, j) - pathinfo(pp, conf->hwtable, DI_PRIO); + pathinfo(pp, conf, DI_PRIO); if (!mpp->pg || VECTOR_SIZE(mpp->paths) == 0) return 0; @@ -590,7 +590,7 @@ uev_add_path (struct uevent *uev, struct vectors * vecs) condlog(3, "%s: reinitialize path", uev->kernel); udev_device_unref(pp->udev); pp->udev = udev_device_ref(uev->udev); - r = pathinfo(pp, conf->hwtable, + r = pathinfo(pp, conf, DI_ALL | DI_BLACKLIST); if (r == PATHINFO_OK) ret = ev_add_path(pp, vecs); @@ -615,7 +615,7 @@ uev_add_path (struct uevent *uev, struct vectors * vecs) /* * get path vital state */ - ret = alloc_path_with_pathinfo(conf->hwtable, uev->udev, + ret = alloc_path_with_pathinfo(conf, uev->udev, DI_ALL, &pp); if (!pp) { if (ret == PATHINFO_SKIPPED) @@ -1344,7 +1344,7 @@ int update_prio(struct path *pp, int refresh_all) vector_foreach_slot (pp->mpp->pg, pgp, i) { vector_foreach_slot (pgp->paths, pp1, j) { oldpriority = pp1->priority; - pathinfo(pp1, conf->hwtable, DI_PRIO); + pathinfo(pp1, conf, DI_PRIO); if (pp1->priority != oldpriority) changed = 1; } @@ -1352,7 +1352,7 @@ int update_prio(struct path *pp, int refresh_all) return changed; } oldpriority = pp->priority; - pathinfo(pp, conf->hwtable, DI_PRIO); + pathinfo(pp, conf, DI_PRIO); if (pp->priority == oldpriority) return 0; @@ -1421,20 +1421,20 @@ check_path (struct vectors * vecs, struct path * pp, int ticks) newstate = PATH_DOWN; if (newstate == PATH_UP) - newstate = get_state(pp, conf->hwtable, 1); + newstate = get_state(pp, conf, 1); else checker_clear_message(&pp->checker); if (newstate == PATH_WILD || newstate == PATH_UNCHECKED) { condlog(2, "%s: unusable path", pp->dev); - pathinfo(pp, conf->hwtable, 0); + pathinfo(pp, conf, 0); return 1; } if (!pp->mpp) { if (!strlen(pp->wwid) && pp->initialized != INIT_MISSING_UDEV && (newstate == PATH_UP || newstate == PATH_GHOST)) { condlog(2, "%s: add missing path", pp->dev); - if (pathinfo(pp, conf->hwtable, DI_ALL) == 0) { + if (pathinfo(pp, conf, DI_ALL) == 0) { ev_add_path(pp, vecs); pp->tick = 1; }