From: Karel Zak Date: Thu, 2 Jun 2016 12:40:13 +0000 (+0200) Subject: lib/sysfs: be more smart for non-scsi devices X-Git-Tag: v2.29-rc1~208 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=638402edb039d58df04cc9aaf48e08fe184b3b4b;p=thirdparty%2Futil-linux.git lib/sysfs: be more smart for non-scsi devices Signed-off-by: Karel Zak --- diff --git a/include/sysfs.h b/include/sysfs.h index 6643592430..36d3cbd4f0 100644 --- a/include/sysfs.h +++ b/include/sysfs.h @@ -27,7 +27,8 @@ struct sysfs_cxt { scsi_target, scsi_lun; - unsigned int has_hctl : 1; + unsigned int has_hctl : 1, + hctl_error : 1 ; }; #define UL_SYSFSCXT_EMPTY { 0, -1, NULL, NULL, 0, 0, 0, 0, 0 } diff --git a/lib/sysfs.c b/lib/sysfs.c index b6501291c9..f52b7a885f 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -882,11 +882,12 @@ int sysfs_scsi_get_hctl(struct sysfs_cxt *cxt, int *h, int *c, int *t, int *l) char buf[PATH_MAX], *hctl; ssize_t len; - if (!cxt) + if (!cxt || cxt->hctl_error) return -EINVAL; if (cxt->has_hctl) goto done; + cxt->hctl_error = 1; len = sysfs_readlink(cxt, "device", buf, sizeof(buf) - 1); if (len < 0) return len; @@ -911,6 +912,8 @@ done: *t = cxt->scsi_target; if (l) *l = cxt->scsi_lun; + + cxt->hctl_error = 0; return 0; }