bool iekey, __u64 crkey, __u64 nrkey)
{
__le64 payload[2] = { cpu_to_le64(crkey), cpu_to_le64(nrkey) };
- __u32 cdw10 = racqa | (iekey ? 1 << 3 : 0) | rtype << 8;
+ __u32 cdw10 = (racqa & 0x7) | (iekey ? 1 << 3 : 0) | rtype << 8;
struct nvme_passthru_cmd cmd = {
.opcode = nvme_cmd_resv_acquire,
.nsid = nsid,
bool iekey, __u64 crkey, __u64 nrkey)
{
__le64 payload[2] = { cpu_to_le64(crkey), cpu_to_le64(nrkey) };
- __u32 cdw10 = rrega | (iekey ? 1 << 3 : 0) | cptpl << 30;
+ __u32 cdw10 = (rrega & 0x7) | (iekey ? 1 << 3 : 0) | cptpl << 30;
struct nvme_passthru_cmd cmd = {
.opcode = nvme_cmd_resv_register,
bool iekey, __u64 crkey)
{
__le64 payload[1] = { cpu_to_le64(crkey) };
- __u32 cdw10 = rrela | (iekey ? 1 << 3 : 0) | rtype << 8;
+ __u32 cdw10 = (rrela & 0x7) | (iekey ? 1 << 3 : 0) | rtype << 8;
struct nvme_passthru_cmd cmd = {
.opcode = nvme_cmd_resv_release,
goto close_fd;
}
+ if (cfg.rrega > 7) {
+ fprintf(stderr, "invalid rrega:%d\n", cfg.rrega);
+ err = EINVAL;
+ goto close_fd;
+ }
+
err = nvme_resv_register(fd, cfg.namespace_id, cfg.rrega, cfg.cptpl,
!!cfg.iekey, cfg.crkey, cfg.nrkey);
if (err < 0)