chiark / gitweb /
fstab-generator: make error more helpful in case of duplicates in fstab
authorTom Gundersen <teg@jklm.no>
Tue, 27 Nov 2012 00:09:28 +0000 (01:09 +0100)
committerTom Gundersen <teg@jklm.no>
Tue, 27 Nov 2012 00:57:57 +0000 (01:57 +0100)
Traditional sysvinit systems would not complain about duplicates in
fstab. Rather it (through monut -a) would mount one fs on top of another,
in effect the last entry taking precedent.

In systemd, the first entry takes precedent, all subsequent ones are
ignored and an error is printed.

The change of behavior and the source of this error message was causing
some confusion, so give a hint what migt be wrong.

src/fstab-generator/fstab-generator.c

index 7b3bf11eda1ff3319bc00b04331f1a33dfc8c88e..ba55f2c2b73d0ce09bbd59232b4cbbe54c94e998 100644 (file)
@@ -111,7 +111,10 @@ static int add_swap(const char *what, struct mntent *me) {
         f = fopen(unit, "wxe");
         if (!f) {
                 r = -errno;
         f = fopen(unit, "wxe");
         if (!f) {
                 r = -errno;
-                log_error("Failed to create unit file %s: %m", unit);
+                if (errno == EEXIST)
+                        log_error("Failed to create swap unit file %s, as it already exists. Duplicate entry in /etc/fstab?", unit);
+                else
+                        log_error("Failed to create unit file %s: %m", unit);
                 goto finish;
         }
 
                 goto finish;
         }
 
@@ -254,7 +257,10 @@ static int add_mount(const char *what, const char *where, struct mntent *me) {
         f = fopen(unit, "wxe");
         if (!f) {
                 r = -errno;
         f = fopen(unit, "wxe");
         if (!f) {
                 r = -errno;
-                log_error("Failed to create unit file %s: %m", unit);
+                if (errno == EEXIST)
+                        log_error("Failed to create mount unit file %s, as it already exists. Duplicate entry in /etc/fstab?", unit);
+                else
+                        log_error("Failed to create unit file %s: %m", unit);
                 goto finish;
         }
 
                 goto finish;
         }