summaryrefslogtreecommitdiffstats
path: root/mount/lomount.c
diff options
context:
space:
mode:
authorMatthias Koenig2008-11-06 14:45:38 +0100
committerKarel Zak2008-11-18 15:40:34 +0100
commitbc984ef97cddc4899e67b9139ed206a9bca1b156 (patch)
treec0e9c2b3204dcd0535396cda0273d7bad697a7f1 /mount/lomount.c
parentcfdisk: accept yes/no as fallback (diff)
downloadkernel-qcow2-util-linux-bc984ef97cddc4899e67b9139ed206a9bca1b156.tar.gz
kernel-qcow2-util-linux-bc984ef97cddc4899e67b9139ed206a9bca1b156.tar.xz
kernel-qcow2-util-linux-bc984ef97cddc4899e67b9139ed206a9bca1b156.zip
losetup: try to set up loop readonly if EACCES
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>
Diffstat (limited to 'mount/lomount.c')
-rw-r--r--mount/lomount.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/mount/lomount.c b/mount/lomount.c
index d4b746d35..8b1eb126a 100644
--- a/mount/lomount.c
+++ b/mount/lomount.c
@@ -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);