Hi All,
From the NVMe v1.4a Specification 8.8.2 Registering:
"A host may replace its reservation key without regard to its registration
status or current reservation key value by setting the Ignore Existing Key
(IEKEY) bit to '1' in the Reservation Register command."
But the recent SPDK code in lib/nvmf/subsystem.c that controls the
Reservation replacing is:
case SPDK_NVME_RESERVE_REPLACE_KEY:
if (!reg || (!iekey && reg->rkey != key.crkey)) {
SPDK_ERRLOG("No registrant or current key doesn't match "
"with existing registrant key\n");
status = SPDK_NVME_SC_RESERVATION_CONFLICT;
goto exit;
}
The code rejects replacements when a host is not registered at the time,
but set IEKEY=1.
I think it an issue in the SPDK NVMf implementation of Persistent
Reservation that should be fixed, isn't it?
--
Best regards,
Valeriy Glushkov
www.starwind.com