[Libguestfs] [PATCH libguestfs 0/3] daemon: Fix various commands which break on NTFS-3g compressed files.

Richard W.M. Jones rjones at redhat.com
Mon Mar 16 12:20:04 UTC 2020


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




More information about the Libguestfs mailing list