@@ -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,8 +5247,34 @@ 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+ }
5262+
5263+ /**
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+ }
52445278
52455279/**
52465280 * nvme_init_copy_range() - Constructs a copy range structure
@@ -5252,9 +5286,21 @@ void nvme_init_dsm_range(struct nvme_dsm_range *dsm, __u32 *ctx_attrs,
52525286 * @elbats: Expected logical block application tag
52535287 * @nr: Number of descriptors to construct
52545288 */
5255- void nvme_init_copy_range (struct nvme_copy_range * copy , __u16 * nlbs ,
5256- __u64 * slbas , __u32 * eilbrts , __u32 * elbatms ,
5257- __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+ }
52585304
52595305/**
52605306 * nvme_init_copy_range_f1() - Constructs a copy range f1 structure
@@ -5266,9 +5312,21 @@ void nvme_init_copy_range(struct nvme_copy_range *copy, __u16 *nlbs,
52665312 * @elbats: Expected logical block application tag
52675313 * @nr: Number of descriptors to construct
52685314 */
5269- void nvme_init_copy_range_f1 (struct nvme_copy_range_f1 * copy , __u16 * nlbs ,
5270- __u64 * slbas , __u64 * eilbrts , __u32 * elbatms ,
5271- __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+ }
52725330
52735331/**
52745332 * nvme_init_copy_range_f2() - Constructs a copy range f2 structure
@@ -5282,10 +5340,24 @@ void nvme_init_copy_range_f1(struct nvme_copy_range_f1 *copy, __u16 *nlbs,
52825340 * @elbats: Expected logical block application tag
52835341 * @nr: Number of descriptors to construct
52845342 */
5285- void nvme_init_copy_range_f2 (struct nvme_copy_range_f2 * copy , __u32 * snsids ,
5286- __u16 * nlbs , __u64 * slbas , __u16 * sopts ,
5287- __u32 * eilbrts , __u32 * elbatms , __u32 * elbats ,
5288- __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+ }
52895361
52905362/**
52915363 * nvme_init_copy_range_f3() - Constructs a copy range f3 structure
@@ -5299,11 +5371,24 @@ void nvme_init_copy_range_f2(struct nvme_copy_range_f2 *copy, __u32 *snsids,
52995371 * @elbats: Expected logical block application tag
53005372 * @nr: Number of descriptors to construct
53015373 */
5302- void nvme_init_copy_range_f3 (struct nvme_copy_range_f3 * copy , __u32 * snsids ,
5303- __u16 * nlbs , __u64 * slbas , __u16 * sopts ,
5304- __u64 * eilbrts , __u32 * elbatms , __u32 * elbats ,
5305- __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 ;
53065381
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+ }
53075392
53085393/**
53095394 * nvme_get_log() - Get log page data
0 commit comments