findmnt: make --target usable with bind mounts

The --target <non-mount-point> functionality should be enabled only if
previous regular search found nothing to avoid collisions with bind
mounts, because to detect mountpoint we use traditional child / parent
stat.st_dev comparison which does not work for bind mounts (--bind /A
/A).

Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2013-01-14 14:50:50 +01:00
parent 624f2b47c3
commit 3e373967ec
1 changed files with 15 additions and 8 deletions

View File

@ -1335,13 +1335,6 @@ int main(int argc, char *argv[])
}
mnt_table_set_cache(tb, cache);
if (tabtype == TABTYPE_KERNEL
&& (flags & FL_NOSWAPMATCH)
&& get_match(COL_TARGET))
/*
* enable extra functionality for target match
*/
enable_extra_target_match();
/*
* initialize output formatting (tt.h)
@ -1381,10 +1374,24 @@ int main(int argc, char *argv[])
} else if ((tt_flags & TT_FL_TREE) && is_listall_mode())
/* whole tree */
rc = create_treenode(tt, tb, NULL, NULL);
else
else {
/* whole lits of sub-tree */
rc = add_matching_lines(tb, tt, direction);
if (rc != 0
&& tabtype == TABTYPE_KERNEL
&& (flags & FL_NOSWAPMATCH)
&& get_match(COL_TARGET)) {
/*
* Found nothing, maybe the --target is regular file,
* try it again with extra functionality for target
* match
*/
enable_extra_target_match();
rc = add_matching_lines(tb, tt, direction);
}
}
/*
* Print the output table for non-poll modes
*/