Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
util-linux-systemd.7828
util-linux-libmount-umount-use-mount-table-filt...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File util-linux-libmount-umount-use-mount-table-filter-on-c-only.patch of Package util-linux-systemd.7828
From 11573ac0c840e5189873fcd897a14356942172cf Mon Sep 17 00:00:00 2001 From: Karel Zak <kzak@redhat.com> Date: Wed, 7 Jun 2017 12:40:17 +0200 Subject: [PATCH] libmount: (umount) use mount table filter on -c only The path canonicalization is the worst use-case, it's better to read all mount table than try canonicalize. Signed-off-by: Karel Zak <kzak@redhat.com> --- libmount/src/context_umount.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) --- a/libmount/src/context_umount.c +++ b/libmount/src/context_umount.c @@ -78,11 +78,14 @@ int mnt_context_find_umount_fs(struct li * canonicalized. If --no-canonicalize is enabled than the target path * is expected already canonical. * + * Anyway it's better to read huge mount table than canonicalize target + * paths. It means we use the filter only if --no-canonicalize enabled. + * * It also means that we have to read mount table from kernel * (non-writable mtab). */ - if (!mnt_context_mtab_writable(cxt) && *tgt == '/' && - !mnt_context_is_force(cxt) && !mnt_context_is_lazy(cxt)) + if (mnt_context_is_nocanonicalize(cxt) && + !mnt_context_mtab_writable(cxt) && *tgt == '/') rc = mnt_context_get_mtab_for_target(cxt, &mtab, tgt); else rc = mnt_context_get_mtab(cxt, &mtab); @@ -257,12 +260,16 @@ static int lookup_umount_fs(struct libmn const char *type = mnt_fs_get_fstype(cxt->fs); + DBG(CXT, ul_debugobj(cxt, "umount: disable mtab")); + /* !mnt_context_mtab_writable(cxt) && has_utab_entry() verified that there * is no stuff in utab, so disable all mtab/utab related actions */ mnt_context_disable_mtab(cxt, TRUE); if (!type) { struct statfs vfs; + + DBG(CXT, ul_debugobj(cxt, "umount: trying statfs()")); if (statfs(tgt, &vfs) == 0) type = mnt_statfs_get_fstype(&vfs); if (type) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor