OSDN Git Service

nvme-rdma: fix sysfs invoked reset_ctrl error flow
authorNitzan Carmi <nitzanc@mellanox.com>
Wed, 17 Jan 2018 11:01:14 +0000 (11:01 +0000)
committerSagi Grimberg <sagi@grimberg.me>
Wed, 14 Feb 2018 13:44:22 +0000 (15:44 +0200)
commit8000d1fdb07e365e6565c2415aefdfed15413794
treebb5c280bb677d06e0558f558359dacd8360679cd
parent7756f72ccd4359c6df61fc431cd3b5b0a8639837
nvme-rdma: fix sysfs invoked reset_ctrl error flow

When reset_controller that is invoked by sysfs fails,
it enters an error flow which practically removes the
nvme ctrl entirely (similar to delete_ctrl flow). It
causes the system to hang, since a sysfs attribute cannot
be unregistered by one of its own methods.

This can be fixed by calling delete_ctrl as a work rather
than sequential code. In addition, it should give the ctrl
a chance to recover using reconnection mechanism (consistant
with FC reset_ctrl error flow). Also, while we're here, return
suitable errno in case the reset ended with non live ctrl.

Signed-off-by: Nitzan Carmi <nitzanc@mellanox.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
drivers/nvme/host/core.c
drivers/nvme/host/rdma.c