<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
IMHO, there would be objections to Lustre changes to ext4 to allow it to be used
<div>like ldiskfs. &nbsp;</div>
<div><br>
</div>
<div>We cannot use the VFS interface as-is, since Lustre needs to have</div>
<div>compound journaled transactions that are atomically committed. &nbsp;Also, there are</div>
<div>some operations (e.g. DNE namespace operations) which do not have VFS</div>
<div>equivalents, so they would require poking through the VFS, and in general the</div>
<div>VFS does a lot of things we *don't* want it to do for Lustre.</div>
<div><br>
</div>
<div>If there are objections to patching ext4 to allow osd-ldiskfs to access transactions</div>
<div>directly, then the alternative would be to copy it to ldiskfs and patch it as we do</div>
<div>today, but I suspect that would also be frowned upon.</div>
<div><br>
</div>
<div>Don't get me wrong, it's not that I *want* to maintain ldiskfs forever out of tree,</div>
<div>but pretty much every patch we try to upstream to ext4 is rejected for one</div>
<div>reason or another, so I've stopped holding my breath that this will move forward.</div>
<div><br>
</div>
<div>Running osd-zfs doesn't need any kernel/ext4 patches, but that is an even</div>
<div>larger can of worms, and will never fly in a million years.</div>
<div><br>
</div>
<div>I think upstreaming the client is a realistic goal, but I think tying this to the</div>
<div>upstreaming of the server with ldiskfs support will derail the whole project.</div>
<div><br>
</div>
<div>Cheers, Andreas</div>
<div>
<div><br>
<blockquote type="cite">
<div>On Jan 21, 2025, at 10:02, Patrick Farrell &lt;pfarrell@ddn.com&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div>
<div class="elementToProof" style="font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt;">
I agree strongly here, and I think going upstream with both makes some things much easier.&nbsp; It forces us to deal with ldiskfs but there's all of that shared code reorg, etc, which this can let us partially skip.&nbsp; While there's probably some value in fully separating
 client and server code, it would be a fair bit of work and then the keeping in sync, etc...&nbsp; All at once seems nicer to me.</div>
<div id="appendonsend" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
</div>
<hr tabindex="-1" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; display: inline-block; width: 1468.03125px;">
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;"></span>
<div id="divRplyFwdMsg" dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
<font face="Calibri, sans-serif" style="font-size: 11pt;"><b>From:</b><span class="Apple-converted-space">&nbsp;</span>lustre-devel &lt;lustre-devel-bounces@lists.lustre.org&gt; on behalf of Day, Timothy &lt;timday@amazon.com&gt;<br>
<b>Sent:</b><span class="Apple-converted-space">&nbsp;</span>Sunday, January 19, 2025 9:57 PM<br>
<b>To:</b><span class="Apple-converted-space">&nbsp;</span>NeilBrown &lt;neilb@suse.de&gt;<br>
<b>Cc:</b><span class="Apple-converted-space">&nbsp;</span>lustre-devel@lists.lustre.org &lt;lustre-devel@lists.lustre.org&gt;<br>
<b>Subject:</b><span class="Apple-converted-space">&nbsp;</span>Re: [lustre-devel] [LSF/MM/BPF TOPIC] [DRAFT] Lustre client upstreaming</font>
<div>&nbsp;</div>
</div>
<div class="BodyFragment" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
<font size="2"><span style="font-size: 11pt;">
<div class="PlainText"><br>
<br>
\ufeff&gt; On 1/18/25, 5:21 PM, &quot;NeilBrown&quot; &lt;neilb@suse.de &lt;<a href="mailto:neilb@suse.de">mailto:neilb@suse.de</a>&gt;&gt; wrote:<br>
&gt; &gt; On Sun, 19 Jan 2025, Day, Timothy wrote:<br>
&gt; &gt;<br>
&gt; &gt; On the other hand, I wonder if we upstream the whole thing all at once. Beside<br>
&gt; &gt; the code being a bit nicer, the client isn't really that much closer to being upstream<br>
&gt; &gt; than the server is. And no one else can test the client without having a Lustre<br>
&gt; &gt; server on-hand. So no-one can easily run xfstests or similar. And doing everything<br>
&gt; &gt; all at once would preempt questions of client/server split or the server upstreaming<br>
&gt; &gt; timeline. But upstreaming so much all at once is probably more unrealistic.<br>
&gt;<br>
&gt;<br>
&gt; The main difference I see between server and client in upstreaming terms<br>
&gt; is the storage backend. It would need to use un-patched ext4 - ideally<br>
&gt; using VFS interfaces though we might be able to negotiate with the ext4<br>
&gt; team to get some exports. I don't know much about the delta between<br>
&gt; ldiskfs and ext4 and understand it is much smaller than it once was, but<br>
&gt; it would need to be zero. I'm working towards getting the pdirop patch<br>
&gt; upstreamable. Andreas would know what else is needed better than I.<br>
<br>
I've been working on a third storage backend [1]. It'll likely be done<br>
well before we submit anything upstream. It's a just memory-only<br>
target. That might be justification enough to keep the OSD APIs.<br>
<br>
[1]<span class="Apple-converted-space">&nbsp;</span><a href="https://review.whamcloud.com/c/fs/lustre-release/+/55594">https://review.whamcloud.com/c/fs/lustre-release/+/55594</a><br>
<br>
&gt; The other difference is that a lot of the &quot;revise code to match upstream<br>
&gt; style&quot; work has focused on client and ignored server-only code.<br>
&gt;<br>
&gt;<br>
&gt; It might be sensible to set the goal as &quot;client and server&quot; including<br>
&gt; only the ext4 backend and possibly only the socklnd network interface.<br>
&gt; It will be a big code drop either way. People aren't going to go over<br>
&gt; every line with a fine-tooth-comb. They will mostly look at whichever<br>
&gt; bit particularly interests them, and look at the process and community<br>
&gt; behind the code.<br>
&gt;<br>
&gt;<br>
&gt; Being able to build a pure upstream kernel, add a user-space tools<br>
&gt; package, and test would certainly be a plus. That would be something<br>
&gt; worth canvassing at LSF - is there any value in landing the client<br>
&gt; without the server?<br>
<br>
Yeah, I'm leaning towards setting the goal as both client/server and<br>
gathering opinions from LSF. The client and server are still pretty<br>
intertwined. I think having the client go upstream and then basing<br>
the server on top an in-tree client would make server development<br>
noticeably more difficult. Thinking on it more - I don't think<br>
upstreaming the server is more ambitious than the client. We<br>
have more of a process problem than a code problem. And I don't<br>
think the server is in particularly bad shape.<br>
<br>
&gt;<br>
&gt; NeilBrown<br>
&gt;<br>
<br>
Tim Day<br>
<br>
_______________________________________________<br>
lustre-devel mailing list<br>
lustre-devel@lists.lustre.org<br>
<a href="http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org">http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org</a><br>
</div>
</span></font></div>
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
<span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;">lustre-devel
 mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
<a href="mailto:lustre-devel@lists.lustre.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">lustre-devel@lists.lustre.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">
<a href="http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org</a></div>
</blockquote>
</div>
<br>
<div>
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div>Cheers, Andreas</div>
<div>\u2014</div>
<div>Andreas Dilger</div>
<div>Lustre Principal Architect</div>
<div>Whamcloud/DDN</div>
</div>
<br class="Apple-interchange-newline">
</div>
<br class="Apple-interchange-newline">
<br class="Apple-interchange-newline">
</div>
<br>
</div>
</body>
</html>