• Mike Christie's avatar
    dm: Fix PR release handling for non All Registrants · 08a3c338
    Mike Christie authored
    This commit fixes a bug where we are leaving the reservation in place
    even though pr_release has run and returned success.
    
    If we have a Write Exclusive, Exclusive Access, or Write/Exclusive
    Registrants only reservation, the release must be sent down the path
    that is the reservation holder. The problem is multipath_prepare_ioctl
    most likely selected path N for the reservation, then later when we do
    the release multipath_prepare_ioctl will select a completely different
    path. The device will then return success becuase the nvme and scsi
    specs say to return success if there is no reservation or if the
    release is sent down from a path that is not the holder. We then think
    we have released the reservation.
    
    This commit has us loop over each path and send a release so we can
    make sure the release is executed on the correct path. It has been
    tested with windows failover clustering's validation test which checks
    this case, and it has been tested manually (the libiscsi PGR tests
    don't have a test case for this yet, but I will be adding one).
    Signed-off-by: default avatarMike Christie <michael.christie@oracle.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    08a3c338
dm.c 77 KB