Somewhere in the 2.4.x kernel series, /proc/mounts was changed to display a
"rootfs" entry as well as the traditional "/dev/root" entry. This caused
applets such as mount and df to display two root filesystem entries....
This teaches the relevant utilities to ignore the "rootfs" entry.
-Erik
diff --git a/coreutils/df.c b/coreutils/df.c
index 9673633..543527e 100644
--- a/coreutils/df.c
+++ b/coreutils/df.c
@@ -126,7 +126,9 @@
) / (blocks_used + s.f_bavail);
}
- if (strcmp(device, "/dev/root") == 0) {
+ if (strcmp(device, "rootfs") == 0) {
+ continue;
+ } else if (strcmp(device, "/dev/root") == 0) {
/* Adjusts device to be the real root device,
* or leaves device alone if it can't find it */
if ((device = find_real_root_device_name(device)) == NULL) {
diff --git a/util-linux/mount.c b/util-linux/mount.c
index d020056..49d086c 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -334,7 +334,9 @@
while ((m = getmntent(mountTable)) != 0) {
char *blockDevice = m->mnt_fsname;
- if (strcmp(blockDevice, "/dev/root") == 0) {
+ if (strcmp(blockDevice, "rootfs") == 0) {
+ continue;
+ } else if (strcmp(blockDevice, "/dev/root") == 0) {
blockDevice = find_real_root_device_name(blockDevice);
}
if (!onlytype || (strcmp(m->mnt_type, onlytype) == 0)) {
diff --git a/util-linux/umount.c b/util-linux/umount.c
index 1d3e893..c11f2e9 100644
--- a/util-linux/umount.c
+++ b/util-linux/umount.c
@@ -111,7 +111,9 @@
return cur->mountpt;
} else {
#if !defined CONFIG_FEATURE_MTAB_SUPPORT
- if (strcmp(cur->device, "/dev/root") == 0) {
+ if (strcmp(cur->device, "rootfs") == 0) {
+ continue;
+ } else if (strcmp(cur->device, "/dev/root") == 0) {
/* Adjusts device to be the real root device,
* or leaves device alone if it can't find it */
cur->device = find_real_root_device_name(cur->device);