Fwd: WinRAR cannot backup Windows streams with FreeBSD NFS server but works with Solaris NFS server

From: Martin Wege <martin.l.wege_at_gmail.com>
Date: Thu, 22 Jan 2026 19:35:20 UTC
Forgot to add freebsd, sorry

---------- Forwarded message ---------
From: Martin Wege <martin.l.wege@gmail.com>
Date: Thu, Jan 22, 2026 at 8:34 PM
Subject: WinRAR cannot backup Windows streams with FreeBSD NFS server
but works with Solaris NFS server
To: <ms-nfs41-client-devel@lists.sourceforge.net>


Hello,

I hit a problem testing backups with WinRAR (RAR 7.13 x64) on a
Windows NFSv4.1 share/ms-nfs41-client release 2026-01-19:

If I have files with multiple Win streams, it works if the NFS server
is a Solaris 11.4 one, but the streams are not backed up if the NFS
server is a FreeBSD 15.0.

Testcase on Windows:
mkdir dir1
add files with multiple streams to dir1/
Rar.exe a -os dir1.rar dir1
mkdir dir1_unpack
cd dir1_unpack
Rar.exe x ../dir1.rar
cd dir1
checking the files none of them have named streams anymore.

Comparing the behaviour I see that Rar does file locking for each
stream. The locking works with a Solaris NFS server, but fails with
NFS4ERR_OPENMODE with a FreeBSD 15.0 NFS server.

wireshark reports this NFSv4.1 SEQUENCE to LOCK the stream to the
FreeBSD NFS server:
Transmission Control Protocol, Src Port: 601, Dst Port: 2049, Seq:
14801, Ack: 283765, Len: 296
Remote Procedure Call, Type:Call XID:0x009be383
Network File System, Ops(3): SEQUENCE, PUTFH, LOCK
    [Program Version: 4]
    [V4 Procedure: COMPOUND (1)]
    Tag: lock
        length: 4
        contents: lock
    minorversion: 2
    Operations (count: 3): SEQUENCE, PUTFH, LOCK
        Opcode: SEQUENCE (53)
        Opcode: PUTFH (22)
            FileHandle
                length: 31
                [hash (CRC-32): 0x6f2dec8d]
                FileHandle:
9d940ab4de434e650a00f0a30b00000025c202000000000000000000000000
        Opcode: LOCK (12)
            locktype: WRITE_LT (2)
            reclaim?: No
            offset: 0
            length: 18446744073709551615
            new lock owner?: Yes
            seqid: 0x00000000
            StateID
                [StateID Hash: 0xb36e]
                StateID seqid: 1
                StateID Other: 606c5d694300000093510000
                [StateID Other hash: 0xd0fa5b5c]
            lock_seqid: 0x00000000
            Owner
                clientid: 0x0000000000000000
                owner: <DATA>
                    length: 5
                    contents: <DATA>
                    fill bytes: opaque data
    [Main Opcode: LOCK (12)]


Response from the FreeBSD NFS server:
Remote Procedure Call, Type:Reply XID:0x009be383
Network File System, Ops(3): SEQUENCE PUTFH LOCK(NFS4ERR_OPENMODE)
    [Program Version: 4]
    [V4 Procedure: COMPOUND (1)]
    Status: NFS4ERR_OPENMODE (10038)
    Tag: lock
        length: 4
        contents: lock
    Operations (count: 3)
        Opcode: SEQUENCE (53)
        Opcode: PUTFH (22)
            Status: NFS4_OK (0)
        Opcode: LOCK (12)
            Status: NFS4ERR_OPENMODE (10038)
    [Main Opcode: LOCK (12)]


How can I debug this further?

Thanks,
Martin