Skip to content

Nas backup restore fails if the backup repository mount options have a trailing space #14013

Description

@abh1sar

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

  1. Create a backup repository - specify mount options (vers=4.1 ) with a trailing space
  2. Create backup
  3. Restore backup - it fails
    ...

What to do about it?

Trim trailing whitespaces before using the mount options

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions