@@ -5222,8 +5222,16 @@ nvme_init_mi_cmd_flags(struct nvme_passthru_cmd *cmd, bool ish)
52225222 * This is intended to be used with any command that takes a controller list
52235223 * argument. See nvme_ns_attach_ctrls() and nvme_ns_detach().
52245224 */
5225- void nvme_init_ctrl_list (struct nvme_ctrl_list * cntlist , __u16 num_ctrls ,
5226- __u16 * ctrlist );
5225+ static inline void
5226+ nvme_init_ctrl_list (struct nvme_ctrl_list * cntlist , __u16 num_ctrls ,
5227+ __u16 * ctrlist )
5228+ {
5229+ int i ;
5230+
5231+ cntlist -> num = htole16 (num_ctrls );
5232+ for (i = 0 ; i < num_ctrls ; i ++ )
5233+ cntlist -> identifier [i ] = htole16 (ctrlist [i ]);
5234+ }
52275235
52285236/**
52295237 * nvme_init_dsm_range() - Constructs a data set range structure
@@ -5239,10 +5247,35 @@ void nvme_init_ctrl_list(struct nvme_ctrl_list *cntlist, __u16 num_ctrls,
52395247 * Return: The nvme command status if a response was received or -errno
52405248 * otherwise.
52415249 */
5242- void nvme_init_dsm_range (struct nvme_dsm_range * dsm , __u32 * ctx_attrs ,
5243- __u32 * llbas , __u64 * slbas , __u16 nr_ranges );
5250+ static inline void
5251+ nvme_init_dsm_range (struct nvme_dsm_range * dsm , __u32 * ctx_attrs ,
5252+ __u32 * llbas , __u64 * slbas , __u16 nr_ranges )
5253+ {
5254+ int i ;
5255+
5256+ for (i = 0 ; i < nr_ranges ; i ++ ) {
5257+ dsm [i ].cattr = htole32 (ctx_attrs [i ]);
5258+ dsm [i ].nlb = htole32 (llbas [i ]);
5259+ dsm [i ].slba = htole64 (slbas [i ]);
5260+ }
5261+ }
52445262
52455263/**
5264+ * nvme_init_copy_range_elbt() - Constructs a copy range elbt structure
5265+ * @elbt:
5266+ * @eilbrts: Expected initial logical block reference tag
5267+ */
5268+ static inline void
5269+ nvme_init_copy_range_elbt (__u8 * elbt , __u64 eilbrt )
5270+ {
5271+ int i ;
5272+
5273+ for (i = 0 ; i < 8 ; i ++ )
5274+ elbt [9 - i ] = (eilbrt >> (8 * i )) & 0xff ;
5275+ elbt [1 ] = 0 ;
5276+ elbt [0 ] = 0 ;
5277+ }
5278+
52465279/**
52475280 * nvme_init_copy_range() - Constructs a copy range structure
52485281 * @copy: Copy range array
@@ -5253,9 +5286,21 @@ void nvme_init_dsm_range(struct nvme_dsm_range *dsm, __u32 *ctx_attrs,
52535286 * @elbats: Expected logical block application tag
52545287 * @nr: Number of descriptors to construct
52555288 */
5256- void nvme_init_copy_range (struct nvme_copy_range * copy , __u16 * nlbs ,
5257- __u64 * slbas , __u32 * eilbrts , __u32 * elbatms ,
5258- __u32 * elbats , __u16 nr );
5289+ static inline void
5290+ nvme_init_copy_range (struct nvme_copy_range * copy , __u16 * nlbs ,
5291+ __u64 * slbas , __u32 * eilbrts , __u32 * elbatms ,
5292+ __u32 * elbats , __u16 nr )
5293+ {
5294+ int i ;
5295+
5296+ for (i = 0 ; i < nr ; i ++ ) {
5297+ copy [i ].nlb = htole16 (nlbs [i ]);
5298+ copy [i ].slba = htole64 (slbas [i ]);
5299+ copy [i ].eilbrt = htole32 (eilbrts [i ]);
5300+ copy [i ].elbatm = htole16 (elbatms [i ]);
5301+ copy [i ].elbat = htole16 (elbats [i ]);
5302+ }
5303+ }
52595304
52605305/**
52615306 * nvme_init_copy_range_f1() - Constructs a copy range f1 structure
@@ -5267,9 +5312,21 @@ void nvme_init_copy_range(struct nvme_copy_range *copy, __u16 *nlbs,
52675312 * @elbats: Expected logical block application tag
52685313 * @nr: Number of descriptors to construct
52695314 */
5270- void nvme_init_copy_range_f1 (struct nvme_copy_range_f1 * copy , __u16 * nlbs ,
5271- __u64 * slbas , __u64 * eilbrts , __u32 * elbatms ,
5272- __u32 * elbats , __u16 nr );
5315+ static inline void
5316+ nvme_init_copy_range_f1 (struct nvme_copy_range_f1 * copy , __u16 * nlbs ,
5317+ __u64 * slbas , __u64 * eilbrts , __u32 * elbatms ,
5318+ __u32 * elbats , __u16 nr )
5319+ {
5320+ int i ;
5321+
5322+ for (i = 0 ; i < nr ; i ++ ) {
5323+ copy [i ].nlb = htole16 (nlbs [i ]);
5324+ copy [i ].slba = htole64 (slbas [i ]);
5325+ copy [i ].elbatm = htole16 (elbatms [i ]);
5326+ copy [i ].elbat = htole16 (elbats [i ]);
5327+ nvme_init_copy_range_elbt (copy [i ].elbt , eilbrts [i ]);
5328+ }
5329+ }
52735330
52745331/**
52755332 * nvme_init_copy_range_f2() - Constructs a copy range f2 structure
@@ -5283,10 +5340,24 @@ void nvme_init_copy_range_f1(struct nvme_copy_range_f1 *copy, __u16 *nlbs,
52835340 * @elbats: Expected logical block application tag
52845341 * @nr: Number of descriptors to construct
52855342 */
5286- void nvme_init_copy_range_f2 (struct nvme_copy_range_f2 * copy , __u32 * snsids ,
5287- __u16 * nlbs , __u64 * slbas , __u16 * sopts ,
5288- __u32 * eilbrts , __u32 * elbatms , __u32 * elbats ,
5289- __u16 nr );
5343+ static inline void
5344+ nvme_init_copy_range_f2 (struct nvme_copy_range_f2 * copy ,
5345+ __u32 * snsids , __u16 * nlbs , __u64 * slbas , __u16 * sopts ,
5346+ __u32 * eilbrts , __u32 * elbatms , __u32 * elbats ,
5347+ __u16 nr )
5348+ {
5349+ int i ;
5350+
5351+ for (i = 0 ; i < nr ; i ++ ) {
5352+ copy [i ].snsid = htole32 (snsids [i ]);
5353+ copy [i ].nlb = htole16 (nlbs [i ]);
5354+ copy [i ].slba = htole64 (slbas [i ]);
5355+ copy [i ].sopt = htole16 (sopts [i ]);
5356+ copy [i ].eilbrt = htole32 (eilbrts [i ]);
5357+ copy [i ].elbatm = htole16 (elbatms [i ]);
5358+ copy [i ].elbat = htole16 (elbats [i ]);
5359+ }
5360+ }
52905361
52915362/**
52925363 * nvme_init_copy_range_f3() - Constructs a copy range f3 structure
@@ -5300,11 +5371,24 @@ void nvme_init_copy_range_f2(struct nvme_copy_range_f2 *copy, __u32 *snsids,
53005371 * @elbats: Expected logical block application tag
53015372 * @nr: Number of descriptors to construct
53025373 */
5303- void nvme_init_copy_range_f3 (struct nvme_copy_range_f3 * copy , __u32 * snsids ,
5304- __u16 * nlbs , __u64 * slbas , __u16 * sopts ,
5305- __u64 * eilbrts , __u32 * elbatms , __u32 * elbats ,
5306- __u16 nr );
5374+ static inline void
5375+ nvme_init_copy_range_f3 (struct nvme_copy_range_f3 * copy , __u32 * snsids ,
5376+ __u16 * nlbs , __u64 * slbas , __u16 * sopts ,
5377+ __u64 * eilbrts , __u32 * elbatms , __u32 * elbats ,
5378+ __u16 nr )
5379+ {
5380+ int i ;
53075381
5382+ for (i = 0 ; i < nr ; i ++ ) {
5383+ copy [i ].snsid = htole32 (snsids [i ]);
5384+ copy [i ].nlb = htole16 (nlbs [i ]);
5385+ copy [i ].slba = htole64 (slbas [i ]);
5386+ copy [i ].sopt = htole16 (sopts [i ]);
5387+ copy [i ].elbatm = htole16 (elbatms [i ]);
5388+ copy [i ].elbat = htole16 (elbats [i ]);
5389+ nvme_init_copy_range_elbt (copy [i ].elbt , eilbrts [i ]);
5390+ }
5391+ }
53085392
53095393/**
53105394 * nvme_get_log() - Get log page data
0 commit comments