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: [PATCH v2 06/11] transport-fabrics: introduce command set




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.

...

Once an initiator disconnects, the target should reclaim the Target ID.

[snip]

--
zhenwei pi


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