@@ -100,9 +100,9 @@ int nvme_get_nsid(struct nvme_transport_handle *hdl, __u32 *nsid)
100100}
101101
102102__attribute__((weak ))
103- int nvme_submit_passthru64 (struct nvme_transport_handle * hdl , unsigned long ioctl_cmd ,
104- struct nvme_passthru_cmd64 * cmd ,
105- __u64 * result )
103+ int nvme_submit_passthru (struct nvme_transport_handle * hdl ,
104+ unsigned long ioctl_cmd , struct nvme_passthru_cmd * cmd ,
105+ __u64 * result )
106106{
107107 int err = ioctl (hdl -> fd , ioctl_cmd , cmd );
108108
@@ -113,132 +113,22 @@ int nvme_submit_passthru64(struct nvme_transport_handle *hdl, unsigned long ioct
113113 return err ;
114114}
115115
116- __attribute__((weak ))
117- int nvme_submit_passthru (struct nvme_transport_handle * hdl , unsigned long ioctl_cmd ,
118- struct nvme_passthru_cmd * cmd , __u32 * result )
119- {
120- int err = ioctl (hdl -> fd , ioctl_cmd , cmd );
121-
122- if (err >= 0 && result )
123- * result = cmd -> result ;
124- if (err < 0 )
125- return - errno ;
126- return err ;
127- }
128-
129- static int nvme_passthru64 (struct nvme_transport_handle * hdl , unsigned long ioctl_cmd , __u8 opcode ,
130- __u8 flags , __u16 rsvd , __u32 nsid , __u32 cdw2 ,
131- __u32 cdw3 , __u32 cdw10 , __u32 cdw11 , __u32 cdw12 ,
132- __u32 cdw13 , __u32 cdw14 , __u32 cdw15 ,
133- __u32 data_len , void * data , __u32 metadata_len ,
134- void * metadata , __u32 timeout_ms , __u64 * result )
135- {
136- struct nvme_passthru_cmd64 cmd = {
137- .opcode = opcode ,
138- .flags = flags ,
139- .rsvd1 = rsvd ,
140- .nsid = nsid ,
141- .cdw2 = cdw2 ,
142- .cdw3 = cdw3 ,
143- .metadata = (__u64 )(uintptr_t )metadata ,
144- .addr = (__u64 )(uintptr_t )data ,
145- .metadata_len = metadata_len ,
146- .data_len = data_len ,
147- .cdw10 = cdw10 ,
148- .cdw11 = cdw11 ,
149- .cdw12 = cdw12 ,
150- .cdw13 = cdw13 ,
151- .cdw14 = cdw14 ,
152- .cdw15 = cdw15 ,
153- .timeout_ms = timeout_ms ,
154- };
155-
156- return nvme_submit_passthru64 (hdl , ioctl_cmd , & cmd , result );
157- }
158-
159- static int nvme_passthru (struct nvme_transport_handle * hdl , unsigned long ioctl_cmd , __u8 opcode ,
160- __u8 flags , __u16 rsvd , __u32 nsid , __u32 cdw2 ,
161- __u32 cdw3 , __u32 cdw10 , __u32 cdw11 , __u32 cdw12 ,
162- __u32 cdw13 , __u32 cdw14 , __u32 cdw15 , __u32 data_len ,
163- void * data , __u32 metadata_len , void * metadata ,
164- __u32 timeout_ms , __u32 * result )
165- {
166- struct nvme_passthru_cmd cmd = {
167- .opcode = opcode ,
168- .flags = flags ,
169- .rsvd1 = rsvd ,
170- .nsid = nsid ,
171- .cdw2 = cdw2 ,
172- .cdw3 = cdw3 ,
173- .metadata = (__u64 )(uintptr_t )metadata ,
174- .addr = (__u64 )(uintptr_t )data ,
175- .metadata_len = metadata_len ,
176- .data_len = data_len ,
177- .cdw10 = cdw10 ,
178- .cdw11 = cdw11 ,
179- .cdw12 = cdw12 ,
180- .cdw13 = cdw13 ,
181- .cdw14 = cdw14 ,
182- .cdw15 = cdw15 ,
183- .timeout_ms = timeout_ms ,
184- };
185-
186- return nvme_submit_passthru (hdl , ioctl_cmd , & cmd , result );
187- }
188-
189- int nvme_submit_admin_passthru64 (struct nvme_transport_handle * hdl , struct nvme_passthru_cmd64 * cmd ,
190- __u64 * result )
191- {
192- return nvme_submit_passthru64 (hdl , NVME_IOCTL_ADMIN64_CMD , cmd , result );
193- }
194-
195- int nvme_admin_passthru64 (struct nvme_transport_handle * hdl , __u8 opcode , __u8 flags , __u16 rsvd ,
196- __u32 nsid , __u32 cdw2 , __u32 cdw3 , __u32 cdw10 ,
197- __u32 cdw11 , __u32 cdw12 , __u32 cdw13 , __u32 cdw14 ,
198- __u32 cdw15 , __u32 data_len , void * data ,
199- __u32 metadata_len , void * metadata , __u32 timeout_ms ,
200- __u64 * result )
201- {
202- return nvme_passthru64 (hdl , NVME_IOCTL_ADMIN64_CMD , opcode , flags , rsvd ,
203- nsid , cdw2 , cdw3 , cdw10 , cdw11 , cdw12 , cdw13 ,
204- cdw14 , cdw15 , data_len , data , metadata_len ,
205- metadata , timeout_ms , result );
206- }
207-
208- int nvme_submit_admin_passthru (struct nvme_transport_handle * hdl , struct nvme_passthru_cmd * cmd , __u32 * result )
116+ int nvme_submit_admin_passthru (struct nvme_transport_handle * hdl ,
117+ struct nvme_passthru_cmd * cmd , __u64 * result )
209118{
210119 switch (hdl -> type ) {
211120 case NVME_TRANSPORT_HANDLE_TYPE_DIRECT :
212- return nvme_submit_passthru (hdl , NVME_IOCTL_ADMIN_CMD , cmd , result );
121+ return nvme_submit_passthru (hdl , NVME_IOCTL_ADMIN64_CMD ,
122+ cmd , result );
213123 case NVME_TRANSPORT_HANDLE_TYPE_MI :
214- return nvme_mi_admin_admin_passthru (
215- hdl , cmd -> opcode , cmd -> flags , cmd -> rsvd1 ,
216- cmd -> nsid , cmd -> cdw2 , cmd -> cdw3 , cmd -> cdw10 ,
217- cmd -> cdw11 , cmd -> cdw12 , cmd -> cdw13 ,
218- cmd -> cdw14 , cmd -> cdw15 ,
219- cmd -> data_len , (void * )(uintptr_t )cmd -> addr ,
220- cmd -> metadata_len , (void * )(uintptr_t )cmd -> metadata ,
221- cmd -> timeout_ms , result );
124+ return nvme_mi_admin_admin_passthru (hdl , cmd , result );
222125 default :
223126 break ;
224127 }
225128
226129 return - ENOTSUP ;
227130}
228131
229- int nvme_admin_passthru (struct nvme_transport_handle * hdl , __u8 opcode , __u8 flags , __u16 rsvd ,
230- __u32 nsid , __u32 cdw2 , __u32 cdw3 , __u32 cdw10 ,
231- __u32 cdw11 , __u32 cdw12 , __u32 cdw13 , __u32 cdw14 ,
232- __u32 cdw15 , __u32 data_len , void * data ,
233- __u32 metadata_len , void * metadata , __u32 timeout_ms ,
234- __u32 * result )
235- {
236- return nvme_passthru (hdl , NVME_IOCTL_ADMIN_CMD , opcode , flags , rsvd ,
237- nsid , cdw2 , cdw3 , cdw10 , cdw11 , cdw12 , cdw13 ,
238- cdw14 , cdw15 , data_len , data , metadata_len ,
239- metadata , timeout_ms , result );
240- }
241-
242132static bool force_4k ;
243133
244134__attribute__((constructor ))
@@ -356,7 +246,7 @@ static bool nvme_uring_is_usable(struct nvme_transport_handle *hdl)
356246
357247int nvme_get_log (struct nvme_transport_handle * hdl ,
358248 struct nvme_passthru_cmd * cmd , bool rae ,
359- __u32 xfer_len , __u32 * result )
249+ __u32 xfer_len , __u64 * result )
360250{
361251 __u64 offset = 0 , xfer , data_len = cmd -> data_len ;
362252 __u64 start = (__u64 )cmd -> cdw13 << 32 | cmd -> cdw12 ;
@@ -581,37 +471,8 @@ int nvme_get_ana_log_atomic(struct nvme_transport_handle *hdl, bool rae, bool rg
581471 return - EAGAIN ;
582472}
583473
584- int nvme_submit_io_passthru64 (struct nvme_transport_handle * hdl , struct nvme_passthru_cmd64 * cmd ,
585- __u64 * result )
586- {
587- return nvme_submit_passthru64 (hdl , NVME_IOCTL_IO64_CMD , cmd , result );
588- }
589-
590- int nvme_io_passthru64 (struct nvme_transport_handle * hdl , __u8 opcode , __u8 flags , __u16 rsvd ,
591- __u32 nsid , __u32 cdw2 , __u32 cdw3 , __u32 cdw10 ,
592- __u32 cdw11 , __u32 cdw12 , __u32 cdw13 , __u32 cdw14 ,
593- __u32 cdw15 , __u32 data_len , void * data , __u32 metadata_len ,
594- void * metadata , __u32 timeout_ms , __u64 * result )
595- {
596- return nvme_passthru64 (hdl , NVME_IOCTL_IO64_CMD , opcode , flags , rsvd ,
597- nsid , cdw2 , cdw3 , cdw10 , cdw11 , cdw12 , cdw13 ,
598- cdw14 , cdw15 , data_len , data , metadata_len , metadata ,
599- timeout_ms , result );
600- }
601-
602- int nvme_submit_io_passthru (struct nvme_transport_handle * hdl , struct nvme_passthru_cmd * cmd , __u32 * result )
603- {
604- return nvme_submit_passthru (hdl , NVME_IOCTL_IO_CMD , cmd , result );
605- }
606-
607- int nvme_io_passthru (struct nvme_transport_handle * hdl , __u8 opcode , __u8 flags , __u16 rsvd ,
608- __u32 nsid , __u32 cdw2 , __u32 cdw3 , __u32 cdw10 ,
609- __u32 cdw11 , __u32 cdw12 , __u32 cdw13 , __u32 cdw14 ,
610- __u32 cdw15 , __u32 data_len , void * data , __u32 metadata_len ,
611- void * metadata , __u32 timeout_ms , __u32 * result )
474+ int nvme_submit_io_passthru (struct nvme_transport_handle * hdl ,
475+ struct nvme_passthru_cmd * cmd , __u64 * result )
612476{
613- return nvme_passthru (hdl , NVME_IOCTL_IO_CMD , opcode , flags , rsvd , nsid ,
614- cdw2 , cdw3 , cdw10 , cdw11 , cdw12 , cdw13 , cdw14 ,
615- cdw15 , data_len , data , metadata_len , metadata ,
616- timeout_ms , result );
477+ return nvme_submit_passthru (hdl , NVME_IOCTL_IO64_CMD , cmd , result );
617478}
0 commit comments