Package: nfs-ganesha
Version: 6.5-5
Severity: important
Dear Maintainer,
* What led up to the situation?
The server is running nfs-ganesha 6.5-5 on Debian 13, and multiple Debian 13
clients are connected via NFSv4. When the number of concurrent clients
exceeds
approximately 15, the server starts producing RW LOCK mutex errors in
nfs_rpc_callback.c.
* What exactly did you do (or not do) that was effective (or
ineffective)?
I connected 15 or more NFSv4 clients to the server and performed normal file
operations (read/write) from the clients. No special configuration changes
were made beyond the default nfs-ganesha settings for multiple exports.
* What was the outcome of this action?
The server logs repeatedly show the following error:
release_cb_slot : RW LOCK : CRIT : Error 22, acquiring mutex
(&session->cb_mutex)
nfs_rpc_callback.c:1256
The server becomes unstable under load, causing failures in client file
operations.
* What outcome did you expect instead?
The server should handle multiple NFSv4 clients concurrently without
producing mutex errors or becoming unstable, maintaining normal operation
for all connected clients.
Problem Description:
When running nfs-ganesha 6.5-5 on Debian 13 (server and clients), the server
becomes unstable when more than ~15 NFSv4 clients are active. The logs
show repeated mutex acquisition errors in nfs_rpc_callback.c.
Exact error message:
release_cb_slot : RW LOCK : CRIT : Error 22, acquiring mutex
(&session->cb_mutex)
nfs_rpc_callback.c:1256
Environment:
- Server: Debian 13
- Clients: Debian 13 (~90% NFSv4.0, some NFSv4.1)
- Problem appears only under higher load (≥15 clients)
Steps to Reproduce:
1. Start nfs-ganesha 6.5-5 on Debian 13.
2. Connect ≥15 NFSv4 clients.
3. Observe repeated mutex errors and server instability.
Expected Result:
nfs-ganesha should handle multiple NFSv4 clients concurrently without
crashes
or mutex errors.
Actual Result:
Server logs show repeated "RW LOCK : Error 22" messages and becomes
unstable.
-- System Information:
Debian Release: 13.3
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500,
'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 6.12.63+deb13-amd64 (SMP w/4 CPU threads; PREEMPT)
Locale: LANG=ca_ES.UTF-8, LC_CTYPE=ca_ES.UTF-8 (charmap=UTF-8) (ignored:
LC_ALL set to ca_ES.UTF-8), LANGUAGE=ca_ES.UTF-8
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages nfs-ganesha depends on:
ii dbus 1.16.2-2
ii libacl1 2.3.2-2+b1
ii libblkid1 2.41-5
ii libc6 2.41-12+deb13u1
ii libcap2 1:2.75-10+b3
ii libcom-err2 1.47.2-3+b7
ii libdbus-1-3 1.16.2-2
ii libgssapi-krb5-2 1.21.3-5
ii libkrb5-3 1.21.3-5
ii libnfsidmap1 1:2.8.3-1
ii libntirpc6.3 6.3-2
ii liburcu8t64 0.15.2-2
ii libuuid1 2.41-5
ii libwbclient0 2:4.22.6+dfsg-0+deb13u1
ii nfs-common 1:2.8.3-1
ii rpcbind 1.2.7-1
nfs-ganesha recommends no packages.
nfs-ganesha suggests no packages.
-- Configuration Files:
/etc/ganesha/ganesha.conf changed:
## Allow NFSv3 to mount paths with the Pseudo path, the same as NFSv4,
## instead of using the physical paths.
#mount_path_pseudo = true;
## Configure the protocols that Ganesha will listen for. This is a hard
## limit, as this list determines which sockets are opened. This list
## can be restricted per export, but cannot be expanded.
#Protocols = 3,4,9P;
## Access type for clients. Default is None, so some access must be
## given either here or in the export itself.
#Access_Type = RW;
## The point at which object cache entries will start being reused.
#Entries_HWMark = 100000;
## Export Id (mandatory, each EXPORT must have a unique Export_Id)
#Export_Id = 12345;
## Exported path (mandatory)
#Path = /nonexistent;
## Pseudo Path (required for NFSv4 or if mount_path_pseudo = true)
#Pseudo = /nonexistent;
## Restrict the protocols that may use this export. This cannot allow
## access that is denied in NFS_CORE_PARAM.
#Protocols = 3,4;
## Access type for clients. Default is None, so some access must be
## given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block
#Access_Type = RW;
## Whether to squash various users.
#Squash = root_squash;
## Allowed security types for this export
#Sectype = sys,krb5,krb5i,krb5p;
## Exporting FSAL
#FSAL {
#Name = VFS;
#}
## Default log level for all components
#Default_Log_Level = WARN;
## Configure per-component log levels.
#Components {
#FSAL = INFO;
#NFS4 = EVENT;
#}
## Where to log
#Facility {
#name = FILE;
#destination = "/var/log/ganesha.log";
#enable = active;
#}
%include /etc/ganesha/vfs.conf
-- no debconf information