chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
units: simplify shutdown scripts
[elogind.git]
/
src
/
mount-setup.c
diff --git
a/src/mount-setup.c
b/src/mount-setup.c
index 84a729ebf21eaf638e7d7f167ea97a0ac0724f91..7e468e2728bab9f51b29bdf9f6e604bcd6d8f091 100644
(file)
--- a/
src/mount-setup.c
+++ b/
src/mount-setup.c
@@
-74,11
+74,17
@@
bool mount_point_is_api(const char *path) {
if (path_equal(path, mount_table[i].where))
return true;
if (path_equal(path, mount_table[i].where))
return true;
+ return path_startswith(path, "/sys/fs/cgroup/");
+}
+
+bool mount_point_ignore(const char *path) {
+ unsigned i;
+
for (i = 0; i < ELEMENTSOF(ignore_paths); i++)
if (path_equal(path, ignore_paths[i]))
return true;
for (i = 0; i < ELEMENTSOF(ignore_paths); i++)
if (path_equal(path, ignore_paths[i]))
return true;
- return
path_startswith(path, "/sys/fs/cgroup/")
;
+ return
false
;
}
static int mount_one(const MountPoint *p) {
}
static int mount_one(const MountPoint *p) {
@@
-132,8
+138,9
@@
static int mount_cgroup_controllers(void) {
for (;;) {
MountPoint p;
char *controller, *where;
for (;;) {
MountPoint p;
char *controller, *where;
+ int enabled = false;
- if (fscanf(f, "%ms %*i %*i %
*i", &controller) != 1
) {
+ if (fscanf(f, "%ms %*i %*i %
i", &controller, &enabled) != 2
) {
if (feof(f))
break;
if (feof(f))
break;
@@
-143,6
+150,11
@@
static int mount_cgroup_controllers(void) {
goto finish;
}
goto finish;
}
+ if (!enabled) {
+ free(controller);
+ continue;
+ }
+
if (asprintf(&where, "/sys/fs/cgroup/%s", controller) < 0) {
free(controller);
r = -ENOMEM;
if (asprintf(&where, "/sys/fs/cgroup/%s", controller) < 0) {
free(controller);
r = -ENOMEM;
@@
-196,13
+208,17
@@
static int nftw_cb(
int tflag,
struct FTW *ftwbuf) {
int tflag,
struct FTW *ftwbuf) {
+ /* No need to label /dev twice in a row... */
+ if (ftwbuf->level == 0)
+ return 0;
+
label_fix(fpath);
return 0;
};
int mount_setup(void) {
label_fix(fpath);
return 0;
};
int mount_setup(void) {
- const char
*symlinks
=
+ const char
symlinks[]
=
"/proc/kcore\0" "/dev/core\0"
"/proc/self/fd\0" "/dev/fd\0"
"/proc/self/fd/0\0" "/dev/stdin\0"
"/proc/kcore\0" "/dev/core\0"
"/proc/self/fd\0" "/dev/fd\0"
"/proc/self/fd/0\0" "/dev/stdin\0"