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:
parent
624f2b47c3
commit
3e373967ec
|
@ -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
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue