Page MenuHomeFreeBSD

rmacklem (Rick Macklem)
User

Projects (1)

User Details

User Since
Jan 13 2015, 10:58 PM (616 w, 1 d)

Recent Activity

Yesterday

rmacklem committed rGca190427e1f5: nfs_clrpcops.c: Fix typo in commit db8444c1b7e4.
Wed, Nov 4, 11:07 PM
rmacklem committed rGdb8444c1b7e4: nfscl: Fix the RDMA write reduction code.
Wed, Nov 4, 8:53 PM

Mon, Nov 2

rmacklem committed rGbc7366a340ed: nfs_nfsdstate.c: Partial revert of 64857418bb23.
Mon, Nov 2, 3:03 PM

Sun, Nov 1

rmacklem committed rG64857418bb23: nfsd: Fix handling of RPC messages too large to cache (authored by Acts1631 <acts1631kjv@proton.me>).
Sun, Nov 1, 11:30 PM
rmacklem committed rG63302e904a52: nfs_clrpcops.c: Fix an mbuf leak introduced by fec497b89b1a.
Sun, Nov 1, 4:06 AM

Sat, Oct 31

rmacklem committed rGfec497b89b1a: nfs_clrpcops.c: Get rid of bogus rpc_free_rdma_reduction() calls.
Sat, Oct 31, 8:44 PM
rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).
In D58851#1400172, @kib wrote:

Hm, but if ZFS does not need the exclusively locked vnode for writes, does it need the same for setattr()? May be we should lower the requirements for VOP_SETATTR() same as for VOP_WRITE()?

Sat, Oct 31, 5:31 AM
rmacklem committed rG6d705f2bf17f: rpc.tlsservd.c: Check the malloc return (authored by Osvaldo Janeri Filho <ojanerif_amd.com>).
Sat, Oct 31, 3:06 AM
rmacklem closed D60927: rpc.tlsservd: check the malloc() in rpctlssd_connect_2_svc().
Sat, Oct 31, 3:06 AM

Fri, Oct 30

rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).

Well, I was able to use these helpers for read reduction,
but I did not observe any performance improvement
compared to the mechanism already in the RDMA server,
which uses M_EXTPG mbuf lists. (It was either perfomance
neutral or slightly poorer performance.)

Fri, Oct 30, 11:35 PM

Thu, Oct 29

rmacklem accepted D60927: rpc.tlsservd: check the malloc() in rpctlssd_connect_2_svc().

This looks fine, although it is hard to imagine
how the malloc() could fail, since the process
runs as root and can only be used on 64bit systems.

Thu, Oct 29, 11:59 PM
rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).

So, in general, I'm confused w.r.t. how the interface
is used when growing a file via writing.

Thu, Oct 29, 10:36 PM
rmacklem added inline comments to D58851: vm_object_take_pages_for_io(9).
Thu, Oct 29, 9:03 PM

Wed, Oct 21

rmacklem accepted D60952: nfsserver: use the destination export for the COPY/CLONE write check.

Yes, as markj@ notes, the change is harmless
and mostly meaningless. The NFSVNO_EXSTRICTACCESS()
is a placeholder for some site that might not want to let
the file "owner" get access despite mode bits.

Wed, Oct 21, 11:18 PM

Sun, Oct 18

rmacklem committed rG5bf3e2a14111: nfs_clvfsops.c: Set readahead to 15 for RDMA.
Sun, Oct 18, 11:36 PM

Sat, Oct 17

rmacklem committed rG02971f200083: clntrdma.h: Add some fields to RDMA structures (glue for nfsclrdma.ko).
Sat, Oct 17, 11:26 PM

Thu, Oct 15

rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).

I am now testing using NFS over RDMA for read RPCs
in the NFS server and it seems to be working fine.

Thu, Oct 15, 1:48 PM
rmacklem committed rG472a735d09eb: nfs_nfsdsocket.c: Fix "nfsstats -d" for ERELOOKUP (authored by Bren <BlueSkiesApplePies+FreeBUG@pm.me>).
Thu, Oct 15, 1:27 AM
rmacklem committed rGe4a203a17fde: nfs_nfsdsocket.c: Fix "nfsstats -d" for ERELOOKUP (authored by Bren <BlueSkiesApplePies+FreeBUG@pm.me>).
Thu, Oct 15, 1:23 AM

Wed, Oct 14

rmacklem committed rGc556f4e1b1e1: nfscl: Fix oddball cases for session slot release (authored by J. David <j.david.lists@gmail.com>).
Wed, Oct 14, 1:24 AM
rmacklem committed rGcfd0d2cd2ce1: nfscl: Fix oddball cases for session slot release (authored by J. David <j.david.lists@gmail.com>).
Wed, Oct 14, 1:15 AM

Sun, Oct 11

rmacklem added a comment to D60603: nfsclient: Make per-entry directory positions usable.

This gets ugly when another client modifies the directory
by adding or deleting an entry.
Once that happens, all these "logical offsets" become bogus.

Sun, Oct 11, 2:52 PM
rmacklem committed rGb1023deba6df: nfs_nfsdstate.c: Add an extra safety belt check for the backchannel (authored by vinicius_ferrao.net.br).
Sun, Oct 11, 3:11 AM
rmacklem committed rG07c057b5de44: clnt_vc.c: Fix handling of broken TCP connections (authored by vinicius_ferrao.net.br).
Sun, Oct 11, 3:09 AM
rmacklem committed rG4d015c4c3f94: clnt_vc.c: Fix handling of backchannel xprt.
Sun, Oct 11, 3:06 AM
rmacklem committed rG63e5c83e8db3: nfs_nfsdstate.c: Add an extra safety belt check for the backchannel (authored by vinicius_ferrao.net.br).
Sun, Oct 11, 2:59 AM
rmacklem committed rG69dc3d97a3c6: clnt_vc.c: Fix handling of broken TCP connections (authored by vinicius_ferrao.net.br).
Sun, Oct 11, 2:57 AM
rmacklem committed rG28eefc7da0ca: clnt_vc.c: Fix handling of backchannel xprt.
Sun, Oct 11, 2:55 AM

Sat, Oct 10

rmacklem accepted D58736: acl(9): expound on NFSv4 constants' meanings.

Yea, sure. I've seen RFC#s written both ways.

Sat, Oct 10, 1:39 AM
rmacklem accepted D58736: acl(9): expound on NFSv4 constants' meanings.

Don't forget to update the date ".Dd".

Sat, Oct 10, 1:23 AM

Thu, Oct 8

rmacklem committed rG9a237074d380: nfs_nfsdsocket.c: Fix "nfsstats -d" for ERELOOKUP (authored by Bren <BlueSkiesApplePies+FreeBUG@pm.me>).
Thu, Oct 8, 7:07 PM

Wed, Oct 7

rmacklem accepted D60044: rc.d/mountd: Do not require /etc/exports.
Wed, Oct 7, 4:39 PM
rmacklem committed rG77a7a48a1cb0: nfscl: Fix oddball cases for session slot release (authored by J. David <j.david.lists@gmail.com>).
Wed, Oct 7, 1:55 AM

Oct 4 2026

rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).
In D58851#1377474, @kib wrote:
In D58851#1377388, @kib wrote:

"pgrbwt" means that the function waits for the page busy state to pass. Often the reason for this state waiting forever is that the thread that waits already owns the busy state on the page.

Does the hang occur in the buffer strategy method?

Yes. Btw, I think the main use for this helper is in the server
where the vnode won't be an NFS one, so if this isn't easily
avoided, I wouldn't worry about it. (In other words, use the
helper in the NFS server, but not the NFS client.)

So in the strategy routine you effectively have the same algorithm applied already by the buf layer. You can use b_pages[] directly.

Oct 4 2026, 11:24 PM
rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

The main change is using b_pages directly for read/write.

Oct 4 2026, 9:51 PM
rmacklem committed rGa52c50b4b7c2: nfs_nfsdstate.c: Add an extra safety belt check for the backchannel (authored by vinicius_ferrao.net.br).
Oct 4 2026, 9:31 PM
rmacklem committed rG49bec8c3dc58: clnt_vc.c: Fix handling of broken TCP connections (authored by vinicius_ferrao.net.br).
Oct 4 2026, 9:11 PM
rmacklem committed rG81a6514689ce: clnt_vc.c: Fix handling of backchannel xprt.
Oct 4 2026, 8:32 PM
rmacklem committed rG2050abe80483: rpc_generic.c: Initialize "cp" to shut the compiler up.
Oct 4 2026, 1:57 AM
rmacklem committed rGc2089b654ad2: nfscl: Add support for b_pages to be used by RDMA.
Oct 4 2026, 12:45 AM

Sep 29 2026

rmacklem added a comment to D60044: rc.d/mountd: Do not require /etc/exports.
In D60044#1379367, @0mp wrote:

If the mountd program can already tell if it's missing essential files, then perhaps there it makes no sense to set required_files="/etc/exports" at all. The error will show up in logs, it's just that the error will come from the mountd program instead of the mountd service. I think that this would be cleaner than a implementing a complicated if statement conditional that is expressing what's already present in mountd. Also, this approach would allow us to avoid shipping an empty /etc/exports file that might mess with existing automation scripts. Not the end of the world in itself, but also potentially unnecessary work for users.

Not to mention that required_files="/etc/exports" is probably wrong anyway, because alternative exports files can be specified via mountd_flags.

tl;dr: I'd suggest removing the required_files="/etc/exports" from the service script completely and let mountd handle its requirements on its own.

Sep 29 2026, 1:52 PM

Sep 28 2026

rmacklem added a comment to D60044: rc.d/mountd: Do not require /etc/exports.

Is there a reason we shouldn't instead ship an empty /etc/exports file as part of the distribution, just like we do with, say, /etc/sysctl.conf?

I thought there was such a thing installed for a while?
(If I recall correctly, it was about a screenfull of comment that tried to explain
what needed to be in /etc/exports, but maybe I don't recall correctly.)

Sep 28 2026, 8:56 PM

Sep 27 2026

rmacklem added a comment to D60044: rc.d/mountd: Do not require /etc/exports.

I suppose this is ok. It would be nice to note
somewhere that /etc/exports is always needed
for NFSv4. (A /etc/zfs/exports only setup can
be done for NFSv3 only.)

It might be better to require /etc/exports when either
nfsv4_server_enable or nfsv4_server_only are "yes".

I'm not really experienced with NFS, so we could get more people to weigh in on this. @markj what do you think?

Sep 27 2026, 2:33 PM

Sep 26 2026

rmacklem added a comment to D60044: rc.d/mountd: Do not require /etc/exports.

I suppose this is ok. It would be nice to note
somewhere that /etc/exports is always needed
for NFSv4. (A /etc/zfs/exports only setup can
be done for NFSv3 only.)

Sep 26 2026, 6:43 PM
rmacklem accepted D60044: rc.d/mountd: Do not require /etc/exports.

I suppose this is ok. It would be nice to note
somewhere that /etc/exports is always needed
for NFSv4. (A /etc/zfs/exports only setup can
be done for NFSv3 only.)

Sep 26 2026, 2:13 PM
rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).
In D58851#1377388, @kib wrote:

"pgrbwt" means that the function waits for the page busy state to pass. Often the reason for this state waiting forever is that the thread that waits already owns the busy state on the page.

Does the hang occur in the buffer strategy method?

Sep 26 2026, 2:47 AM
rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).

So, I just tried to use the helper function and the process gets
stuck waiting on"pgrbwt".
Any ideas?
Or is there more info I can try and get you?

Sep 26 2026, 1:32 AM

Sep 21 2026

rmacklem committed rG2d20de9ffe4d: nfsuserd.c: Fix handling where pw_name/gr_name differ from lookup name (authored by Emanuel Helms <emanuel@nrv.cc>).
Sep 21 2026, 1:50 AM
rmacklem committed rG45198c6abca7: nfsuserd.c: Fix handling where pw_name/gr_name differ from lookup name (authored by Emanuel Helms <emanuel@nrv.cc>).
Sep 21 2026, 1:45 AM

Sep 19 2026

rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

I finally got around to debugging the backchannel
stuff. I ended up creating separate svc_rdma_backchannel_xxx()
functions instead of trying to overload the svc_vc_backchannel()
ones.

Sep 19 2026, 1:00 AM
rmacklem committed rGb87b15d43ea3: clntrdma.h: Add a field to rpcrdma_xprt.
Sep 19 2026, 12:46 AM
rmacklem committed rGef98d080404f: clnt_bck.c: Fix the "glue" for the nfsrdma.ko module.
Sep 19 2026, 12:42 AM

Sep 14 2026

rmacklem committed rG274b0d6b113b: nfs_nfsdkrpc.c: Fix the "glue" for the nfsrdma.ko modules for NFSv3.
Sep 14 2026, 11:58 PM
rmacklem committed rG77535f91f623: nfscl: Yet more fixes for the NFS over RDMA client glue.
Sep 14 2026, 12:15 AM

Sep 13 2026

rmacklem added inline comments to D59278: nfsclrdma.ko: Client side NFS over RDMA module.
Sep 13 2026, 7:42 PM

Sep 12 2026

rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

The main changes are using pages for the inline send/recv
buffers instead of malloc'd buffers, which google claims is
more efficient. I have not yet implemented RFC8797, which
should allow the use of the full 4K for servers that will allow it.

Sep 12 2026, 11:09 PM
rmacklem committed rG741cd29526e0: nfscl: Yet more fixes for the NFS over RDMA client glue.
Sep 12 2026, 10:49 PM

Sep 11 2026

rmacklem accepted D59588: chflags: Alias nocache to noucache for consistency.
Sep 11 2026, 1:39 PM

Sep 9 2026

rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

Added a 2nd argument to rpc_remove_mreduce() so
that it can, optionally, not free the mbuf.

Sep 9 2026, 3:39 PM

Sep 8 2026

rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

Add a couple of mxxx = NULL statements to avoid
a double free of the mbuf lists, as suggested by Vinicius.

Sep 8 2026, 4:53 PM
rmacklem added a comment to D58736: acl(9): expound on NFSv4 constants' meanings.

These definitions should be taken verbatim from the
RFC (8881). To be honest, the only folk who actually
know what they mean work for Microsoft.
(NFSv4 ACLs are based on Windows ACLs and what
is in the RFC is taken verbatim from a Microsoft
document.)

Sep 8 2026, 3:42 PM

Sep 7 2026

rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

Use a separate variable called reduce_pos for the
reduction position, which is now calculated by the
NFS glue code, as suggested by Vinicius.

Sep 7 2026, 11:44 PM
rmacklem added inline comments to D59278: nfsclrdma.ko: Client side NFS over RDMA module.
Sep 7 2026, 11:05 PM
rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

Recent changes to "fix" handling of retries introduced
the bug Vinicius spotted. It actually didn't break anything
for the non-retry case, since it just meant the "reduce" mbuf
wasn't removed from the copy of the mbuf request list.

Sep 7 2026, 10:32 PM
rmacklem added inline comments to D59278: nfsclrdma.ko: Client side NFS over RDMA module.
Sep 7 2026, 9:51 PM
rmacklem committed rG1771ab245c23: nfsuserd.c: Fix handling where pw_name/gr_name differ from lookup name (authored by Emanuel Helms <emanuel@nrv.cc>).
Sep 7 2026, 7:53 PM

Sep 6 2026

rmacklem committed rGfb3875a38e26: nfsd: Add nfs_extern.h.
Sep 6 2026, 8:54 PM
rmacklem committed rG407d7177057d: nfsd: Clean up the "glue" for the nfsrdma.ko module.
Sep 6 2026, 8:43 PM

Sep 5 2026

rmacklem updated the diff for D59278: nfsclrdma.ko: Client side NFS over RDMA module.

This update fixes a bunch of issues.

Sep 5 2026, 10:01 PM
rmacklem resigned from D59438: Introduce nfsdtop(8).

Looks good, but I'm no shell script guy, so hopefully
someone else can review it.

Sep 5 2026, 3:04 AM · manpages, DTrace

Sep 3 2026

rmacklem committed rG799061fc769c: nfscl: A few more fixes for the NFS over RDMA client glue.
Sep 3 2026, 2:23 AM

Sep 1 2026

rmacklem committed rGcc352a850f98: nfs_clvfsops.c: Fix the non-VIMAGE build.
Sep 1 2026, 5:35 PM
rmacklem committed rGf41d83578e8e: nfsclient: Fix problems with the NFS over RDMA glue.
Sep 1 2026, 2:07 PM

Aug 31 2026

rmacklem committed rG9bec8a959bd6: RELNOTES: Add an entry for the NFS over RDMA "glue" commits.
Aug 31 2026, 2:03 AM
rmacklem committed rGd8d9f39df543: nfs_clvfsops.c: Silence a compiler warning.
Aug 31 2026, 12:59 AM

Aug 30 2026

rmacklem added a comment to D59278: nfsclrdma.ko: Client side NFS over RDMA module.

Oh, I should have noted that I either wrote the code
or cribbed it from Linux sources that carry the same
dual license as the OFED sources.

Aug 30 2026, 10:48 PM
rmacklem requested review of D59278: nfsclrdma.ko: Client side NFS over RDMA module.
Aug 30 2026, 10:46 PM
rmacklem committed rG8ee0a615cb23: nfsclient: Add a new nfs_client_rdma_enable variable.
Aug 30 2026, 10:13 PM
rmacklem committed rG884ee8d6c9b4: nfscl: Add some glue for client side NFS over RDMA.
Aug 30 2026, 10:03 PM
rmacklem committed rGa311bd18a6fb: krpc: Add some glue for client side NFS over RDMA.
Aug 30 2026, 9:34 PM

Aug 26 2026

rmacklem committed rGc54fbc9e839b: chflags.1: Change dontcache to nocache.
Aug 26 2026, 10:22 PM
rmacklem committed rG290e563166b4: chflags: Add a new UF_NOCACHE flag.
Aug 26 2026, 9:58 PM

Aug 18 2026

rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).
In D58851#1352085, @kib wrote:
In D58851#1351758, @kib wrote:

I looked more carefully at the issue of the interaction between vm_fault_quickXXX() and map_remove_YYY(). It could be implemented using the observation that when pmap_extract_and_hold() succeeds but the resulting page is busy, we should fall back to the vm_fault_hold() path for that page. This requires some kind of interlock between the busy state and wiring.

I even started implementing it, but then I considered what would be the consequence of not implementing. Basically, to get advantage of that situation, userspace needs to construct some situation. For instance, it needs to map a file shared, and then do read(2) from pipe into the mapping. Similarly, for physio. IMO if userspace is so much dedicated to cause this inconsistency, we might allow it. The VM code is simpler, and user is causing only self-inflicted damage. I do not see a problem with it.

On the other hand, the pmap_remove_all/write() calls make the regular file io with read(2) or write(2), or normal userspace writes through the mapping, atomic with regard to the NFS over RDMA io RPCs. I believe it is good enough.

Well, if this interface is not used, the NFS server does a..
VOP_READ() with a shared vnode lock
or
VOP_WRITE() with either a shared or exclusively locked vnode

(depending on whether the fs sets MNTK_SHARED_WRITES)

No range locking.

So, ideally, this interface would provide the same semantics.
If not, someone, someday, will go "when I mount rdma this weird.. happens".
I don't see that when I do a tcp mount.

What I discussed above is not about the range locking. It is about some very specific user buffer configurations that probably cannot be created by real applications, and cannot be utilized for any useful work. Also, I believe that the issue is not limited to the proposed interface, but also exists e.g. for buffered reads. My point is that it does not corrupt the kernel state, and is irrelevant practically for correctness.

Aug 18 2026, 11:53 PM
rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).
In D58851#1351758, @kib wrote:

I looked more carefully at the issue of the interaction between vm_fault_quickXXX() and map_remove_YYY(). It could be implemented using the observation that when pmap_extract_and_hold() succeeds but the resulting page is busy, we should fall back to the vm_fault_hold() path for that page. This requires some kind of interlock between the busy state and wiring.

I even started implementing it, but then I considered what would be the consequence of not implementing. Basically, to get advantage of that situation, userspace needs to construct some situation. For instance, it needs to map a file shared, and then do read(2) from pipe into the mapping. Similarly, for physio. IMO if userspace is so much dedicated to cause this inconsistency, we might allow it. The VM code is simpler, and user is causing only self-inflicted damage. I do not see a problem with it.

On the other hand, the pmap_remove_all/write() calls make the regular file io with read(2) or write(2), or normal userspace writes through the mapping, atomic with regard to the NFS over RDMA io RPCs. I believe it is good enough.

Aug 18 2026, 1:16 PM

Aug 17 2026

rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).
In D58851#1351260, @kib wrote:

IOMMU has nothing to do with this function. It does not even look into the bus address space.

Oops, I confused this with what I need for the client, which is your _bus_dmamap_load_ma[] that maps pages to
configuous dma space.

Aug 17 2026, 12:27 PM
rmacklem added a comment to D58851: vm_object_take_pages_for_io(9).

If it isn't hard to do, it would be nice if vm_object_take_pages_for_io()
had a flag option that indicated if it should return failure if there is
no IOMMU hardware. (Or is there an easy way for the caller to check
before calling this function?)

Aug 17 2026, 1:41 AM

Aug 15 2026

rmacklem committed rG3ce28106a887: rc.conf: Fix the default NFS-over-RDMA port number (authored by Vinicius Ferrao <ferrao@versatuphpc.com.br>).
Aug 15 2026, 9:30 PM

Aug 14 2026

rmacklem committed rG471e14267bea: nfsd: Update the rc.d script for RDMA for the nfsd service.
Aug 14 2026, 7:58 PM
rmacklem committed rG7144a1d58c5c: nfsd: Add glue for the nfsrdma.ko module.
Aug 14 2026, 3:01 PM

Aug 6 2026

rmacklem committed rGbdea6e971844: nfs_commonkrpc.c: Get rid of NFSv4.0 delegation cruft.
Aug 6 2026, 7:54 PM
rmacklem committed rGca0dcfd1a8ec: nfs_commonkrpc.c: Fix recovery that was broken by 4d80d4913e79.
Aug 6 2026, 7:53 PM
rmacklem committed rG6154eec89acb: nfs_commonkrpc.c: Get rid of NFSv4.0 delegation cruft.
Aug 6 2026, 7:48 PM
rmacklem committed rG037232c20015: nfs_commonkrpc.c: Fix recovery that was broken by 4d80d4913e79.
Aug 6 2026, 7:47 PM

Aug 4 2026

rmacklem committed rG8f20299b473a: nfs_commonkrpc.c: Get rid of NFSv4.0 delegation cruft.
Aug 4 2026, 3:57 PM
rmacklem committed rG5ab48fb9f7ac: nfs_commonkrpc.c: Fix recovery that was broken by 4d80d4913e79.
Aug 4 2026, 12:10 AM

Aug 3 2026

rmacklem committed rG3393002307ad: nfs_commonkrpc.c: Handle NFSERR_DELAY for Sequence correctly.
Aug 3 2026, 1:11 AM
rmacklem committed rG25d1f68e513b: nfs_commonkrpc.c: Handle NFSERR_DELAY for Sequence correctly.
Aug 3 2026, 1:05 AM

Jul 28 2026

rmacklem committed rG575af5e2fa38: RELNOTES: Add an entry for pNFS server improvements.
Jul 28 2026, 1:53 AM

Jul 27 2026

rmacklem committed rG6901cbbd5a2c: nfs_commonkrpc.c: Handle NFSERR_DELAY for Sequence correctly.
Jul 27 2026, 2:18 PM

Jul 25 2026

rmacklem committed rG8200466be682: nfsd: Commit missing patches for c52bcd09c2a6.
Jul 25 2026, 1:32 AM