]> err.no Git - util-linux/commitdiff
losetup: missing EBUSY error hint message
authorKarel Zak <kzak@redhat.com>
Tue, 30 Sep 2008 10:49:58 +0000 (12:49 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 30 Sep 2008 11:16:50 +0000 (13:16 +0200)
old version:
 # losetup /dev/loop0 /foo.img
 # losetup /dev/loop0 /bar.img; echo $?
 2

new version:
 # losetup /dev/loop0 /foo.img
 # losetup /dev/loop0 /bar.img; echo $?
 losetup: /dev/loop0: device is busy
 2

Signed-off-by: Karel Zak <kzak@redhat.com>
mount/lomount.c

index 6ef143ab66df2a82a949aecbdd42960e8682d854..57e240d11e2b532f73f4b5c61b81fa4e61679a6b 100644 (file)
@@ -645,6 +645,12 @@ digits_only(const char *s) {
        return 1;
 }
 
+/*
+ * return codes:
+ *     0       - success
+ *     1       - error
+ *     2       - error (EBUSY)
+ */
 int
 set_loop(const char *device, const char *file, unsigned long long offset,
         unsigned long long sizelimit, const char *encryption, int pfd, int *options) {
@@ -1027,11 +1033,16 @@ main(int argc, char **argv) {
                        }
                } while (find && res == 2);
 
-               if (verbose && res == 0)
-                       printf("Loop device is %s\n", device);
-
-               if (res == 0 && showdev && find)
-                       printf("%s\n", device);
+               if (device) {
+                       if (res == 2)
+                               error(_("%s: %s: device is busy"), progname, device);
+                       else if (res == 0) {
+                               if (verbose)
+                                       printf("Loop device is %s\n", device);
+                               if (showdev && find)
+                                       printf("%s\n", device);
+                       }
+               }
        }
        return res;
 }