When it receives SIGHUP mountd is supposed to reload the exports list. But in my experience, it sometimes does not. Sending additional SIGHUPs does not help, so I don't think it's due to a race. Restarting mountd is the only cure. Additional observations:
* Observed on 12.2-RELEASE, so it's not related to bug 246597
* Observed with NFS 4.0 Linux clients. I think I've seen it with 4.1, too. I've never seen it with NFS 3.
* The usual presentation is that I mount a client from a disallowed IP address, and the client gets EIO trying to access the share. Then I edit the source dataset's sharenfs property (which sends SIGHUP to mountd), but the client still gets EIO. I have to restart mountd to fix it.
The next time this happens, I'll try to debug it in place.