<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Andreas,</p>
    <p>Thanks for the info.  A related question:  I am using the
      O_LOV_DELAY_CREATE open flag mechanism to open a file and then set
      the composite layout with llapi_layout_file_open().  I was kind of
      surprised this worked.  This ends up opening the file twice and I
      simply close the fd returned from llapi_layout_file_open().  It
      would seem there should be an llapi function such as
      llapi_layout_set_by_fd() to match the llapi_layout_get_by_fd().  I
      need to use this mechanism to set striping for files where the
      pathname is not necessarily known before the open, such as the
      mkstemps() family of opens.  It also makes it easier to handle
      setting striping for files opened with openat().  It seems it
      would be more straight forward for llapi to work with an fd than a
      pathname if a valid fd already exists. Am I missing an easier way
      to do this?</p>
    <p>Thanks,</p>
    <p>John<br>
    </p>
    <div class="moz-cite-prefix">On 7/27/22 16:25, Andreas Dilger wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:D58CA859-926E-4B94-96AE-DA40C023DF8B@ddn.com">
      The HLD document was written before the feature was implemented,
      and is outdated.  The lustreapi.h and llapi_layout_file_comp_del.3
      man page are correct.  Feel free to update the wiki to use the
      correct argument list.
      <div class=""><br class="">
      </div>
      <div class="">I believe that it is possible to delete multiple
        components that match the <flags> argument (e.g.
        LCME_FL_NEG|LCME_FL_INIT), but I haven't tested that. <br
          class="">
        <div><br class="">
          <blockquote type="cite" class="">
            <div class="">On Jul 26, 2022, at 14:35, John Bauer <<a
                href="mailto:bauerj@iodoctors.com"
                class="moz-txt-link-freetext" moz-do-not-send="true">bauerj@iodoctors.com</a>>
              wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <div class="">Hi all,<br class="">
                <br class="">
                I would like to use the llapi_layout_file_comp_del()
                function.  I have found 2 prototypes in different
                places.  One has the 3rd argument, uint32_t flags, and
                the other doesn't.  I suspect the High Level Design
                document is incorrect.  The one line of documentation in
                lustreapi.h indicates I could delete multiple components
                with one call.  How does one do that? What are the
                applicable flags?<br class="">
                <br class="">
                From version 2.12.8 lustreapi.h<br class="">
                <br class="">
                /**<br class="">
                * Delete component(s) by the specified component id or
                flags.<br class="">
                */<br class="">
                int  llapi_layout_file_comp_del(const  char  *path,
                uint32_t  id, uint32_t  flags);<br class="">
                <br class="">
                <br class="">
                From <a
                  href="https://wiki.lustre.org/PFL2_High_Level_Design"
                  class="moz-txt-link-freetext" moz-do-not-send="true">https://wiki.lustre.org/PFL2_High_Level_Design</a><br
                  class="">
                <br class="">
                A new interface llapi_layout_file_comp_del(3) to delete
                component(s) by the specified component id (accepting
                LCME_ID_* wildcards also) from an existing file:<br
                  class="">
                <br class="">
                int llapi_layout_file_comp_del(const char *path,
                uint32_t id);<br class="">
                <br class="">
                John<br class="">
                <br class="">
                _______________________________________________<br
                  class="">
                lustre-discuss mailing list<br class="">
                <a href="mailto:lustre-discuss@lists.lustre.org"
                  class="moz-txt-link-freetext" moz-do-not-send="true">lustre-discuss@lists.lustre.org</a><br
                  class="">
<a class="moz-txt-link-freetext" href="http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org">http://lists.lustre.org/listinfo.cgi/lustre-discuss-lustre.org</a><br
                  class="">
              </div>
            </div>
          </blockquote>
        </div>
        <br class="">
        <div class="">
          <div dir="auto" class="">
            <div dir="auto" class="">
              <div dir="auto" class="">
                <div dir="auto" class="">
                  <div dir="auto" class="">
                    <div dir="auto" class="">
                      <div>Cheers, Andreas</div>
                      <div>--</div>
                      <div>Andreas Dilger</div>
                      <div>Lustre Principal Architect</div>
                      <div>Whamcloud</div>
                      <div><br class="">
                      </div>
                      <div><br class="">
                      </div>
                      <div><br class="">
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <br class="Apple-interchange-newline">
          </div>
          <br class="Apple-interchange-newline">
          <br class="Apple-interchange-newline">
        </div>
        <br class="">
      </div>
    </blockquote>
  </body>
</html>