]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
security driver: ignore EINVAL when chowning an image file
authorLaine Stump <laine@laine.org>
Fri, 3 Jun 2011 15:59:09 +0000 (11:59 -0400)
committerLaine Stump <laine@laine.org>
Fri, 3 Jun 2011 16:27:05 +0000 (12:27 -0400)
This fixes:

  https://bugzilla.redhat.com/show_bug.cgi?id=702044
  https://bugzilla.redhat.com/show_bug.cgi?id=709454

Both of these complain of a failure to use an image file that resides
on a read-only NFS volume. The function in the DAC security driver
that chowns image files to the qemu user:group before using them
already has special cases to ignore failure of chown on read-only file
systems, and in a few other cases, but it hadn't been checking for
EINVAL, which is what is returned if the qemu user doesn't even exist
on the NFS server.

Since the explanation of EINVAL in the chown man page almost exactly
matches the log message already present for the case of EOPNOTSUPP,
I've just added EINVAL to that same conditional.

src/security/security_dac.c

index b8642d2d72a1eaac3015f59e89224728a2df739d..24b50e6ecb5e21dd2f2aa0c7863088c824fc7489 100644 (file)
@@ -110,7 +110,7 @@ virSecurityDACSetOwnership(const char *path, int uid, int gid)
             }
         }
 
-        if (chown_errno == EOPNOTSUPP) {
+        if (chown_errno == EOPNOTSUPP || chown_errno == EINVAL) {
             VIR_INFO("Setting user and group to '%d:%d' on '%s' not supported by filesystem",
                      uid, gid, path);
         } else if (chown_errno == EPERM) {