]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
scsi: scsi_transport_fc: Allow setting rport state to current state
authorBenjamin Marzinski <bmarzins@redhat.com>
Tue, 17 Sep 2024 23:06:43 +0000 (19:06 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 4 Oct 2024 02:01:34 +0000 (22:01 -0400)
The only input fc_rport_set_marginal_state() currently accepts is
"Marginal" when port_state is "Online", and "Online" when the port_state
is "Marginal". It should also allow setting port_state to its current
state, either "Marginal or "Online".

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Link: https://lore.kernel.org/r/20240917230643.966768-1-bmarzins@redhat.com
Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/scsi_transport_fc.c

index 62ea7e44460e52d77cb155750f4d204bf1ccc1cd..082f76e7672107dcf64e4e26ef0c69fe29a0c030 100644 (file)
@@ -1250,7 +1250,7 @@ static ssize_t fc_rport_set_marginal_state(struct device *dev,
                 */
                if (rport->port_state == FC_PORTSTATE_ONLINE)
                        rport->port_state = port_state;
-               else
+               else if (port_state != rport->port_state)
                        return -EINVAL;
        } else if (port_state == FC_PORTSTATE_ONLINE) {
                /*
@@ -1260,7 +1260,7 @@ static ssize_t fc_rport_set_marginal_state(struct device *dev,
                 */
                if (rport->port_state == FC_PORTSTATE_MARGINAL)
                        rport->port_state = port_state;
-               else
+               else if (port_state != rport->port_state)
                        return -EINVAL;
        } else
                return -EINVAL;