1RDMAINFO(3)                      rdmainfo 1.1                      RDMAINFO(3)
2
3
4

NAME

6       packet.transport.rdmainfo - RDMA reassembly module
7

DESCRIPTION

9       Provides functionality to reassemble RDMA fragments.
10

CLASSES

12   class RDMAinfo(packet.utils.RDMAbase)
13       RDMA info object used for reassembly
14
15       The reassembled message consists of one or multiple chunks and
16       each chunk in turn could be composed of multiple segments. Also,
17       each segment could be composed of multiple sub-segments and each
18       sub-segment could be composed of multiple fragments.
19       The protocol only defines segments but if the segment length is
20       large, it is split into multiple sub-segments in which each
21       sub-segment is specified by RDMA_WRITE_First or RDMA_READ_Request
22       packets. The handle is the same for each of these packets but with
23       a shorter DMA length.
24
25       Thus in order to reassemble all fragments for a single message,
26       a list of segments is created where each segment is identified
27       by its handle or RKey and the message is reassembled according
28       to the chuck lists specified by the RPC-over-RDMA layer.
29
30
31       Methods defined here:
32       ---------------------
33
34       __del__ = reset(self)
35
36       __init__(self)
37       Constructor
38
39       Initialize object's private data according to the arguments given.
40       Arguments can be given as positional, named arguments or a
41       combination of both.
42
43       __len__ = size(self)
44
45       add_iwarp_data(self, rdmap, unpack, isread=False)
46       Add iWarp fragment data
47
48       add_iwarp_request(self, rdmap)
49       Add iWarp read request information
50
51       add_rdma_data(self, psn, unpack, reth=None, only=False, read=False)
52       Add Infiniband fragment data
53
54       add_rdma_segment(self, rdma_seg, rpcrdma=None)
55       Add RDMA segment information and if the information already
56       exists just update the length and return the segment
57
58       del_rdma_segment(self, rsegment)
59       Delete RDMA segment information
60
61       get_rdma_segment(self, handle)
62       Return RDMA segment identified by the given handle
63
64       process_rdma_segments(self, rpcrdma)
65       Process the RPC-over-RDMA chunks
66
67       When this method is called on an RPC call, it adds the
68       information of all the segments to the list of segments.
69       When this method is called on an RPC reply, the segments
70       should already exist so just update the segment's DMA length
71       as returned by the reply.
72
73       RPCoRDMA reads attribute is a list of read segments
74       Read segment is a plain segment plus an XDR position
75       A read chunk is the collection of all read segments
76       with the same XDR position
77
78       RPCoRDMA writes attribute is a list of write chunks
79       A write chunk is a list of plain segments
80
81       RPCoRDMA reply is just a single write chunk if it exists.
82       Return the reply chunk data
83
84       reassemble_rdma_reads(self, unpack, psn=None, only=False, rdmap=None)
85       Reassemble RDMA read chunks
86       The RDMA read chunks are reassembled in the read last operation
87
88       reset(self)
89       Clear RDMA segments
90
91       size(self)
92       Return the number RDMA segments
93
94   class RDMArequest(builtins.object)
95       RDMA iWarp Request object
96
97
98       Methods defined here:
99       ---------------------
100
101       __contains__(self, offset)
102       Membership test operator.
103       Return true if offset belongs to this request
104
105       __init__(self, rdmap, rsegment)
106       Initialize self.  See help(type(self)) for accurate signature.
107
108       get_offset(self, offset)
109       Return offset translated from sink to src
110
111   class RDMAseg(builtins.object)
112       RDMA sub-segment object
113
114       The sub-segment is created for each RDMA_WRITE_First, RDMA_WRITE_Only
115       or RDMA_READ_Request and each sub-segment belongs to a list in the
116       RDMAsegment object so there is no segment identifier or handle.
117
118       Reassembly for each sub-segment is done using the PSN or packet
119       sequence number in each of the data fragments. Therefore, a range
120       of PSN numbers define this object which is given by the spsn and
121       epsn attributes (first and last PSN respectively).
122
123
124       Methods defined here:
125       ---------------------
126
127       __del__(self)
128       Destructor
129
130       __init__(self, spsn, epsn, dmalen)
131       Initialize self.  See help(type(self)) for accurate signature.
132
133       get_data(self, padding=True)
134       Return sub-segment data
135
136       get_size(self)
137       Return sub-segment data size
138
139       insert_data(self, psn, data)
140       Insert data at correct position given by the psn
141
142   class RDMAsegment(builtins.object)
143       RDMA segment object
144
145       Each segment is identified by its handle. The segment information
146       comes from the RPC-over-RDMA protocol layer so the length attribute
147       gives the total DMA length of the segment.
148
149
150       Methods defined here:
151       ---------------------
152
153       __del__(self)
154       Destructor
155
156       __init__(self, rdma_seg, rpcrdma)
157       Initialize self.  See help(type(self)) for accurate signature.
158
159       add_data(self, psn, data)
160       Add Infiniband fragment data
161
162       add_fragment(self, offset, data)
163       Add iWarp fragment to segment
164
165       add_sub_segment(self, psn, dmalen, only=False, iosize=0)
166       Add RDMA sub-segment PSN information
167
168       get_data(self, padding=True)
169       Return segment data
170
171       get_size(self)
172       Return segment data
173
174       valid_psn(self, psn)
175       True if given psn is valid for this segment
176

SEE ALSO

178       baseobj(3), packet.utils(3)
179
180

BUGS

182       No known bugs.
183

AUTHOR

185       Jorge Mora (mora@netapp.com)
186
187
188
189NFStest 3.2                      21 March 2023                     RDMAINFO(3)
Impressum