]> 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>
Tue, 18 Nov 2008 14:40:34 +0000 (15:40 +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 d4b746d35fc39a2c7627a302951ae1bfbc6c5876..8b1eb126a0c72ed072211771a0f02c858e168cbb 100644 (file)
@@ -671,7 +671,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);