Hide Forgot
Description of problem: On POSIXFS storage domain creation, if nothing is given after '/' in the path, the '/' is ignored in the mount command that vdsm executes. For example, the following path, which has nothing after '/' is executed on vdsm without the '/': Path = 10.35.65.18:/ VFS Type = ceph jsonrpc.Executor/3::DEBUG::2016-01-26 17:51:04,338::mount::229::Storage.Misc.excCmd::(_runcmd) /usr/bin/taskset --cpu-list 0-1 /usr/bin/sudo -n /usr/bin/mount -t ceph -o name=ad min,secret=AQC3W1dWhplVLBAARW/zKtQzjafZDKAGfVpWbQ== 10.35.65.18: /rhev/data-center/mnt/10.35.65.18:___ (cwd None) This is mainly relevant for cephfs. Version-Release number of selected component (if applicable): vdsm-4.17.19-0.el7ev.noarch How reproducible: Always Steps to Reproduce: 1. Try to create a POSIXFS with path that has nothing after '/' For example: Path = 10.35.65.18:/ Actual results: mount command on vdsm is executed without the '/' Expected results: vdsm should execute the mount command with the exact syntax provided in the path. Additional info: The following syntax works while mounting manually from host: # mount -t ceph ceph-1.qa.lab:6789:/ /mnt/cephfs/ -o name=admin,secret=<key> (The key is not hidden in the actual mount command). Tried to use this way for ceph based POSIX storage domain creation as follows: ======================================= Path = 10.35.65.18:/ VFS Type = ceph Mount Options = name=admin,secret=<key> ======================================= The failure in vdsm.log: jsonrpc.Executor/3::ERROR::2016-01-26 17:51:04,372::hsm::2473::Storage.HSM::(connectStorageServer) Could not connect to storageServer Traceback (most recent call last): File "/usr/share/vdsm/storage/hsm.py", line 2470, in connectStorageServer conObj.connect() File "/usr/share/vdsm/storage/storageServer.py", line 234, in connect six.reraise(t, v, tb) File "/usr/share/vdsm/storage/storageServer.py", line 226, in connect self._mount.mount(self.options, self._vfsType, cgroup=self.CGROUP) File "/usr/share/vdsm/storage/mount.py", line 225, in mount return self._runcmd(cmd, timeout) File "/usr/share/vdsm/storage/mount.py", line 241, in _runcmd raise MountError(rc, ";".join((out, err))) MountError: (1, 'source mount path was not specified\nfailed to resolve source\n;') Seems that no matter how many '/' are given, vdsm ignores all if there is nothing after them. (I tried a path with '//' at the end, didn't work.) This has to be fixed for ceph fs to work as a VFS type for POSIXFS compliant storage domain creation.
Same behavior exists for NFS as well as described in bug 1228239
This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune with any questions
Patch posted, but at risk for the 3.6.6 date. Pushing out to 3.6.7, as this is is not a blocker.
Allon, the fix that I am working on might be too risky for 3.6.z. I think that we should postpone it to 4.0.
Moving from 4.0 alpha to 4.0 beta since 4.0 alpha has been already released and bug is not ON_QA.
oVirt 4.0 beta has been released, moving to RC milestone.
Merged on the 4.0 branch, setting to MODIFIED
POSIXFS (ceph) storage domain creation, when nothing is given after '/' is done with the '/' in the mount command that vdsm executes. supervdsm.log: MainProcess|jsonrpc.Executor/3::DEBUG::2016-07-27 15:24:42,814::commands::68::root::(execCmd) /usr/bin/taskset --cpu-list 0-3 /usr/bin/mount -t ceph -o name=admin,secret=AQC76JVXuYUIMxAAudC/3dUtqhLIOSL8AUuXrQ== 10.35.140.90:/ /rhev/data-center/mnt/10.35.140.90:_ (cwd None) Storage domain creation succeeds. Verified using: vdsm-4.18.8-1.el7ev.x86_64 libcephfs1-10.2.2-29.el7cp.x86_64 ceph-base-10.2.2-29.el7cp.x86_64 ceph-common-10.2.2-29.el7cp.x86_64 python-cephfs-10.2.2-29.el7cp.x86_64 ceph-selinux-10.2.2-29.el7cp.x86_64 rhevm-4.0.2-0.1.rc.el7ev.noarch