[pve-devel] vzdump.conf exclude-path parsing

Wolfgang Bumiller w.bumiller at proxmox.com
Thu Mar 3 09:32:14 CET 2016


Thanks for reporting, apparently /etc/vzdump.conf has been left
out in the cold for a while...
I just posted a fix for this using PVE::Tools::split_args() (like
it used to be before July) which uses Text::ParseWords::shellwords()
and basically separates the paths the way a shell would do, by
whitespace unless escaped with a backslash or enclosed in quotes etc.

More comments inline:

> (...)
> Although the "format" of key "exclude-path" is set to "string-alist", no matter
> what text I put in vzdump.conf, the parser always makes a simple string with it.

The '-alist' suffix is used only by the command line argument parser
to allow providing a parameter several times.
(# vzdump 100 -exclude-path /a -exclude-path /b)

It's either an array or a NUL-byte separated string, but places which
use these need to deal with them directly, and this was lost when moving
to a unified parsing method. (Overall it simplified things but apparently
we didn't catch all the previous special cases...)

> I ended up using split(" ", $defaults->{'exclude-path'}) and removing the
> single-quotes from my vzdump.conf.
> 
> This made it work again, except I had to do it to defaults and opt->... to get
> rid of the error. The result is that the excludes are added twice on the tar cmd
> line.
> 
> Also, the stdexcludes is broken as well. The block starting with "if
> ($opts->{stdexcludes}) {" is not executed even though it should based on the
> fact that I don't mention it and it should therefore default to true.

About to send another patch for that. $opts->{stdexcludes} only handles the
command line argument.

> This all seems very broken and there's a couple of old thread on the forums that
> talk about this.
> 
> What is the official stance on the subject?

Working on it ;-)




More information about the pve-devel mailing list