diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-02-25 01:47:31 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-02-25 01:47:31 +0100 |
commit | c904f64d84db8c4eebedf210ba10893f19ba05ed (patch) | |
tree | 4c3d73acb9c6aa32d073107b8dd262a8c48a4334 | |
parent | 8e20e31a65ec9e637abf3821087946e9160001ac (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-- | TODO | 8 | ||||
-rw-r--r-- | src/automount.c | 2 | ||||
-rw-r--r-- | src/label.c | 6 | ||||
-rw-r--r-- | src/label.h | 3 | ||||
-rw-r--r-- | src/mount-setup.c | 4 | ||||
-rw-r--r-- | src/tmpfiles.c | 2 |
6 files changed, 18 insertions, 7 deletions
@@ -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); |