From: Forest <forestix@sonic.net>
To: linux-cifs@vger.kernel.org
Subject: getxattr() on cifs sometimes hangs since kernel 5.14
Date: Tue, 17 May 2022 13:48:58 -0700 [thread overview]
Message-ID: <91188ht5vqi7kq3ml5d3a48sjo9ltqjko3@4ax.com> (raw)
When running on recent kernel versions, this system call on a cifs-mounted
file sometimes takes an unusually long time:
getxattr("/cifsmount/dir/image.jpg", "user.baloo.rating", NULL, 0)
The call normally returns in under 10 milliseconds, but on kernel 5.14+, it
sometimes takes over 30 seconds with no significant client or server load.
Discovered while using gwenview to browse 100+ 1.5 MiB images on a samba share
mounted via /etc/fstab. While quickly flipping through the images, the problem
often occurs within 20 seconds. Gwenview freezes until the call completes.
Client:
kernel versions 5.14 and later
mount.cifs 6.11
Gwenview 20.12.3
Debian Bullseye
4-core amd64
Server:
Samba 4.13.13-Debian
Debian Bullseye
6-core arm64
A git bisect identified kernel commit 9e992755be8f as the problematic change.
The problem does not occur when any of the following are true:
- Client is running a kernel from before that commit.
- The nouser_xattr mount option is used on the cifs share.
- Gwenview accesses the files via smb:// URL instead of a cifs mount.
I don't know Gwenview's internals, but using its strace output as a guide, I
have written a potential reproducer. It succeeds at triggering slow getxattr()
calls, though not nearly as slow as those triggered by Gwenview. I can post it
if that would be helpful.
next reply other threads:[~2022-05-17 21:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-17 20:48 Forest [this message]
2022-05-18 3:18 ` getxattr() on cifs sometimes hangs since kernel 5.14 ronnie sahlberg
2022-07-15 21:29 ` Forest
[not found] ` <CAH2r5muJYFQ7FutNP_WWCHPE+dDSi6=_x27P81+FN7QGQKyzFA@mail.gmail.com>
2022-05-18 3:56 ` Forest
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=91188ht5vqi7kq3ml5d3a48sjo9ltqjko3@4ax.com \
--to=forestix@sonic.net \
--cc=linux-cifs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox