]> err.no Git - util-linux/commitdiff
losetup: try to set up loop readonly if EACCES
authorMatthias Koenig <mkoenig@suse.de>
Thu, 6 Nov 2008 13:45:38 +0000 (14:45 +0100)
committerKarel Zak <kzak@redhat.com>
Fri, 12 Dec 2008 12:05:36 +0000 (13:05 +0100)
Currently mounting/losetup an image fails if it is accessable readonly.

There are no problems if it is a file on a local filesystem.
It seems only to happen if it is a NFS mounted image, which is
read-write in permission but with root_squash option.

set_loop checks only for EROFS to retry open with readonly mode,
but in this case we get EACCES.

Signed-off-by: Matthias Koenig <mkoenig@suse.de>
mount/lomount.c

index 18f2edfbb9ab9bd61979adc00b2023f023d9b74c..f1d74820ad4625393f5eb12e05680bc23ce30271 100644 (file)
@@ -659,7 +659,8 @@ set_loop(const char *device, const char *file, unsigned long long offset,
 
        mode = (*options & SETLOOP_RDONLY) ? O_RDONLY : O_RDWR;
        if ((ffd = open(file, mode)) < 0) {
-               if (!(*options & SETLOOP_RDONLY) && errno == EROFS)
+               if (!(*options & SETLOOP_RDONLY) &&
+                   (errno == EROFS || errno == EACCES))
                        ffd = open(file, mode = O_RDONLY);
                if (ffd < 0) {
                        perror(file);