import gvfs-1.36.2-10.el8
This commit is contained in:
parent
913bcec6ae
commit
af41eac897
115
SOURCES/smb-Improve-enumeration-performance.patch
Normal file
115
SOURCES/smb-Improve-enumeration-performance.patch
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index daeee728..689667e5 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -551,6 +551,11 @@ if test "x$enable_samba" != "xno"; then
|
||||||
|
AC_DEFINE(HAVE_SMBC_SETOPTIONPROTOCOLS, 1, [Define to 1 if smbc_setOptionProtocols() is available]),
|
||||||
|
[]
|
||||||
|
)
|
||||||
|
+
|
||||||
|
+ AC_CHECK_LIB(smbclient, smbc_readdirplus2,
|
||||||
|
+ AC_DEFINE(HAVE_SMBC_READDIRPLUS2, 1, [Define to 1 if smbc_readdirplus2() is available]),
|
||||||
|
+ []
|
||||||
|
+ )
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
diff --git a/daemon/gvfsbackendsmb.c b/daemon/gvfsbackendsmb.c
|
||||||
|
index 9571fa0d..ce151648 100644
|
||||||
|
--- a/daemon/gvfsbackendsmb.c
|
||||||
|
+++ b/daemon/gvfsbackendsmb.c
|
||||||
|
@@ -1738,25 +1738,34 @@ do_enumerate (GVfsBackend *backend,
|
||||||
|
GFileQueryInfoFlags flags)
|
||||||
|
{
|
||||||
|
GVfsBackendSmb *op_backend = G_VFS_BACKEND_SMB (backend);
|
||||||
|
- struct stat st;
|
||||||
|
- int res;
|
||||||
|
+ struct stat st = { 0 };
|
||||||
|
GError *error;
|
||||||
|
SMBCFILE *dir;
|
||||||
|
- char dirents[1024*4];
|
||||||
|
- struct smbc_dirent *dirp;
|
||||||
|
GFileInfo *info;
|
||||||
|
GString *uri;
|
||||||
|
- int uri_start_len;
|
||||||
|
smbc_opendir_fn smbc_opendir;
|
||||||
|
+ smbc_closedir_fn smbc_closedir;
|
||||||
|
+#ifndef HAVE_SMBC_READDIRPLUS2
|
||||||
|
+ int res;
|
||||||
|
+ char dirents[1024*4];
|
||||||
|
+ struct smbc_dirent *dirp;
|
||||||
|
+ int uri_start_len;
|
||||||
|
smbc_getdents_fn smbc_getdents;
|
||||||
|
smbc_stat_fn smbc_stat;
|
||||||
|
- smbc_closedir_fn smbc_closedir;
|
||||||
|
+#else
|
||||||
|
+ smbc_readdirplus2_fn smbc_readdirplus2;
|
||||||
|
+ const struct libsmb_file_info *exstat;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
uri = create_smb_uri_string (op_backend->server, op_backend->port, op_backend->share, filename);
|
||||||
|
|
||||||
|
smbc_opendir = smbc_getFunctionOpendir (op_backend->smb_context);
|
||||||
|
+#ifndef HAVE_SMBC_READDIRPLUS2
|
||||||
|
smbc_getdents = smbc_getFunctionGetdents (op_backend->smb_context);
|
||||||
|
smbc_stat = smbc_getFunctionStat (op_backend->smb_context);
|
||||||
|
+#else
|
||||||
|
+ smbc_readdirplus2 = smbc_getFunctionReaddirPlus2 (op_backend->smb_context);
|
||||||
|
+#endif
|
||||||
|
smbc_closedir = smbc_getFunctionClosedir (op_backend->smb_context);
|
||||||
|
|
||||||
|
dir = smbc_opendir (op_backend->smb_context, uri->str);
|
||||||
|
@@ -1776,6 +1785,8 @@ do_enumerate (GVfsBackend *backend,
|
||||||
|
|
||||||
|
if (uri->str[uri->len - 1] != '/')
|
||||||
|
g_string_append_c (uri, '/');
|
||||||
|
+
|
||||||
|
+#ifndef HAVE_SMBC_READDIRPLUS2
|
||||||
|
uri_start_len = uri->len;
|
||||||
|
|
||||||
|
while (TRUE)
|
||||||
|
@@ -1827,9 +1838,27 @@ do_enumerate (GVfsBackend *backend,
|
||||||
|
dirp = (struct smbc_dirent *) (((char *)dirp) + dirlen);
|
||||||
|
res -= dirlen;
|
||||||
|
}
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
+ while ((exstat = smbc_readdirplus2 (op_backend->smb_context, dir, &st)) != NULL)
|
||||||
|
+ {
|
||||||
|
+ if ((S_ISREG (st.st_mode) ||
|
||||||
|
+ S_ISDIR (st.st_mode) ||
|
||||||
|
+ S_ISLNK (st.st_mode)) &&
|
||||||
|
+ g_strcmp0 (exstat->name, ".") != 0 &&
|
||||||
|
+ g_strcmp0 (exstat->name, "..") != 0)
|
||||||
|
+ {
|
||||||
|
+ info = g_file_info_new ();
|
||||||
|
+ set_info_from_stat (op_backend, info, &st, exstat->name, matcher);
|
||||||
|
+ g_vfs_job_enumerate_add_info (job, info);
|
||||||
|
+ g_object_unref (info);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ memset (&st, 0, sizeof (struct stat));
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- res = smbc_closedir (op_backend->smb_context, dir);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ smbc_closedir (op_backend->smb_context, dir);
|
||||||
|
|
||||||
|
g_vfs_job_enumerate_done (job);
|
||||||
|
|
||||||
|
diff --git a/meson.build b/meson.build
|
||||||
|
index 6ae768d9..d3f59457 100644
|
||||||
|
--- a/meson.build
|
||||||
|
+++ b/meson.build
|
||||||
|
@@ -418,6 +418,7 @@ if enable_samba
|
||||||
|
smbclient_dep = dependency('smbclient')
|
||||||
|
|
||||||
|
config_h.set('HAVE_SMBC_SETOPTIONPROTOCOLS', cc.has_function('smbc_setOptionProtocols', dependencies: smbclient_dep))
|
||||||
|
+ config_h.set('HAVE_SMBC_READDIRPLUS2', cc.has_function('smbc_readdirplus2', dependencies: smbclient_dep))
|
||||||
|
endif
|
||||||
|
|
||||||
|
# *** Check for libarchive ***
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
Name: gvfs
|
Name: gvfs
|
||||||
Version: 1.36.2
|
Version: 1.36.2
|
||||||
Release: 8%{?dist}
|
Release: 10%{?dist}
|
||||||
Summary: Backends for the gio framework in GLib
|
Summary: Backends for the gio framework in GLib
|
||||||
|
|
||||||
License: GPLv3 and LGPLv2+ and BSD and MPLv2.0
|
License: GPLv3 and LGPLv2+ and BSD and MPLv2.0
|
||||||
@ -60,6 +60,9 @@ Patch8: admin-Ensure-correct-ownership-when-moving-to-file-u.patch
|
|||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1759075
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1759075
|
||||||
Patch9: udisks2-Fix-crashes-caused-by-missing-source-tag.patch
|
Patch9: udisks2-Fix-crashes-caused-by-missing-source-tag.patch
|
||||||
|
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1569868
|
||||||
|
Patch10: smb-Improve-enumeration-performance.patch
|
||||||
|
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
|
BuildRequires: pkgconfig(glib-2.0) >= %{glib2_version}
|
||||||
BuildRequires: pkgconfig(dbus-glib-1)
|
BuildRequires: pkgconfig(dbus-glib-1)
|
||||||
@ -161,7 +164,6 @@ Summary: gphoto2 support for gvfs
|
|||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{name}-client%{?_isa} = %{version}-%{release}
|
Requires: %{name}-client%{?_isa} = %{version}-%{release}
|
||||||
BuildRequires: pkgconfig(libgphoto2) >= %{libgphoto2_version}
|
BuildRequires: pkgconfig(libgphoto2) >= %{libgphoto2_version}
|
||||||
BuildRequires: libusb-devel >= %{libusb_version}
|
|
||||||
BuildRequires: libexif-devel
|
BuildRequires: libexif-devel
|
||||||
|
|
||||||
%description gphoto2
|
%description gphoto2
|
||||||
@ -204,6 +206,7 @@ Summary: MTP support for gvfs
|
|||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
Requires: %{name}-client%{?_isa} = %{version}-%{release}
|
Requires: %{name}-client%{?_isa} = %{version}-%{release}
|
||||||
BuildRequires: pkgconfig(libmtp) >= %{libmtp_version}
|
BuildRequires: pkgconfig(libmtp) >= %{libmtp_version}
|
||||||
|
BuildRequires: pkgconfig(libusb-1.0) >= %{libusb_version}
|
||||||
|
|
||||||
%description mtp
|
%description mtp
|
||||||
This package provides support for reading and writing files on
|
This package provides support for reading and writing files on
|
||||||
@ -438,6 +441,12 @@ killall -USR1 gvfsd >&/dev/null || :
|
|||||||
%{_datadir}/installed-tests
|
%{_datadir}/installed-tests
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 05 2020 Ondrej Holy <oholy@redhat.com> - 1.36.2-10
|
||||||
|
- Fix libusb(x) requirements (rhbz#1866332)
|
||||||
|
|
||||||
|
* Wed Jun 17 2020 Ondrej Holy <oholy@redhat.com> - 1.36.2-9
|
||||||
|
- Improve enumeration performance of smb backend (rhbz#1569868)
|
||||||
|
|
||||||
* Tue Oct 8 2019 Ondrej Holy <oholy@redhat.com> - 1.36.2-8
|
* Tue Oct 8 2019 Ondrej Holy <oholy@redhat.com> - 1.36.2-8
|
||||||
- Fix udisks2 volume monitor crashes when stopping drive (rhbz#1759075)
|
- Fix udisks2 volume monitor crashes when stopping drive (rhbz#1759075)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user