<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. </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. 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 <pfarrell@ddn.com> 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. It forces us to deal with ldiskfs but there's all of that shared code reorg, etc, which this can let us partially skip. 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... 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"> </span>lustre-devel <lustre-devel-bounces@lists.lustre.org> on behalf of Day, Timothy <timday@amazon.com><br>
<b>Sent:</b><span class="Apple-converted-space"> </span>Sunday, January 19, 2025 9:57 PM<br>
<b>To:</b><span class="Apple-converted-space"> </span>NeilBrown <neilb@suse.de><br>
<b>Cc:</b><span class="Apple-converted-space"> </span>lustre-devel@lists.lustre.org <lustre-devel@lists.lustre.org><br>
<b>Subject:</b><span class="Apple-converted-space"> </span>Re: [lustre-devel] [LSF/MM/BPF TOPIC] [DRAFT] Lustre client upstreaming</font>
<div> </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>
> On 1/18/25, 5:21 PM, "NeilBrown" <neilb@suse.de <<a href="mailto:neilb@suse.de">mailto:neilb@suse.de</a>>> wrote:<br>
> > On Sun, 19 Jan 2025, Day, Timothy wrote:<br>
> ><br>
> > On the other hand, I wonder if we upstream the whole thing all at once. Beside<br>
> > the code being a bit nicer, the client isn't really that much closer to being upstream<br>
> > than the server is. And no one else can test the client without having a Lustre<br>
> > server on-hand. So no-one can easily run xfstests or similar. And doing everything<br>
> > all at once would preempt questions of client/server split or the server upstreaming<br>
> > timeline. But upstreaming so much all at once is probably more unrealistic.<br>
><br>
><br>
> The main difference I see between server and client in upstreaming terms<br>
> is the storage backend. It would need to use un-patched ext4 - ideally<br>
> using VFS interfaces though we might be able to negotiate with the ext4<br>
> team to get some exports. I don't know much about the delta between<br>
> ldiskfs and ext4 and understand it is much smaller than it once was, but<br>
> it would need to be zero. I'm working towards getting the pdirop patch<br>
> 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"> </span><a href="https://review.whamcloud.com/c/fs/lustre-release/+/55594">https://review.whamcloud.com/c/fs/lustre-release/+/55594</a><br>
<br>
> The other difference is that a lot of the "revise code to match upstream<br>
> style" work has focused on client and ignored server-only code.<br>
><br>
><br>
> It might be sensible to set the goal as "client and server" including<br>
> only the ext4 backend and possibly only the socklnd network interface.<br>
> It will be a big code drop either way. People aren't going to go over<br>
> every line with a fine-tooth-comb. They will mostly look at whichever<br>
> bit particularly interests them, and look at the process and community<br>
> behind the code.<br>
><br>
><br>
> Being able to build a pure upstream kernel, add a user-space tools<br>
> package, and test would certainly be a plus. That would be something<br>
> worth canvassing at LSF - is there any value in landing the client<br>
> 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>
><br>
> NeilBrown<br>
><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>—</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>