Subject: [nfsv4] issues re: pNFS with no backchannel set up

From: Rick Macklem <[email-masked]>
Date: Sun, 1 Apr 2012 22:07:15 -0400 (EDT)

First, a little background. When testing the FreeBSD 4.1
client, I forgot to start up the callback daemon.

The result was the Linux pNFS server failing to reply to
a Setattr RPC because it tried to do a CB_LAYOUTRECALL,
which my client never saw, because it had never set up
a backchannel.

Although the problem was caused by my screwup, it did
expose a couple of things:
1 - Although a client shouldn't do a LAYOUTGET if it
    hasn't set up a backchannel, it seems that servers
    should reply an error if it does so? (I can't find
    anywhere in the RFC that discusses this?)
2 - The Linux server didn't set SEQ4_STATUS_CB_PATH_DOWN.
    Bruce Fields gave me a quick patch that fixed the
    server so that it would set SEQ4_STATUS_CB_PATH_DOWN as
    soon as session is created, but there is no back
    channel configured.

    I'm not sure at what point in time the server should set
    SEQ4_STATUS_CB_PATH_DOWN? I can see two possibilities:
    1 - As soon as a session is created, but doesn't have a
        backchannel configured. (What Bruce's patch does.)
    2 - When the server needs to do a callback and finds that
        no backchannel exists. This would make the setting of
        SEQ4_STATUS_CB_PATH_DOWN behave in a manner similar to
        a Renew replying NFS4ERR_CB_PATH_DOWN for NFSv4.0.

    I believe Bruce feels that informing the client asap, so it
    can correct the problem sooner is appropriate and this makes
    sense to me, so long as a client can ignore the flag if it
    doesn't have recallable state and doesn't want any.
    (Bruce, please speak up if I didn't get this right.)

So, does anyone have a strong opinion on when SEQ4_STATUS_CB_PATH_DOWN
should be set? (There are several places in the RFC that discuss it,
but they don't seem to state which if the above is required, when I
read them.)

Thanks in advance for any comments, rick
ps: I've since patched my client so it doesn't do LAYOUTGET if it
    hasn't set up a backchannel.

---

From: "J. Bruce Fields" <[email-masked]>
Date: Mon, 2 Apr 2012 13:05:19 -0400

>     (Bruce, please speak up if I didn't get this right.)

That represents my opinion correctly, thanks.  (And that patch will be
included in the 3.4 kernel.)

--b.

> _______________________________________________
> nfsv4 mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/nfsv4

---

From: "Mike Eisler" <[email-masked]>
Date: Tue, 10 Apr 2012 13:47:40 -0700

I agree.

I have a strong opinion on all the SEQUENCE status bits: implement them.

-- 
Mike Eisler, Senior Technical Director, NetApp, 719 599 9026,
http://blogs.netapp.com/eislers_nfs_blog/