Hi John,

The initial string in the OSC name is the filesystem name and the long 
hexadecimal number at the end is the client ID. The client ID is specific to 
the mount point that “owns” the OSC, and typically changes each time the 
filesystem is mounted. It is there to differentiate devices  when the same 
filesystem is mounted multiple times.

You can retrieve both of the values by passing the mount directory to 
llapi_get_name(). This function returns a string with filesystem name and 
client ID in the format “FSNAME-ID". You can split the string on the ‘-‘ to 
extract those values, and then use them construct the right name for the 
current OSC being used for that file on that particular mountpoint.

Note, like the client ID, the OSC name is specific to that mount point. The 
actual OST name is just FSNAME-OST####.

robert

On Jul 18, 2016, at 15:22 , John Bauer 
<[email protected]<mailto:[email protected]>> wrote:


I will restate the problem I am having with Lustre.

With my I/O instrumentation library, I want to use llapi_file_get_stripe() to 
find the OSTs that a file of interest is striped on and then monitor only those 
OST's using files in the directory /proc/fs/lustre/osc.  This needs to be done 
programmatically, and in a general sense, with potentially only a relative path 
name.

llapi_file_get stripe() yields
lmm_stripe_count:   1
lmm_stripe_size:    1048576
lmm_pattern:        1
lmm_layout_gen:     0
lmm_stripe_offset:  12

lmm_oi.oi_fid       0x194aa

        obdidx           objid           objid           group
            12        31515860      0x1e0e4d4                0

If I use obdidx=12=0xc to find the OST in directory /proc/fs/lustre/osc, I get 
multiple OSTs as there are multiple file systems with an ost of index 12 ( note 
that obdidx is decimal and entries in /proc/fs/lustre/osc are hexadecimal, so 
we are looking for OST000c ).

% ls -ld /proc/fs/lustre/osc/*OST000c*
dr-xr-xr-x 2 root root 0 Jul 18 14:31 
/proc/fs/lustre/osc/nbp1-OST000c-osc-ffff88090509f000
dr-xr-xr-x 2 root root 0 Jul 18 14:31 
/proc/fs/lustre/osc/nbp2-OST000c-osc-ffff881038061c00
dr-xr-xr-x 2 root root 0 Jul 18 14:31 
/proc/fs/lustre/osc/nbp6-OST000c-osc-ffff88084c405400
dr-xr-xr-x 2 root root 0 Jul 18 14:31 
/proc/fs/lustre/osc/nbp7-OST000c-osc-ffff8807a8e1d400
dr-xr-xr-x 2 root root 0 Jul 18 14:31 
/proc/fs/lustre/osc/nbp8-OST000c-osc-ffff88078339b800
dr-xr-xr-x 2 root root 0 Jul 18 14:31 
/proc/fs/lustre/osc/nbp9-OST000c-osc-ffff8807833a5400

So I need to figure out which directory entry applies to the OST of my file of 
interest.

I looked at the inode for clues.  I did an stat() of the file to get

dev_t     st_dev=0xcc5d43c2
ino_t     st_ino=0x2000311ed0194aa

I notice the lov_user_md->oi_fid=0x0194aa,  populated by 
llapi_file_get_stripe(), is reflected in the lower part of 
stat.st<http://stat.st>_ino=0x2000311ed0194aa.  My question is, "Does the 
remainder of st_ino, 2000311ed, give me any clue as to which OST I should use 
out of /proc/fs/lustre/osc?"  The same question applies to the OST's 
objid=0x1e0e4d4 and the file's st_dev=0xcc5d43c2.

Because I know a priori that the file is in the lov nbp2, I know I need to find 
/proc/fs/lustre/osc/nbp2-OST000c-osc-ffff881038061c00.  What does the
ffff881038061c00 represent?  It is the same value for all OST's in a given lov, 
so I am guessing it is lov related.

There are over 1200 OST on the node, so I want to minimize the number that I 
instrument.
Any information that would shed some light on this would be greatly appreciated.
John

--
I/O Doctors, LLC
507-766-0378
[email protected]<mailto:[email protected]>

_______________________________________________
lustre-discuss mailing list
[email protected]<mailto:[email protected]>
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org

_______________________________________________
lustre-discuss mailing list
[email protected]
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org

Reply via email to