<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Sat, Oct 27, 2018 at 12:33 PM Richard Weinberger <<a href="mailto:richard@nod.at">richard@nod.at</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Rafał,<br>
<br>
Am Montag, 22. Oktober 2018, 17:34:44 CEST schrieb Rafał Miłecki:<br>
> Then I took a close look at ovl_copy_up_locked() and it seems above<br>
> info isn't accurate. It seems to me that setxattr() happens between<br>
> fsync and link. I modified my C app to follow that order (open, write,<br>
> fsync, setxattr, link) and I can reproduce the problem now!<br>
> <br>
> Steps to reproduce the problem:<br>
> 1) compile tmptest.c<br>
> 2) tmptest /overlay/upper/foo.txt user.bar baz<br>
> 3) wait 5 seconds (so ubifs writes to flash)<br>
> 4) power cut<br>
> 5) boot again and check content of /overlay/upper/foo.txt<br>
> 6) in my case content appears to be 00 00 00 00<br>
<br>
Just returned from Edinburgh and had a chance to look at the problem.<br>
The problem is not that no write-back happens, in fact it happens just fine.<br>
But we have a problem upon journal replay if an unlinked file (O_TMPFILE)<br>
gets relinked in combination with xattrs.<br>
<br>
Can you please give the attached patch a try? It is not perfect but if I <br>
understand the problem correctly it should fix the issues you're facing.<br></blockquote><div><br></div><div>Your patch seems to have fixed it for me, sample size = 1.</div><div> </div>-- <br></div><div class="gmail_quote">Russell Senior</div><div class="gmail_quote"><a href="mailto:russell@personaltelco.net">russell@personaltelco.net</a><br></div></div>