Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-15-SP1:Update
util-linux-systemd
libmount-fix-mount-a-EBUSY-for-cifs.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File libmount-fix-mount-a-EBUSY-for-cifs.patch of Package util-linux-systemd
From 31b3a523eca2fc7e5876ec5fd89094208fed0899 Mon Sep 17 00:00:00 2001 From: Roberto Bergantinos Corpas <rbergant@redhat.com> Date: Mon, 27 Apr 2020 15:46:02 +0200 Subject: [PATCH] libmount: fix mount -a EBUSY for cifs References: bsc#1174942 Backported-by: aabdallah@suse.com fstab: //rhel73/myshare/sub/path /mnt cifs after mount in mountinfo: # grep cifs /proc/self/mountinfo 47 39 0:40 /sub/path /mnt rw,relatime shared:60 - cifs //rhel73/myshare/sub/path ... ^^^^^^^^^ or: # grep cifs /proc/self/mountinfo 47 39 0:40 / /mnt rw,relatime shared:60 - cifs //rhel73/myshare/sub/path ... ^ That is so since on kernel cifs code, cifs_get_root (which returns the entry associated with mnt_root) return s_root if CIFS_MOUNT_USE_PREFIX_PATH is set, no questions asked. This situation can occurr often on CIFS mounts, as CIFS servers limit frequently scope of access to the root path. [kzak@redhat.com: - add more info to the commit message, - clean up variable names] Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1826719 Signed-off-by: Roberto Bergantinos Corpas <rbergant@redhat.com> Signed-off-by: Karel Zak <kzak@redhat.com> --- libmount/src/tab.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libmount/src/tab.c b/libmount/src/tab.c index 1633d4231..cac7fd3c1 100644 --- a/libmount/src/tab.c +++ b/libmount/src/tab.c @@ -1650,10 +1650,13 @@ if (root) { const char *fstype = mnt_fs_get_fstype(fs); - if (fstype && strcmp(fstype, "cifs") == 0) { - const char *unc_subdir = get_cifs_unc_subdir_path(src); - const char *path_on_fs = mnt_fs_get_root(fs); - if (!unc_subdir || !path_on_fs || !streq_paths(unc_subdir, path_on_fs)) + if (fstype && (strcmp(fstype, "cifs") == 0 || + strcmp(fstype, "smb3") == 0)) { + + const char *sub = get_cifs_unc_subdir_path(src); + const char *r = mnt_fs_get_root(fs); + if (!sub || !r || (!streq_paths(sub, r) && + !streq_paths("/", r))) continue; } else { const char *r = mnt_fs_get_root(fs);
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