<div dir="ltr"><div>As I've presented before, I really think Lustre should get out of the business of tracking HSM requests and progress completely for scalability reasons. External tools should do their thing, and simply let Lustre know when to atomically change the file's layout (released, restored, migrated, mirrored, etc). (All this work is in the "externalized coordinator" and "hsm as layout" patches up at WC.) </div><div><br></div><div>Anyhow, to that end, I vote in favor of resolving by removal this apparently unused feature. Liblustre could silently drop the extent info for a trivial "fix".  </div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"></blockquote><br><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">My understanding of the different use cases was:</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">- Copytool I/O could be done in parallel and acknowledge write range in any order.</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">- Having a map of what have been copied and what haven't been was done thinking of implementing partial restore in the future. I'm not sure when this feature will be implemented it will really need this from the coordinator.</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">You can verify some existing copytools in case some of them acknowledge I/O with a specific pattern:</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">- posix copytool in lustre source</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">- S3 copytool Lemur (<a href="https://github.com/whamcloud/lemur">https://github.com/whamcloud/lemur</a>)</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">- TSM copytools (<a href="https://github.com/tstibor/ltsm,">https://github.com/tstibor/ltsm,</a> and Simon linked this one recently: <a href="https://github.com/guilbaults/ct_tsm/">https://github.com/guilbaults/ct_tsm/</a>)</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">I would be in favor of not raising an error if acknowledging overlaps an existing extent. </pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">Aurélien</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">Le 01/09/2020 03:28, « lustre-devel au nom de NeilBrown » <<a href="http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org">lustre-devel-bounces at lists.lustre.org</a> au nom de <a href="http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org">neilb at suse.de</a>> a écrit :</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe.</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    "code deleted in code debugged" is my preferred outcome.  I haven't</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    heard anyone clamouring to keep the current behaviour, so I'm leaning</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    more in that direction.</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    Thanks,</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    NeilBrown</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    On Mon, Aug 31 2020, Joseph Benjamin Evans wrote:</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)"></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    > I don't think anything is actually monitoring or using the results of those extents, specifically.  "bytes copied" would be equally useful to the end user, I'd think.  Others may have better data on real-world usage, though.  So this might be a "code deleted is code debugged" situation.</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    > -Ben</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    > On 8/31/20, 12:03 AM, "lustre-devel on behalf of NeilBrown" <<a href="http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org">lustre-devel-bounces at lists.lustre.org</a> on behalf of <a href="http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org">neilb at suse.de</a>> wrote:</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     I have a question about llapi_hsm_action_progress().  The documentation</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     says that every interval sent "must" be unique, and must not overlap</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     (which not exactly the same as 'unique').  The code (on server side)</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     only partially enforces this.  It causes any request for an empty</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     interval (start>end) to fail, but otherwise accepts any interval.  If it</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     gets two identical intervals (not just overlapping, but identical), it</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     ignores the second.  This seems weird.</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     It would make some sense to just accept any interval - all it does is</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     sum the lengths, and use this to report status, so no corruption would</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     result.  It would also make sense to return an error if an interval</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     overlaps any previous interval, as this violates the spec.  It might</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     make sense to accept any interval, but only count the overlapped length</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     once.  But the current behaviour of only ignoring exact duplicates is</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     weird.  I tried removing that check, but there is a test (hsm_test 108)</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     which checks for repeating identical intervals.</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     I want to clean up this code as I'm converting all users of the lustre</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     interval-tree to use the upstream-linux interval tree code.  What should</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     I do?</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     Should I remove test 108 because it is only testing one particular</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     corner case, or should I improve the code to handle all overlaps</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     consistently?  Would it be OK to fail an overlap (I'd need to change</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     test 108), it must they be quietly accepted?</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    ></pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     Thanks,</pre></div><div><pre style="white-space:pre-wrap;color:rgb(0,0,0)">    >     NeilBrown</pre></div></blockquote></div>