]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commit
storage: Fix setting mode in virStorageBackendCreateExecCommand
authorJohn Ferlan <jferlan@redhat.com>
Wed, 14 Oct 2015 13:56:14 +0000 (09:56 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Wed, 4 Nov 2015 12:21:11 +0000 (07:21 -0500)
commit77346f2787c0738663f6a62695b43b6216be6b15
tree13d9555b09fccdbab695f3bbacc5ef900daa972f
parente4ee04363613ff0fc876dd906a37e1d1fa0bf354
storage: Fix setting mode in virStorageBackendCreateExecCommand

Currently the code does not handle the NFS root squash environment
properly since if the file gets created, then the subsequent chmod
will fail in a root squash environment where we're creating a file
in the pool with qemu tools, such as seen via:

   $ virsh vol-create-from $pool $file.xml file.img --inputpool $pool

assuming $file.xml is creating a file of "<format type='qcow2'"> from
an existing file.img in the pool of "<format type='raw'>".

This patch will utilize the virCommandSetUmask when creating the file
in the NETFS pool. The virCommandSetUmask API was added in commit id
'0e1a1a8c4', which was after the original code was developed in commit
id 'e1f27784' to attempt to handle the root squash environment.

Also, rather than blindly attempting to chmod, check to see if the
st_mode bits from the stat match what we're trying to set and only
make the chmod if they don't.

Also, a slight adjustment to the fallback algorithm to move the
virCommandSetUID/virCommandSetGID inside the if (!filecreated) since
they're only useful if we need to attempt to create the file again.
src/storage/storage_backend.c