From: Karel Zak Date: Tue, 1 Jul 2014 08:34:09 +0000 (+0200) Subject: libmount: always use mnt_resolve_target() in mnt_fs_match_target() X-Git-Tag: v2.25-rc2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8642cd7b0f06157c1e4e8aae616bee78fa6a250f;p=thirdparty%2Futil-linux.git libmount: always use mnt_resolve_target() in mnt_fs_match_target() The requested path is also target mountpoint, so let's optimize realpath() usage as well. Signed-off-by: Karel Zak --- diff --git a/libmount/src/cache.c b/libmount/src/cache.c index 05b078b445..8b2e6560f8 100644 --- a/libmount/src/cache.c +++ b/libmount/src/cache.c @@ -504,6 +504,7 @@ static char *canonicalize_path_and_cache(const char *path, char *key = NULL; char *value = NULL; + DBG(CACHE, ul_debugobj(cache, "canonicalize path %s", path)); p = canonicalize_path(path); if (p && cache) { diff --git a/libmount/src/fs.c b/libmount/src/fs.c index 82541083a7..fe3260bb34 100644 --- a/libmount/src/fs.c +++ b/libmount/src/fs.c @@ -1411,11 +1411,15 @@ int mnt_fs_append_comment(struct libmnt_fs *fs, const char *comm) * * Possible are three attempts: * 1) compare @target with @fs->target + * * 2) realpath(@target) with @fs->target + * * 3) realpath(@target) with realpath(@fs->target) if @fs is not from - * /proc/self/mountinfo. However, if mnt_cache_set_targets(cache, - * mtab) was called, and the path @fs->target is found in @mtab, - * this comparison is not performed (see mnt_resolve_target()). + * /proc/self/mountinfo. + * + * However, if mnt_cache_set_targets(cache, mtab) was called, and the + * path @target or @fs->target is found in the @mtab, the canonicalization is + * is not performed (see mnt_resolve_target()). * * The 2nd and 3rd attempts are not performed when @cache is NULL. * @@ -1435,7 +1439,7 @@ int mnt_fs_match_target(struct libmnt_fs *fs, const char *target, if (!rc && cache) { /* 2) - canonicalized and non-canonicalized */ - char *cn = mnt_resolve_path(target, cache); + char *cn = mnt_resolve_target(target, cache); rc = (cn && mnt_fs_streq_target(fs, cn)); /* 3) - canonicalized and canonicalized */