On Fri, Mar 13, 2020 at 03:01:00PM +0100, Pino Toscano wrote:
On Thursday, 12 March 2020 15:44:45 CET Richard W.M. Jones wrote:
>
https://bugzilla.redhat.com/show_bug.cgi?id=1811539
>
> Commands including virt-diff which read extended attributes will
> sometimes fail on NTFS filesystems that are using system compressed.
> The reason is complex, see comment 5 of the bug linked above.
>
> This patch filters out the troublesome xattr. For justification, see
> the comment I added in patch 3.
The idea is fine, however I'm slightly concerned about the increased
memory usage due to the split + filtering done.
Now that I took a look at the code again (wow, last time I touched it
was more than 5 years ago), an alternative approach could be:
- refactor do_internal_lxattrlist to use _listxattrs
This isn't totally straightforward because the functions handle errors
in slightly different ways (of course we could add a very specific
bool parameter for that case, but ...)
- edit/replace in-place the buffer to-be-returned by _listxattrs
filtering out the names we do not want
This way the rest of the existing code needs almost no changes.
So my alternate optimization would be to do the list filtering as per
the patch I posted, but not strdup the strings themselves. It
achieves mainly the same end as what you're saying but is a lot safer
and clearer than trying to edit in place the weird "multi-string" that
the kernel returns. I'll try that.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW