summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-02-25 01:47:31 +0100
committerLennart Poettering <lennart@poettering.net>2011-02-25 01:47:31 +0100
commitc904f64d84db8c4eebedf210ba10893f19ba05ed (patch)
tree4c3d73acb9c6aa32d073107b8dd262a8c48a4334
parent8e20e31a65ec9e637abf3821087946e9160001ac (diff)
label: udev might be making changes in /dev while we iterate through it
Also, there are most likely dead symlinks in there, so let's ignore ENOENT when we relabel. https://bugzilla.redhat.com/show_bug.cgi?id=680169
-rw-r--r--TODO8
-rw-r--r--src/automount.c2
-rw-r--r--src/label.c6
-rw-r--r--src/label.h3
-rw-r--r--src/mount-setup.c4
-rw-r--r--src/tmpfiles.c2
6 files changed, 18 insertions, 7 deletions
diff --git a/TODO b/TODO
index 0f643073d7..b3c33ad1e2 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,7 @@
F15:
+* swap units that are activated by one name but shown in the kernel under another are semi-broken
+
* dep cycle basic → udev-retry → auditd → iptables → basic
* isolate multi-user.target doesn't start a getty@tty1 if we run it from graphical.target
@@ -19,7 +21,11 @@ F15:
* Make systemd-cryptsetup cancellable
-* udev should be able to upgrade its database on its own
+* add fstab fields to add wait timeouts, change Wants to Requires by local-fs.target
+
+* hook emergency.target into local-fs.target in some way as OnFailure with isolate
+
+* convince Karel to give us our own mount option prefix
Features:
diff --git a/src/automount.c b/src/automount.c
index 9447c0d8fc..7289311684 100644
--- a/src/automount.c
+++ b/src/automount.c
@@ -305,7 +305,7 @@ static int open_dev_autofs(Manager *m) {
if (m->dev_autofs_fd >= 0)
return m->dev_autofs_fd;
- label_fix("/dev/autofs");
+ label_fix("/dev/autofs", false);
if ((m->dev_autofs_fd = open("/dev/autofs", O_CLOEXEC|O_RDONLY)) < 0) {
log_error("Failed to open /dev/autofs: %s", strerror(errno));
diff --git a/src/label.c b/src/label.c
index 218d0dfa06..09ded642fb 100644
--- a/src/label.c
+++ b/src/label.c
@@ -65,7 +65,7 @@ int label_init(void) {
return r;
}
-int label_fix(const char *path) {
+int label_fix(const char *path, bool ignore_enoent) {
int r = 0;
#ifdef HAVE_SELINUX
@@ -90,6 +90,10 @@ int label_fix(const char *path) {
/* If the FS doesn't support labels, then exit without warning */
if (r < 0 && errno == ENOTSUP)
return 0;
+
+ /* Ignore ENOENT in some cases */
+ if (r < 0 && ignore_enoent && errno == ENOENT)
+ return 0;
}
}
diff --git a/src/label.h b/src/label.h
index f1bf5d6d5e..7ea11cdc55 100644
--- a/src/label.h
+++ b/src/label.h
@@ -23,11 +23,12 @@
***/
#include <sys/types.h>
+#include <stdbool.h>
int label_init(void);
void label_finish(void);
-int label_fix(const char *path);
+int label_fix(const char *path, bool ignore_enoent);
int label_socket_set(const char *label);
void label_socket_clear(void);
diff --git a/src/mount-setup.c b/src/mount-setup.c
index 64fb4765f6..5cbaee6be7 100644
--- a/src/mount-setup.c
+++ b/src/mount-setup.c
@@ -121,7 +121,7 @@ static int mount_one(const MountPoint *p) {
return p->fatal ? -errno : 0;
}
- label_fix(p->where);
+ label_fix(p->where, false);
return 0;
}
@@ -216,7 +216,7 @@ static int nftw_cb(
if (ftwbuf->level == 0)
return 0;
- label_fix(fpath);
+ label_fix(fpath, true);
return 0;
};
diff --git a/src/tmpfiles.c b/src/tmpfiles.c
index 917747a4a4..0302262394 100644
--- a/src/tmpfiles.c
+++ b/src/tmpfiles.c
@@ -507,7 +507,7 @@ static int create_item(Item *i) {
break;
}
- if ((r = label_fix(i->path)) < 0)
+ if ((r = label_fix(i->path, false)) < 0)
goto finish;
log_debug("%s created successfully.", i->path);