if ((strchr (me->me_devname, '/')
&& ! strchr (devlist->me->me_devname, '/'))
|| (strlen (devlist->me->me_mountdir)
- > strlen (me->me_mountdir)))
+ > strlen (me->me_mountdir))
+ /* or one overmounted on a different device. */
+ || ! STREQ (devlist->me->me_devname, me->me_devname))
{
/* Discard mount entry for existing device. */
discard_me = devlist->me;
{
/* Discard mount entry currently being processed. */
discard_me = me;
-
- /* We might still want the devname from this mount entry as
- the dev_num might not correlate with st_dev if another
- device is subsequently overmounted at mountdir, so honor
- the order of the presented list and replace with the
- latest devname encountered. */
- if (! STREQ (devlist->me->me_devname, me->me_devname))
- {
- free (devlist->me->me_devname);
- devlist->me->me_devname = xstrdup (me->me_devname);
- }
}
}
{.mnt_fsname="fsname", .mnt_dir="/",},
{.mnt_fsname="/fsname", .mnt_dir="/."},
{.mnt_fsname="/fsname", .mnt_dir="/"},
- {.mnt_fsname="virtfs", .mnt_dir="/NONROOT"},
- {.mnt_fsname="virtfs2", .mnt_dir="/NONROOT"},
+ {.mnt_fsname="virtfs", .mnt_dir="/NONROOT", .mnt_type="fstype1"},
+ {.mnt_fsname="virtfs2", .mnt_dir="/NONROOT", .mnt_type="fstype2"},
{.mnt_fsname="netns", .mnt_dir="net:[1234567]"},
};
while (done++ <= 7)
{
- mntents[done-2].mnt_type = "-";
+ if (!mntents[done-2].mnt_type)
+ mntents[done-2].mnt_type = "-";
if (STREQ (mntents[done-2].mnt_dir, "/NONROOT"))
mntents[done-2].mnt_dir = nonroot_fs;
return &mntents[done-2];
# The fake mtab file should only contain entries
# having the same device number; thus the output should
# consist of a header and unique entries.
-LD_PRELOAD=./k.so df >out || fail=1
+LD_PRELOAD=./k.so df -T >out || fail=1
test $(wc -l <out) -eq $(expr 1 + $unique_entries) || { fail=1; cat out; }
# Ensure we fail when unable to stat invalid entries
-LD_PRELOAD=./k.so CU_TEST_DUPE_INVALID=1 df >out && fail=1
+LD_PRELOAD=./k.so CU_TEST_DUPE_INVALID=1 df -T >out && fail=1
test $(wc -l <out) -eq $(expr 1 + $unique_entries) || { fail=1; cat out; }
# df should also prefer "/fsname" over "fsname"
test $(grep -cF '/.' <out) -eq 0 || { fail=1; cat out; }
fi
-# df should use the last seen devname (mnt_fsname)
-test $(grep -c 'virtfs2' <out) -eq 1 || { fail=1; cat out; }
+# df should use the last seen devname (mnt_fsname) and devtype (mnt_type)
+test $(grep -c 'virtfs2.*fstype2' <out) -eq 1 || { fail=1; cat out; }
# Ensure that filtering duplicates does not affect -a processing.
LD_PRELOAD=./k.so df -a >out || fail=1