problem
Backup works because mount options are processed inside the shell script nasbackup.sh where trailing spaces are not a problem.
But restore (LibvirtRestoreBackupCommandWrapper) builds and runs mount in Java
if (StringUtils.isNotBlank(mountOptions)) {
mountCmd.add("-o");
mountCmd.add(mountOptions);
}
Script.executeCommand(mountCmd.toArray(new String[0]));
Script.executeCommand(String...) builds a ProcessBuilder argument list
mount receives the literal -o "vers=4.1 ". libmount splits options only on commas, so the trailing blank stays glued to the last option, and mount.nfs/the kernel rejects it as a malformed or unknown option ("an incorrect mount option was specified").
WARN utils.script.Script (logid:435302bd) Process [445800] for command [sudo /usr/bin/mount -t nfs <redacted> encountered the error: [mount.nfs: an incorrect mount option was specified for /usr/share/cloudstack-agent/tmp/csbackup...
versions
ACS 4.22.1
The steps to reproduce the bug
- Create a backup repository - specify mount options (
vers=4.1 ) with a trailing space
- Create backup
- Restore backup - it fails
...
What to do about it?
Trim trailing whitespaces before using the mount options
problem
Backup works because mount options are processed inside the shell script
nasbackup.shwhere trailing spaces are not a problem.But restore (
LibvirtRestoreBackupCommandWrapper) builds and runs mount in JavaScript.executeCommand(String...) builds a ProcessBuilder argument list
mount receives the literal -o "vers=4.1 ". libmount splits options only on commas, so the trailing blank stays glued to the last option, and mount.nfs/the kernel rejects it as a malformed or unknown option ("an incorrect mount option was specified").
WARN utils.script.Script (logid:435302bd) Process [445800] for command [sudo /usr/bin/mount -t nfs <redacted> encountered the error: [mount.nfs: an incorrect mount option was specified for /usr/share/cloudstack-agent/tmp/csbackup...versions
ACS 4.22.1
The steps to reproduce the bug
vers=4.1) with a trailing space...
What to do about it?
Trim trailing whitespaces before using the mount options