Short answer: You're looking in the wrong place.  What you're looking at is the 
policy that the file was created under.  For the actual details of the first 
offset in the file, look at objects[0].l_ost_idx.

-Ben Evans

From: lustre-discuss 
<[email protected]<mailto:[email protected]>>
 on behalf of John Bauer <[email protected]<mailto:[email protected]>>
Date: Saturday, April 30, 2016 at 4:45 PM
To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Subject: [lustre-discuss] llapi_file_get_stripe() and lmm_stripe_offset


I have noticed some inconsistencies in the lfs setstripe/getstripe commands and 
llapi_file_get_stripe() function.   Notice in the lfs setstripe/getstripe 
example below that specifying 7 for the offset with lfs setstripe -i 7 results 
in lfs getstripe reporting lmm_stripe_offset=7.  That all looks good.  But the 
simple program below that calls llapi_file_get_stripe() and prints out the 
lmm_XXX values reports lmm_stripe_offset=0.  Doesn't seem right.

% lfs setstripe -c 4 -i 7 file.dat
% lfs getstripe file.dat
file.dat
lmm_stripe_count:   4
lmm_stripe_size:    1048576
lmm_pattern:        1
lmm_layout_gen:     0
lmm_stripe_offset:  7
        obdidx           objid           objid           group
             7         5611546       0x55a01a                0
             0         5607846       0x5591a6                0
             8         5612725       0x55a4b5                0
            16         5611434       0x559faa                0


But whenever I call llapi_file_get_stripe(), the value lmm_stripe_offset that 
is returned in the struct lov_user_md is always 0.

% ./main.exe file.dat
0=llapi_file_get_stripe()
lmm_stripe_count=4
lmm_stripe_size=1048576
lmm_pattern=1
lmm_layout_gen=0
lmm_stripe_offset=0
% cat main.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "lustre/lustre_user.h"

main(int argc, char **argv){
   if( argc < 2 ) return -1 ;
   char *fileName = argv[1] ;
   struct lov_user_md_v3 lum ;
   memset( &lum, 0, sizeof(lum) ) ;
   int status = llapi_file_get_stripe(fileName, &lum);
   fprintf(stderr,"%d=llapi_file_get_stripe()\n",status);
   if( status != 0 ) return -1 ;
   fprintf(stderr,"lmm_stripe_count=%d\n",lum.lmm_stripe_count);
   fprintf(stderr,"lmm_stripe_size=%lld\n",lum.lmm_stripe_size);
   fprintf(stderr,"lmm_pattern=%d\n",lum.lmm_pattern);
   fprintf(stderr,"lmm_layout_gen=%d\n",lum.lmm_layout_gen);
   fprintf(stderr,"lmm_stripe_offset=%d\n",(int)lum.lmm_stripe_offset);
   exit(0);
}



--
I/O Doctors, LLC
507-766-0378
[email protected]<mailto:[email protected]>
_______________________________________________
lustre-discuss mailing list
[email protected]
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org

Reply via email to