Hi;

Klaus, Does the test method in the above email work properly?

On 2024/7/26 17:53, 卢长奇 wrote:
> Hi;
>
> You can test it in spdk.
> First start spdk and execute the following command.
>
> ```
> dd if=/dev/zero of=test.img bs=1G count=10
> RPC=/root/source/spdk/spdk/scripts/rpc.py
> FILE=/root/test.img
>
> $RPC bdev_aio_create $FILE aio0 512
> $RPC iscsi_create_portal_group 1 127.0.0.1:3260
> $RPC iscsi_create_initiator_group 2 ANY ANY
> $RPC iscsi_create_target_node target0 target0_alias aio0:0 1:2 64 -d
> ```
>
> Then start qemu and mount an nvme disk.
> Execute the following test command.
> ```
> #reporter
> nvme resv-report /dev/nvme0n1
> #register
> nvme resv-register /dev/nvme0n1 --nrkey 3 --rrega 0
> #unregister
> nvme resv-register /dev/nvme0n1 --crkey 3 --rrega 1
> # register replace
> nvme resv-register /dev/nvme0n1 --crkey 3 --nrkey 5 --rrega 2
> #release
> nvme resv-release /dev/nvme0n1 --crkey 5 --rtype 1 --rrela 0
> #clear
> nvme resv-release /dev/nvme0n1 --crkey 5 --rtype 1 --rrela 1
> #reserve
> nvme resv-acquire /dev/nvme0n1 --crkey 3 --rtype 1 --racqa 0
> #premmpt
> nvme resv-acquire /dev/nvme0n1 --crkey 6 --prkey 3 --rtype 1 --racqa 1
> ```
>
>
>
> On 2024/7/26 14:25, Klaus Jensen wrote:
>> On Jul 25 19:42, 卢长奇 wrote:
>>> Hi,
>>>
>>> ```
>>> 2685 nvme_status->regctl_ds[i].cntlid = nvme_ctrl(req)->cntlid;
>>> 2686 nvme_status->regctl_ds[i].rkey = keys_info->keys[i];
>>> 2687 nvme_status->regctl_ds[i].rcsts = keys_info->keys[i] ==
>>> 2688 reservation->key ? 1 : 0;
>>> 2689 /* hostid is not supported currently */
>>> 2670 memset(&nvme_status->regctl_ds[i].hostid, 0, 8);
>>> ```
>>>
>>> Klaus, I think hostid(2685) is stored locally like cntlid, i
>>> can get cntlid by nvme_ctrl(req)->cntlid, but I can't
>>> find a good way to get the host ID(2670). So I add a comment
>>> "/* hostid is not supported currently */". Could you give me
>>> some advices?
>>>
>>
>> The Host Identifier is just a 64 or 128 bit value that the host can set
>> with Set Feature. So, it is fine (and normal) that the value is
>> initially zero, but the host should be able to set it on controllers
>> with Set Feature to indicate if a controller belongs to the same host or
>> not.
>>
>>> And using spdk as target will not fail, but it will show 0 at hostid
>>> at present.
>>
>> Host Identifier 0 is a valid value when used with reservations; 0
>> indicates that the host associated with the controller is not associated
>> with any other controllers in the subsystem. So if two controllers have
>> Host Identifier set to 0, that implicitly mean they are associated with
>> two different hosts.
>>
>>> The relevant tests in qemu are as follows,
>>>
>>> ```
>>> root@node1:~# nvme resv-report /dev/nvme0n1
>>> NVME Reservation Report success
>>>
>>> NVME Reservation status:
>>>
>>> gen : 1
>>> regctl : 1
>>> rtype : 0
>>> ptpls : 0
>>> regctl[0] :
>>> cntlid : 0
>>> rcsts : 0
>>> hostid : 0
>>> rkey : 6
>>> ```
>>
>> I was hoping for an example on how to setup some simple iscsi stuff so I
>> could test the feature.

Reply via email to