On Mon, Dec 04, 2023 at 08:44:45PM +0100, Christoph Hellwig wrote: > On Mon, Dec 04, 2023 at 10:43:48AM -0800, Darrick J. Wong wrote: > > Dave and Allison and I at some point realized that the defer ops > > machinery works even if ->create_intent and ->create_done return NULL. > > You'd lose the ability to restart the operation after a crash, but if > > the upper layers can tolerate a half-finished operation > > (e.g. ATTR_INCOMPLETE) then that should be ok. > > > > Obviously you wouldn't touch any such *existing* code except as part of > > adapting it to be capable of using log items, and that's exactly what > > Allison did. She refactor the old xattr code to track the state of the > > operation explicitly, then moved all that into the ->finish_item > > implementation. Now, if the setattr operation does not set the LOGGED > > flag (the default), the behavior should be exactly the same as before. > > If they do set LOGGED (either because the debug knob is set; or because > > the caller is parent pointers) then ->create_{intent,done} actually > > create log intent and done items. > > > > It should never create an intent item and not the done item or the other > > way 'round, obviously. Either both functions return NULL, or they both > > return non-NULL. > > It would be really good to document this, the name LARP and why it is > considered a debug feature somewhere in the tree. No need to hold > up this series for that of course. Yeah, that'll become a third cleanup series to add a comment and elide tthe create_done thing. :) --D