Re: nfs server patches for 2.6.25

From: J. Bruce Fields
Date: Sun Jan 27 2008 - 17:10:37 EST


On Sun, Jan 27, 2008 at 09:42:23PM +0100, Simon Holm ThÃgersen wrote:
>
> fre, 25 01 2008 kl. 18:15 -0500, skrev J. Bruce Fields:
> > Below is a summary of the nfs server patches which I expect to submit
> > (any day now) for 2.6.25; please let me know if you notice anything
> > wrong or missing. I'll follow up to linux-nfs@xxxxxxxxxxxxxxx with the
> > full list of patches.
>
> There are at least two patches that don't compile and break
> bisectability. The errors should be obvious, just checkout and make
> 6f310df and 23b4e2e (patch no. 29 and 65 from the posting of the patch
> set on linux-nfs).

Whoops, thanks for finding both of those.

>
> [...]
> > J. Bruce Fields (34):
> > nfsd4: kill unnecessary same_name() in setclientid_confirm
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index 508b256..d026c24 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -858,8 +857,7 @@ nfsd4_setclientid_confirm(struct svc_rqst *rqstp,
> }
> } else if ((conf && !unconf) ||
> ((conf && unconf) &&
> - (!same_verf(&conf->cl_verifier, &unconf->cl_verifier) ||
> - !same_name(conf->cl_recdir, unconf->cl_recdir)))) {
> + !same_verf(&conf->cl_verifier, &unconf->cl_verifier)) {
> missing ending parenthesis ---------------------------------------^

Yep; fixed.

>
>
> [...]
> > Tom Tucker (47):
> > svc: Make close transport independent
> diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
> index f86538e..6dffdda 100644
> --- a/net/sunrpc/svcsock.c
> +++ b/net/sunrpc/svcsock.c
> @@ -1912,66 +1911,63 @@ static void svc_sock_free(struct svc_xprt *xprt)
> }
>
> /*
> - * Remove a dead socket
> + * Remove a dead transport
> */
> -static void
> -svc_delete_socket(struct svc_sock *svsk)
> +static void svc_delete_xprt(struct svc_xprt *xprt)
> {
> - struct svc_serv *serv;
> - struct sock *sk;
> -
> - dprintk("svc: svc_delete_socket(%p)\n", svsk);
> -
> - serv = svsk->sk_xprt.xpt_server;
> - sk = svsk->sk_sk;
> + struct svc_serv *serv = xprt->xpt_server;
>
> - svsk->sk_xprt.xpt_ops->xpo_detach(&svsk->sk_xprt);
> + dprintk("svc: svc_delete_xprt(%p)\n", xprt);
> + xprt->xpt_ops->xpo_detach(xprt);
>
> spin_lock_bh(&serv->sv_lock);
> -
> - if (!test_and_set_bit(XPT_DETACHED, &svsk->sk_xprt.xpt_flags))
> - list_del_init(&svsk->sk_list);
> + if (!test_and_set_bit(XPT_DETACHED, &xprt->xpt_flags))
> + list_del_init(&xprt->xpt_list);
> /*
> - * We used to delete the svc_sock from whichever list
> - * it's sk_ready node was on, but we don't actually
> + * We used to delete the transport from whichever list
> + * it's sk_xprt.xpt_ready node was on, but we don't actually
> * need to. This is because the only time we're called
> * while still attached to a queue, the queue itself
> * is about to be destroyed (in svc_destroy).
> */
> - if (!test_and_set_bit(XPT_DEAD, &svsk->sk_xprt.xpt_flags)) {
> - BUG_ON(atomic_read(&svsk->sk_xprt.xpt_ref.refcount) <
> 2);
> - if (test_bit(XPT_TEMP, &svsk->sk_xprt.xpt_flags))
> + if (!test_and_set_bit(XPT_DEAD, &xprt->xpt_flags)) {
> + BUG_ON(atomic_read(&xprt->xpt_ref.refcount) < 2);
> + if (test_bit(XPT_TEMP, &xprt->xpt_flags))
> serv->sv_tmpcnt--;
> svc_xprt_put(&svsk->sk_xprt);
> should have been
> svc_xprt_put(&xprt);

Actually looks like it should be svc_xprt_put(xprt); fixed.

> There might be more errors in the next 15 patches or so; I didn't test
> them with this error corrected.

OK. I've got a machine running

for c in $(git rev-list origin..linux-nfs/nfs-server-stable^); do
git checkout $c
make -s -j4
done

now just to make sure.... Thanks again!

--b.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/