Re: [yocto-patches] [pseudo] [PATCH] Only copy xattrs on a rename if it's cross-filesystem
Daniel Burgener <[email protected]>
| Newsgroups | org.yoctoproject.lists.yocto-patches |
|---|---|
| Message-ID | <[email protected]> |
On 3/11/2026 1:59 PM, Daniel Burgener via lists.yoctoproject.org wrote: > On same file-system renames, the path update in the db means that the > xattrs are already present, and copying results in duplicates. This was > previously masked by the bug fixed in d1db9c219abf92f15303486a409292237f1fc790, since that prevented the > xattr copying. Now that that bug is fixed, we started observing this > issue in 1.9.3. > > AI-Generated: Code fix by Claude Haiku 4.5. Test code by me. > > Signed-off-by: Daniel Burgener <[email protected]> > --- > pseudo_db.c | 4 +++- > test/test-xattr.sh | 12 ++++++++++++ > 2 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/pseudo_db.c b/pseudo_db.c > index 9713e0c..6a33f20 100644 > --- a/pseudo_db.c > +++ b/pseudo_db.c > @@ -2196,7 +2196,9 @@ pdb_update_inode(pseudo_msg_t *msg) { > found_existing = !pdb_find_file_path(oldmsg); > if (found_existing) { > /* we have an existing file entry */ > - pdb_copy_xattrs(oldmsg, msg); > + if (oldmsg->dev != msg->dev || oldmsg->ino != msg->ino) { > + pdb_copy_xattrs(oldmsg, msg); > + } > } > sqlite3_bind_int(update, 1, msg->dev); > sqlite3_bind_int64(update, 2, signed_ino(msg->ino)); > diff --git a/test/test-xattr.sh b/test/test-xattr.sh > index 6ac6b3c..89fbd35 100755 > --- a/test/test-xattr.sh > +++ b/test/test-xattr.sh > @@ -65,6 +65,18 @@ then > exit 1 > fi > > +mv f1 f2 > +attrs=`getfattr -d -m - f2 | grep -v '^#'` > +expected=$'security.dummy="test_f2"\nuser.dummy="test_f1"' > +if [ "$attrs" != "$expected" ] > +then > + #echo "Fail, unpexected getfattr result '$attrs'" > + rm -f f1 > + rm -f f2 > + exit 1 > +fi > + > #echo "Passed." > rm -f f1 > +rm -f f2 > exit 0 Gentle ping on this patch. Any feedback? -Daniel