[libvirt] [PATCH 0/4] Resolve a few NFS root-squash related issues
Ján Tomko
jtomko at redhat.com
Wed Sep 2 12:26:43 UTC 2015
On Tue, Sep 01, 2015 at 08:55:54PM -0400, John Ferlan wrote:
> The following series of patches resolve a few issues found within
> and because of an NFS root-squash environment.
>
> Patch 1: No real change - mostly to get data on which path was failing
>
> Patch 2: Create a virFileUnlink() API which will essentially follow the
> code that virFileCreateAs[Forked] and virDirCreate[NoFork] have taken
> with respect to running the 'unlink' in a fork'd process under the uid/gid
> used to create the volume.
>
> Patch 3: Commit id '7c2d65dde2' used the default mode to create a file
> when "vol->target.perms->mode" was set rather than checking it against
> -1 in virStorageBackendCreateRaw when calling virFileOpenAs. The logic
> was change to follow other changes which check "->mode == -1", then use
> default, else use "->mode" value.
>
> Patch 4: Commit id '155ca616' added a check and call to a storage driver
> 'refreshVol' API. Unfortunately if it failed, proper cleanup wasn't done
> leaving 'voldef' set and already in the pool list. The cleanup path would
> then delete the memory eventually leading to a crash or corruption for an
> ensuing refresh or list pool. For an NFS root squash environment with
> incorrect XML to create the file (either wrong uid/gid or mode value),
> the refreshVol would fail since it tried to run as root. On such a failure,
> it was possible that the volume remained in the NFS pool when it should
> have been deleted (unless root could delete the file).
>
> The last 3 patches are very much so related and intertwined. Fortunately
> it's a very limited environment.
>
>
> John Ferlan (4):
> virfile: Add error for root squash change mode failure
> virfile: Introduce virFileUnlink
> storage: Correct the 'mode' check
> storage: Handle failure from refreshVol
>
> src/libvirt_private.syms | 1 +
> src/storage/storage_backend.c | 8 +--
> src/storage/storage_backend_fs.c | 3 +-
> src/storage/storage_driver.c | 6 ++-
> src/util/virfile.c | 113 ++++++++++++++++++++++++++++++++++++++-
> src/util/virfile.h | 1 +
> 6 files changed, 126 insertions(+), 6 deletions(-)
>
ACK series
Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150902/2d881c1f/attachment-0001.sig>
More information about the libvir-list
mailing list