While sitting stuck in traffic in a torrential downpour I figured out 3 of my 4 questions. The only remain question:  Can something be done about the prints coming from  the llapi_get_pool...() functions?

llapi_get_poollist() generates a print of:*Pools from nbp17:*

llapi_get_poolmembers() generates a print of:*Pool: nbp17.1_ssd*

John

On 6/15/2022 7:53 AM, lustre-discuss-requ...@lists.lustre.org wrote:
Send lustre-discuss mailing list submissions to
        lustre-discuss@lists.lustre.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org
or, via email, send a message with subject or body 'help' to
        lustre-discuss-requ...@lists.lustre.org

You can reach the person managing the list at
        lustre-discuss-ow...@lists.lustre.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of lustre-discuss digest..."


Today's Topics:

    1. Re: llapi documentation (Andreas Dilger)
    2. Re: llapi documentation (John Bauer)


----------------------------------------------------------------------

Message: 1
Date: Wed, 15 Jun 2022 07:08:58 +0000
From: Andreas Dilger<adil...@whamcloud.com>
To: John Bauer<bau...@iodoctors.com>
Cc:"lustre-discuss@lists.lustre.org"
        <lustre-discuss@lists.lustre.org>
Subject: Re: [lustre-discuss] llapi documentation
Message-ID:<19c08e40-b54a-485d-99e8-925886608...@ddn.com>
Content-Type: text/plain; charset="us-ascii"

On Jun 14, 2022, at 05:32, John Bauer 
<bau...@iodoctors.com<mailto:bau...@iodoctors.com>> wrote:

I have had little success in my search for documentation on pool functions in 
llapi. I've looked in:

https://wiki.lustre.org/PFL2_High_Level_Design

https://doc.lustre.org/lustre_manual.xhtml#managingstripingfreespace


I'm looking for info on llapi_get_poollist() and llapi_get_poolmembers().  I've 
found the prototype in /usr/include/lustre/lustreapi.h, but that's about it.

Can anyone point me to some documentation?

it looks like there aren't man pages for these functions, just the function 
comment blocks
in the code, and their usage internally:

/**
  * Get the list of pools in a filesystem.
  * \param name        filesystem name or path
  * \param poollist    caller-allocated array of char*
  * \param list_size   size of the poollist array
  * \param buffer      caller-allocated buffer for storing pool names
  * \param buffer_size size of the buffer
  *
  * \return number of pools retrieved for this filesystem
  * \retval -error failure
  */
int llapi_get_poollist(const char *name, char **poollist, int list_size,
                        char *buffer, int buffer_size)

/**
  * Get the list of pool members.
  * \param poolname    string of format \<fsname\>.\<poolname\>
  * \param members     caller-allocated array of char*
  * \param list_size   size of the members array
  * \param buffer      caller-allocated buffer for storing OST names
  * \param buffer_size size of the buffer
  *
  * \return number of members retrieved for this pool
  * \retval -error failure
  */
int llapi_get_poolmembers(const char *poolname, char **members,
                           int list_size, char *buffer, int buffer_size)

Patches to add llapi_get_poollist.3 and llapi_get_poolmembers.3 (and related) 
man
pages welcome. The pool related functions should probably be moved into a new
liblustreapi_pool.c file to reduce the size of liblustreapi.c.

Cheers, Andreas
--
Andreas Dilger
Lustre Principal Architect
Whamcloud







-------------- next part --------------
An HTML attachment was scrubbed...
URL:<http://lists.lustre.org/pipermail/lustre-discuss-lustre.org/attachments/20220615/ef3c7324/attachment-0001.htm>

------------------------------

Message: 2
Date: Wed, 15 Jun 2022 07:56:40 -0500
From: John Bauer<bau...@iodoctors.com>
To: Andreas Dilger<adil...@whamcloud.com>
Cc:"lustre-discuss@lists.lustre.org"
        <lustre-discuss@lists.lustre.org>
Subject: Re: [lustre-discuss] llapi documentation
Message-ID:<8b437470-1f49-1535-94f2-8492956a4...@iodoctors.com>
Content-Type: text/plain; charset="utf-8"; Format="flowed"

Andreas,

Thanks for the info.? It got me a lot farther down the road. A few comments:

1)? It appears that the values returned in the poollist argument to
llapi_get_poollist() are temporary.? I used the values in

poollist in the call to llapi_get_poolmembers( poollist[i],...). Works
great on the first call to get_poolmembers(), but subsequent calls

fail and it appears the poollist has been overwritten.? If I make my own
copy of the strings in poollist before calling get_poolmembers,
everythings works well.

If this is indeed the case, it should be noted.

2)? There are prints to stdout or stderr resulting from calls to these
llapi functions.

llapi_get_poollist generates a print of:Pools from nbp17:

llapi_get_poolmembers generates a print of:Pool: nbp17.1_ssd

Seems undesirable to have llapi doing unrequested prints.

3)? What is the buffer argument good for ( last argument for each of the
functions )?? It appears to be populated with the first value in

in the array.

4)? Here is output from my test program.? There are 10 poolNames.? All
works great until I get to the pool that has 64 members ( which I

know from other paths ).? The 2nd argument to llapi_get_poolmembers() is
a 'char *poolMembers[256]'.? Plenty of room, but the call fails

with a return value of -75.? Why?

Pools from nbp17:
poollist_get() nPool=10 buffer=nbp17.1_hdd
Pool: nbp17.1_hdd
poollist_get() poolNames[0]=nbp17.1_hdd 8 members buffer=nbp17-OST0000_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[0]=nbp17-OST0000_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[1]=nbp17-OST0001_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[2]=nbp17-OST0002_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[3]=nbp17-OST0003_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[4]=nbp17-OST0004_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[5]=nbp17-OST0005_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[6]=nbp17-OST0006_UUID
poollist_get()?????? poolNames[0]=nbp17.1_hdd members[7]=nbp17-OST0007_UUID
Pool: nbp17.1_ssd
poollist_get() poolNames[1]=nbp17.1_ssd 8 members buffer=nbp17-OST0064_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[0]=nbp17-OST0064_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[1]=nbp17-OST0065_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[2]=nbp17-OST0066_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[3]=nbp17-OST0067_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[4]=nbp17-OST0068_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[5]=nbp17-OST0069_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[6]=nbp17-OST006a_UUID
poollist_get()?????? poolNames[1]=nbp17.1_ssd members[7]=nbp17-OST006b_UUID
Pool: nbp17.2_hdd
poollist_get() poolNames[2]=nbp17.2_hdd 8 members buffer=nbp17-OST0008_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[0]=nbp17-OST0008_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[1]=nbp17-OST0009_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[2]=nbp17-OST000a_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[3]=nbp17-OST000b_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[4]=nbp17-OST000c_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[5]=nbp17-OST000d_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[6]=nbp17-OST000e_UUID
poollist_get()?????? poolNames[2]=nbp17.2_hdd members[7]=nbp17-OST000f_UUID
Pool: nbp17.2_ssd
poollist_get() poolNames[3]=nbp17.2_ssd 8 members buffer=nbp17-OST006c_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[0]=nbp17-OST006c_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[1]=nbp17-OST006d_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[2]=nbp17-OST006e_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[3]=nbp17-OST006f_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[4]=nbp17-OST0070_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[5]=nbp17-OST0071_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[6]=nbp17-OST0072_UUID
poollist_get()?????? poolNames[3]=nbp17.2_ssd members[7]=nbp17-OST0073_UUID
Pool: nbp17.3_hdd
poollist_get() poolNames[4]=nbp17.3_hdd 8 members buffer=nbp17-OST0010_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[0]=nbp17-OST0010_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[1]=nbp17-OST0011_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[2]=nbp17-OST0012_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[3]=nbp17-OST0013_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[4]=nbp17-OST0014_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[5]=nbp17-OST0015_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[6]=nbp17-OST0016_UUID
poollist_get()?????? poolNames[4]=nbp17.3_hdd members[7]=nbp17-OST0017_UUID
Pool: nbp17.3_ssd
poollist_get() poolNames[5]=nbp17.3_ssd 8 members buffer=nbp17-OST0074_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[0]=nbp17-OST0074_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[1]=nbp17-OST0075_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[2]=nbp17-OST0076_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[3]=nbp17-OST0077_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[4]=nbp17-OST0078_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[5]=nbp17-OST0079_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[6]=nbp17-OST007a_UUID
poollist_get()?????? poolNames[5]=nbp17.3_ssd members[7]=nbp17-OST007b_UUID
Pool: nbp17.4_hdd
poollist_get() poolNames[6]=nbp17.4_hdd 8 members buffer=nbp17-OST0018_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[0]=nbp17-OST0018_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[1]=nbp17-OST0019_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[2]=nbp17-OST001a_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[3]=nbp17-OST001b_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[4]=nbp17-OST001c_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[5]=nbp17-OST001d_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[6]=nbp17-OST001e_UUID
poollist_get()?????? poolNames[6]=nbp17.4_hdd members[7]=nbp17-OST001f_UUID
Pool: nbp17.4_ssd
poollist_get() poolNames[7]=nbp17.4_ssd 8 members buffer=nbp17-OST007c_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[0]=nbp17-OST007c_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[1]=nbp17-OST007d_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[2]=nbp17-OST007e_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[3]=nbp17-OST007f_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[4]=nbp17-OST0080_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[5]=nbp17-OST0081_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[6]=nbp17-OST0082_UUID
poollist_get()?????? poolNames[7]=nbp17.4_ssd members[7]=nbp17-OST0083_UUID
Pool: nbp17.hdd-pool
poollist_get() poolNames[8]=nbp17.hdd-pool -75 members
buffer=nbp17-OST0000_UUID
Pool: nbp17.ssd-pool
poollist_get() poolNames[9]=nbp17.ssd-pool -75 members
buffer=nbp17-OST0064_UUID

John

On 6/15/22 02:08, Andreas Dilger wrote:
On Jun 14, 2022, at 05:32, John Bauer<bau...@iodoctors.com>  wrote:
I have had little success in my search for documentation on pool
functions in llapi. I've looked in:

https://wiki.lustre.org/PFL2_High_Level_Design

https://doc.lustre.org/lustre_manual.xhtml#managingstripingfreespace


I'm looking for info on llapi_get_poollist() and
llapi_get_poolmembers().? I've found the prototype in
/usr/include/lustre/lustreapi.h, but that's about it.

Can anyone point me to some documentation?
it looks like there aren't man pages for these functions, just the
function comment blocks
in the code, and their usage internally:

/**
?* Get the list of pools in a filesystem.
?* \param name? ? ? ??filesystem name or path
?* \param poollist? ??caller-allocated array of char*
?* \param list_size???size of the poollist array
?* \param buffer? ? ??caller-allocated buffer for storing pool names
?* \param buffer_size size of the buffer
?*
?* \return number of pools retrieved for this filesystem
?* \retval -error failure
?*/
int?llapi_get_poollist(const?char?*name,?char?**poollist,?int?list_size,
? ? ? ? ? ? ? ? ? ? ? ?char?*buffer,?int?buffer_size)

/**
?* Get the list of pool members.
?* \param poolname? ??string of format \<fsname\>.\<poolname\>
?* \param members?? ??caller-allocated array of char*
?* \param list_size???size of the members array
?* \param buffer? ? ??caller-allocated buffer for storing OST names
?* \param buffer_size size of the buffer
?*
?* \return number of members retrieved for this pool
?* \retval -error failure
?*/
int?llapi_get_poolmembers(const?char?*poolname,?char?**members,
??int?list_size,?char?*buffer,?int?buffer_size)

Patches to add?llapi_get_poollist.3 and llapi_get_poolmembers.3 (and
related) man
pages welcome. The pool related functions should probably be moved
into a new
liblustreapi_pool.c file to reduce the size of liblustreapi.c.

Cheers, Andreas
--
Andreas Dilger
Lustre?Principal Architect
Whamcloud







On 6/15/22 02:08, Andreas Dilger wrote:
On Jun 14, 2022, at 05:32, John Bauer<bau...@iodoctors.com>  wrote:
I have had little success in my search for documentation on pool
functions in llapi. I've looked in:

https://wiki.lustre.org/PFL2_High_Level_Design

https://doc.lustre.org/lustre_manual.xhtml#managingstripingfreespace


I'm looking for info on llapi_get_poollist() and
llapi_get_poolmembers().? I've found the prototype in
/usr/include/lustre/lustreapi.h, but that's about it.

Can anyone point me to some documentation?
it looks like there aren't man pages for these functions, just the
function comment blocks
in the code, and their usage internally:

/**
?* Get the list of pools in a filesystem.
?* \param name? ? ? ??filesystem name or path
?* \param poollist? ??caller-allocated array of char*
?* \param list_size???size of the poollist array
?* \param buffer? ? ??caller-allocated buffer for storing pool names
?* \param buffer_size size of the buffer
?*
?* \return number of pools retrieved for this filesystem
?* \retval -error failure
?*/
int?llapi_get_poollist(const?char?*name,?char?**poollist,?int?list_size,
? ? ? ? ? ? ? ? ? ? ? ?char?*buffer,?int?buffer_size)

/**
?* Get the list of pool members.
?* \param poolname? ??string of format \<fsname\>.\<poolname\>
?* \param members?? ??caller-allocated array of char*
?* \param list_size???size of the members array
?* \param buffer? ? ??caller-allocated buffer for storing OST names
?* \param buffer_size size of the buffer
?*
?* \return number of members retrieved for this pool
?* \retval -error failure
?*/
int?llapi_get_poolmembers(const?char?*poolname,?char?**members,
??int?list_size,?char?*buffer,?int?buffer_size)

Patches to add?llapi_get_poollist.3 and llapi_get_poolmembers.3 (and
related) man
pages welcome. The pool related functions should probably be moved
into a new
liblustreapi_pool.c file to reduce the size of liblustreapi.c.

Cheers, Andreas
--
Andreas Dilger
Lustre?Principal Architect
Whamcloud







-------------- next part --------------
An HTML attachment was scrubbed...
URL:<http://lists.lustre.org/pipermail/lustre-discuss-lustre.org/attachments/20220615/bc7e18e2/attachment.htm>

------------------------------

Subject: Digest Footer

_______________________________________________
lustre-discuss mailing list
lustre-discuss@lists.lustre.org
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org


------------------------------

End of lustre-discuss Digest, Vol 195, Issue 13
***********************************************
_______________________________________________
lustre-discuss mailing list
lustre-discuss@lists.lustre.org
http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org

Reply via email to