From patchwork Mon Jul 15 13:00:14 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Reinecke X-Patchwork-Id: 2827472 Return-Path: X-Original-To: patchwork-dm-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 9BA659F7D6 for ; Mon, 15 Jul 2013 13:05:26 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6EF062015F for ; Mon, 15 Jul 2013 13:05:25 +0000 (UTC) Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by mail.kernel.org (Postfix) with ESMTP id 8F63220160 for ; Mon, 15 Jul 2013 13:05:20 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r6FD23LQ006459; Mon, 15 Jul 2013 09:02:03 -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 r6FD0dJa028948 for ; Mon, 15 Jul 2013 09:00:39 -0400 Received: from mx1.redhat.com (ext-mx12.extmail.prod.ext.phx2.redhat.com [10.5.110.17]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r6FD0cTT015579 for ; Mon, 15 Jul 2013 09:00:38 -0400 Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r6FD0aLT018044 for ; Mon, 15 Jul 2013 09:00:37 -0400 Received: from relay1.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 0C88FA538A; Mon, 15 Jul 2013 15:00:35 +0200 (CEST) From: Hannes Reinecke To: Christophe Varoqui Date: Mon, 15 Jul 2013 15:00:14 +0200 Message-Id: <1373893230-26077-14-git-send-email-hare@suse.de> In-Reply-To: <1373893230-26077-1-git-send-email-hare@suse.de> References: <1373893230-26077-1-git-send-email-hare@suse.de> X-RedHat-Spam-Score: -7.69 (BAYES_00, DCC_REPUT_00_12, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, URIBL_BLOCKED) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Scanned-By: MIMEDefang 2.68 on 10.5.110.17 X-loop: dm-devel@redhat.com Cc: dm-devel@redhat.com Subject: [dm-devel] [PATCH 13/29] Check return value from pathinfo() X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk Reply-To: device-mapper development 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-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP pathinfo() has a return value, which should be checked to catch any abnormal behaviour. Signed-off-by: Hannes Reinecke --- libmultipath/configure.c | 10 ++++++++-- libmultipath/discovery.c | 6 ++++-- multipath/main.c | 15 ++++++++++----- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/libmultipath/configure.c b/libmultipath/configure.c index 1cf46cc..7f5e065 100644 --- a/libmultipath/configure.c +++ b/libmultipath/configure.c @@ -793,8 +793,14 @@ 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) - pathinfo(pp, conf->hwtable, DI_PRIO); + vector_foreach_slot (mpp->paths, pp, i) { + r = pathinfo(pp, conf->hwtable, DI_PRIO); + if (r) { + condlog(2, "%s: failed to refresh pathinfo", + mpp->alias); + return 1; + } + } } if (setup_map(mpp, params, PARAMS_SIZE)) { condlog(0, "%s: failed to setup map", mpp->alias); diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c index a482c53..96fe985 100644 --- a/libmultipath/discovery.c +++ b/libmultipath/discovery.c @@ -125,8 +125,10 @@ path_discovery (vector pathvec, struct config * conf, int flag) continue; } devtype = udev_device_get_devtype(udevice); - if(devtype && !strncmp(devtype, "disk", 4)) - r += path_discover(pathvec, conf, udevice, flag); + if(devtype && !strncmp(devtype, "disk", 4)) { + r += path_discover(pathvec, conf, + udevice, flag); + } udev_device_unref(udevice); } udev_enumerate_unref(udev_iter); diff --git a/multipath/main.c b/multipath/main.c index 4a8b966..842a787 100644 --- a/multipath/main.c +++ b/multipath/main.c @@ -152,16 +152,21 @@ update_paths (struct multipath * mpp) continue; } pp->mpp = mpp; - pathinfo(pp, conf->hwtable, DI_ALL); + if (pathinfo(pp, conf->hwtable, DI_ALL)) + pp->state = PATH_UNCHECKED; continue; } pp->mpp = mpp; if (pp->state == PATH_UNCHECKED || - pp->state == PATH_WILD) - pathinfo(pp, conf->hwtable, DI_CHECKER); + pp->state == PATH_WILD) { + if (pathinfo(pp, conf->hwtable, DI_CHECKER)) + pp->state = PATH_UNCHECKED; + } - if (pp->priority == PRIO_UNDEF) - pathinfo(pp, conf->hwtable, DI_PRIO); + if (pp->priority == PRIO_UNDEF) { + if (pathinfo(pp, conf->hwtable, DI_PRIO)) + pp->priority = PRIO_UNDEF; + } } } return 0;