OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio-comment message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: Re: Re: Re: [PATCH v2 06/11] transport-fabrics: introduce command set




On 6/6/23 21:44, Stefan Hajnoczi wrote:
On Tue, Jun 06, 2023 at 10:02:51AM +0800, zhenwei pi wrote:


On 6/6/23 00:30, Stefan Hajnoczi wrote:
[snip]

+
+The Target ID of 0xffff is reserved, then:

Please move this after the fields have been shown and the purpose of the
Target ID field has been explained.

+\begin{itemize}
+\item The Target ID of 0xffff MUST be specified as the Target ID in a Connect
+Command for the control queue.
+\item The target SHOULD allocate any available Target ID to the initiator,
+and return the allocated Target ID in the Completion.
+\item The returned Target ID MUST be specified as the Target ID, and the Queue ID
+MUST be specified in a Connect Command for the virtqueue.
+\end{itemize}

What is the purpose of the Target ID? Is it to allow a server to provide
access to multiple targets over the same connection?


A target listens on a port, and provides access to 0 or more targets. An
initiator connect the specific target by TVQN of connect command.
An initiator could connect a single target, multiple initiators could
connect the same target(typically, shared disk/fs).

Why is the target ID separate from the TVQN? If the Target ID is a
separate parameter then users will have to learn additional
syntax/command-line options to specify the TVQN + Target ID and that
syntax may vary between software.


The TVQN is the location of a target, for example:
virtio-tcp://192.168.1.110:8549/blk-dev/hdd-pool/238151a7-acd7-4621-bbdf-382ddbccb6a1

A target can be shared by multi initiators, they accesses the target by the
same address(transport: tcp, ip: 192.168.1.110, port: 8549, TVQN:
blk-dev/hdd-pool/238151a7-acd7-4621-bbdf-382ddbccb6a1):

Initiator_A launches Control Queue, issues connect command, gets the Target
ID of Target_A(typically, dynamically allocated by target), then virtqueues
connect to Target_A.

Initiator_B launches Control Queue, issues connect command, gets the Target
ID of Target_B(typically, dynamically allocated by target), then virtqueues
connect to Target_B.

In your example you say "A target can be shared by multi initiators" but
then say "Target_A" and "Target_B", so the two initiators are not really
communicating with the same target?


Yes, the two initiators are actually communicating with the same target of two Device Instances.

Maybe instead of Target ID it should be called Device Instance ID? Then
the "Target" is the server that listens on 192.168.1.110:8549 and the
"Device Instance" is the VIRTIO device that the initiator is accessing
through the Target. One Target may contain many Device Instances.

I think that's clearer than calling boths Targets and Device Instances
the same thing.

Stefan

OK, this seems better! Fix this in next version.

--
zhenwei pi


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]