* [PATCH] multipath: fix scsi timeout code
@ 2011-12-19 22:19 Benjamin Marzinski
2011-12-20 15:18 ` Hannes Reinecke
2011-12-23 20:04 ` Christophe Varoqui
0 siblings, 2 replies; 3+ messages in thread
From: Benjamin Marzinski @ 2011-12-19 22:19 UTC (permalink / raw)
To: device-mapper development; +Cc: Christophe Varoqui
sysfs_attr_set_value() returns the amount written on on success, or -1 on
failure. sysfs_setc_scsi_tmo() was checking if the return was nonzero, and
failing if it was. This meant that it always failed out silently after writing
the first value. I've changed the check, and added some error messages. I also
made sysfs_attr_set_value return -1 for all errors.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/discovery.c | 11 +++++++++--
libmultipath/sysfs.c | 2 +-
2 files changed, 10 insertions(+), 3 deletions(-)
Index: multipath-tools-111111/libmultipath/discovery.c
===================================================================
--- multipath-tools-111111.orig/libmultipath/discovery.c
+++ multipath-tools-111111/libmultipath/discovery.c
@@ -316,8 +316,11 @@ sysfs_set_scsi_tmo (struct multipath *mp
if (mpp->dev_loss){
snprintf(value, 11, "%u", mpp->dev_loss);
if (sysfs_attr_set_value(attr_path, "dev_loss_tmo",
- value, 11))
+ value, 11) < 0) {
+ condlog(0, "%s failed to set %s/dev_loss_tmo",
+ mpp->alias, attr_path);
return 1;
+ }
}
if (mpp->fast_io_fail){
if (mpp->fast_io_fail == -1)
@@ -325,8 +328,12 @@ sysfs_set_scsi_tmo (struct multipath *mp
else
snprintf(value, 11, "%u", mpp->fast_io_fail);
if (sysfs_attr_set_value(attr_path, "fast_io_fail_tmo",
- value, 11))
+ value, 11) < 0) {
+ condlog(0,
+ "%s failed to set %s/fast_io_fail_tmo",
+ mpp->alias, attr_path);
return 1;
+ }
}
}
return 0;
Index: multipath-tools-111111/libmultipath/sysfs.c
===================================================================
--- multipath-tools-111111.orig/libmultipath/sysfs.c
+++ multipath-tools-111111/libmultipath/sysfs.c
@@ -351,7 +351,7 @@ ssize_t sysfs_attr_set_value(const char
char path_full[PATH_SIZE];
struct stat statbuf;
int fd;
- ssize_t size = 0;
+ ssize_t size = -1;
size_t sysfs_len;
if (!attr_name || !value || !value_len)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] multipath: fix scsi timeout code
2011-12-19 22:19 [PATCH] multipath: fix scsi timeout code Benjamin Marzinski
@ 2011-12-20 15:18 ` Hannes Reinecke
2011-12-23 20:04 ` Christophe Varoqui
1 sibling, 0 replies; 3+ messages in thread
From: Hannes Reinecke @ 2011-12-20 15:18 UTC (permalink / raw)
To: device-mapper development
On 12/19/2011 11:19 PM, Benjamin Marzinski wrote:
> sysfs_attr_set_value() returns the amount written on on success, or -1 on
> failure. sysfs_setc_scsi_tmo() was checking if the return was nonzero, and
> failing if it was. This meant that it always failed out silently after writing
> the first value. I've changed the check, and added some error messages. I also
> made sysfs_attr_set_value return -1 for all errors.
>
> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
> ---
> libmultipath/discovery.c | 11 +++++++++--
> libmultipath/sysfs.c | 2 +-
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
> Index: multipath-tools-111111/libmultipath/discovery.c
> ===================================================================
> --- multipath-tools-111111.orig/libmultipath/discovery.c
> +++ multipath-tools-111111/libmultipath/discovery.c
> @@ -316,8 +316,11 @@ sysfs_set_scsi_tmo (struct multipath *mp
> if (mpp->dev_loss){
> snprintf(value, 11, "%u", mpp->dev_loss);
> if (sysfs_attr_set_value(attr_path, "dev_loss_tmo",
> - value, 11))
> + value, 11) < 0) {
> + condlog(0, "%s failed to set %s/dev_loss_tmo",
> + mpp->alias, attr_path);
> return 1;
> + }
> }
> if (mpp->fast_io_fail){
> if (mpp->fast_io_fail == -1)
> @@ -325,8 +328,12 @@ sysfs_set_scsi_tmo (struct multipath *mp
> else
> snprintf(value, 11, "%u", mpp->fast_io_fail);
> if (sysfs_attr_set_value(attr_path, "fast_io_fail_tmo",
> - value, 11))
> + value, 11) < 0) {
> + condlog(0,
> + "%s failed to set %s/fast_io_fail_tmo",
> + mpp->alias, attr_path);
> return 1;
> + }
> }
> }
> return 0;
> Index: multipath-tools-111111/libmultipath/sysfs.c
> ===================================================================
> --- multipath-tools-111111.orig/libmultipath/sysfs.c
> +++ multipath-tools-111111/libmultipath/sysfs.c
> @@ -351,7 +351,7 @@ ssize_t sysfs_attr_set_value(const char
> char path_full[PATH_SIZE];
> struct stat statbuf;
> int fd;
> - ssize_t size = 0;
> + ssize_t size = -1;
> size_t sysfs_len;
>
> if (!attr_name || !value || !value_len)
>
Ah. Good point. Thanks.
Acked-by: Hannes Reinecke <hare@suse.de>
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] multipath: fix scsi timeout code
2011-12-19 22:19 [PATCH] multipath: fix scsi timeout code Benjamin Marzinski
2011-12-20 15:18 ` Hannes Reinecke
@ 2011-12-23 20:04 ` Christophe Varoqui
1 sibling, 0 replies; 3+ messages in thread
From: Christophe Varoqui @ 2011-12-23 20:04 UTC (permalink / raw)
To: Benjamin Marzinski; +Cc: device-mapper development, Christophe Varoqui
On lun., 2011-12-19 at 16:19 -0600, Benjamin Marzinski wrote:
> sysfs_attr_set_value() returns the amount written on on success, or -1 on
> failure. sysfs_setc_scsi_tmo() was checking if the return was nonzero, and
> failing if it was. This meant that it always failed out silently after writing
> the first value. I've changed the check, and added some error messages. I also
> made sysfs_attr_set_value return -1 for all errors.
>
> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Merged.
> ---
> libmultipath/discovery.c | 11 +++++++++--
> libmultipath/sysfs.c | 2 +-
> 2 files changed, 10 insertions(+), 3 deletions(-)
>
> Index: multipath-tools-111111/libmultipath/discovery.c
> ===================================================================
> --- multipath-tools-111111.orig/libmultipath/discovery.c
> +++ multipath-tools-111111/libmultipath/discovery.c
> @@ -316,8 +316,11 @@ sysfs_set_scsi_tmo (struct multipath *mp
> if (mpp->dev_loss){
> snprintf(value, 11, "%u", mpp->dev_loss);
> if (sysfs_attr_set_value(attr_path, "dev_loss_tmo",
> - value, 11))
> + value, 11) < 0) {
> + condlog(0, "%s failed to set %s/dev_loss_tmo",
> + mpp->alias, attr_path);
> return 1;
> + }
> }
> if (mpp->fast_io_fail){
> if (mpp->fast_io_fail == -1)
> @@ -325,8 +328,12 @@ sysfs_set_scsi_tmo (struct multipath *mp
> else
> snprintf(value, 11, "%u", mpp->fast_io_fail);
> if (sysfs_attr_set_value(attr_path, "fast_io_fail_tmo",
> - value, 11))
> + value, 11) < 0) {
> + condlog(0,
> + "%s failed to set %s/fast_io_fail_tmo",
> + mpp->alias, attr_path);
> return 1;
> + }
> }
> }
> return 0;
> Index: multipath-tools-111111/libmultipath/sysfs.c
> ===================================================================
> --- multipath-tools-111111.orig/libmultipath/sysfs.c
> +++ multipath-tools-111111/libmultipath/sysfs.c
> @@ -351,7 +351,7 @@ ssize_t sysfs_attr_set_value(const char
> char path_full[PATH_SIZE];
> struct stat statbuf;
> int fd;
> - ssize_t size = 0;
> + ssize_t size = -1;
> size_t sysfs_len;
>
> if (!attr_name || !value || !value_len)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-12-23 20:04 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-19 22:19 [PATCH] multipath: fix scsi timeout code Benjamin Marzinski
2011-12-20 15:18 ` Hannes Reinecke
2011-12-23 20:04 ` Christophe Varoqui
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).