Skip to content

[NFS] Connection to macOS NFS native server fails due to file locking mechanism (requires 'nolock' option) #161

@p3ndr4g0n

Description

@p3ndr4g0n

Context

This is a follow-up to the issue regarding NFSv3 support (Reference: #146 ).
While adding the nfs_version parameter in v1.3.0 was a step in the right direction, it is insufficient for connecting to macOS-based NFS servers (and likely other BSD variants).

The Problem

Even with nfs_version="3" set in replay.cfg, the connection fails with a "Connection Refused" error in the UI. After some debugging, we identified that the root cause is File Locking (NLM). macOS's native NFS server does not play well with the Linux client's default locking mechanism, causing the rpc.lockd service on the Pi to fail registration, which aborts the mount process.

Logs & Evidence

When attempting to connect via the native UI configuration, dmesg reports the following fatal error regarding RPC service registration:

[ 16.361406] svc: failed to register lockdv1 RPC service (errno 111).
[ 16.361447] lockd_up: makesock failed, error=-111
...
[ERROR] [SYSTEM] Failed to mount NFS share: Connection refused

The Solution (Verified)

We performed a manual mount via SSH stopping the frontend first. The connection works instantly and perfectly only when the nolock option is explicitly passed to the mount command.

Fails: mount -t nfs -o nfsvers=3 ... (Default behavior)

Success: mount -v -t nfs -o nfsvers=3,nolock,tcp,rw 192.168.1.55:/Volumes/4TB/ReplayOS/roms /media/sd/roms

Steps to Reproduce

Server: Mac Mini (macOS) exporting a NFS share with -insecure (to allow high ports).

Client: RePlayOS NFS client configured via replay.cfg with correct IP and Path.

Result: "Failed to mount NFS".

Manual Fix: Run mount -o nolock ... -> Mounts successfully and roms are visible.

Current Limitation

It appears that replay.cfg does not currently support a generic nfs_options parameter, or the internal mounter ignores extra flags. Adding nfs_options="nolock" to the config file manually has no effect after reboot.

Feature Request / Fix

Please implement one of the following solutions to allow macOS users to use their native NFS servers:

Expose Mount Options: Allow reading an nfs_options string from replay.cfg and append it to the -o flag of the mount command.

Smart Defaults: If nfs_version is set to "3", automatically append nolock (since file locking is rarely needed for ROM reading and causes significant compatibility issues).

Thanks in advance.

Metadata

Metadata

Assignees

No one assigned

    Labels

    issueSomething isn't working but it is not a bug

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions