[PATCH] multipathd: checker port_state before setting it.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



If the rport port_state is already Marginal, trying to set it to
Marginal causes an error like the following:

multipathd[365376]: /sys/devices/pci0000:c0/0000:c0:01.1/0000:c4:00.0/host0/rport-0:0-5/fc_remote_ports/rport-0:0-5: failed to set port_state to marginal: Invalid argument

To avoid causing this confusing error message, check if the port_state
is already marginal before trying to set it.

Cc: Muneendra Kumar <muneendra.kumar@xxxxxxxxxxxx>
Signed-off-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx>
---
 multipathd/fpin_handlers.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/multipathd/fpin_handlers.c b/multipathd/fpin_handlers.c
index be087ca0..6b56f9b7 100644
--- a/multipathd/fpin_handlers.c
+++ b/multipathd/fpin_handlers.c
@@ -169,9 +169,14 @@ fpin_els_add_li_frame(struct fc_nl_event *fc_event)
 /*Sets the rport port_state to marginal*/
 static void fpin_set_rport_marginal(struct udev_device *rport_dev)
 {
+	char old_value[20]; /* match kernel show_fc_rport_port_state() size */
 	static const char marginal[] = "Marginal";
 	ssize_t ret;
 
+	ret = sysfs_attr_get_value(rport_dev, "port_state",
+				   old_value, sizeof(old_value));
+	if (ret == sizeof(marginal) - 1 && strcmp(old_value, marginal) == 0)
+		return;
 	ret = sysfs_attr_set_value(rport_dev, "port_state",
 				   marginal, sizeof(marginal) - 1);
 	if (ret != sizeof(marginal) - 1)
-- 
2.45.0





[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux