@@ -10390,7 +10390,7 @@ static int get_log_offset(struct nvme_dev *dev, struct nvme_get_log_args *args,
1039010390}
1039110391
1039210392static int get_reachability_group_desc (struct nvme_dev * dev , struct nvme_get_log_args * args ,
10393- __u64 offset , struct nvme_reachability_groups_log * * logp )
10393+ __u64 * offset , struct nvme_reachability_groups_log * * logp )
1039410394{
1039510395 int err ;
1039610396 struct nvme_reachability_groups_log * log = * logp ;
@@ -10399,11 +10399,11 @@ static int get_reachability_group_desc(struct nvme_dev *dev, struct nvme_get_log
1039910399
1040010400 for (i = 0 ; i < le16_to_cpu (log -> nrgd ); i ++ ) {
1040110401 len = sizeof (* log -> rgd );
10402- err = get_log_offset (dev , args , & offset , len , (void * * )& log );
10402+ err = get_log_offset (dev , args , offset , len , (void * * )& log );
1040310403 if (err )
1040410404 goto err_free ;
1040510405 len = le32_to_cpu (log -> rgd [i ].nnid ) * sizeof (* log -> rgd [i ].nsid );
10406- err = get_log_offset (dev , args , & offset , len , (void * * )& log );
10406+ err = get_log_offset (dev , args , offset , len , (void * * )& log );
1040710407 if (err )
1040810408 goto err_free ;
1040910409 }
@@ -10418,7 +10418,8 @@ static int get_reachability_group_desc(struct nvme_dev *dev, struct nvme_get_log
1041810418}
1041910419
1042010420static int get_reachability_groups (struct nvme_dev * dev , bool rgo , bool rae ,
10421- struct nvme_reachability_groups_log * * logp )
10421+ struct nvme_reachability_groups_log * * logp ,
10422+ __u64 * lenp )
1042210423{
1042310424 int err ;
1042410425 struct nvme_reachability_groups_log * log ;
@@ -10441,11 +10442,12 @@ static int get_reachability_groups(struct nvme_dev *dev, bool rgo, bool rae,
1044110442 if (err )
1044210443 goto err_free ;
1044310444
10444- err = get_reachability_group_desc (dev , & args , log_len , & log );
10445+ err = get_reachability_group_desc (dev , & args , & log_len , & log );
1044510446 if (err )
1044610447 goto err_free ;
1044710448
1044810449 * logp = log ;
10450+ * lenp = log_len ;
1044910451 return 0 ;
1045010452
1045110453err_free :
@@ -10460,6 +10462,7 @@ static int get_reachability_groups_log(int argc, char **argv, struct command *cm
1046010462 const char * rgo = "Return Groups Only" ;
1046110463 nvme_print_flags_t flags ;
1046210464 int err ;
10465+ __u64 len = 0 ;
1046310466
1046410467 _cleanup_free_ struct nvme_reachability_groups_log * log = NULL ;
1046510468
@@ -10489,9 +10492,9 @@ static int get_reachability_groups_log(int argc, char **argv, struct command *cm
1048910492 return err ;
1049010493 }
1049110494
10492- err = get_reachability_groups (dev , cfg .rgo , cfg .rae , & log );
10495+ err = get_reachability_groups (dev , cfg .rgo , cfg .rae , & log , & len );
1049310496 if (!err )
10494- nvme_show_reachability_groups_log (log , flags );
10497+ nvme_show_reachability_groups_log (log , len , flags );
1049510498 else if (err > 0 )
1049610499 nvme_show_status (err );
1049710500 else
0 commit comments