Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Mar 2019 15:20:21 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Edward Tomasz Napierala <trasz@FreeBSD.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r344758 - in head/sys/fs: nfs nfsserver
Message-ID:  <20190304132021.GN68879@kib.kiev.ua>
In-Reply-To: <201903041302.x24D2aG0093620@repo.freebsd.org>
References:  <201903041302.x24D2aG0093620@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Mar 04, 2019 at 01:02:36PM +0000, Edward Tomasz Napierala wrote:
> Author: trasz
> Date: Mon Mar  4 13:02:36 2019
> New Revision: 344758
> URL: https://svnweb.freebsd.org/changeset/base/344758
> 
> Log:
>   Push down td in nfsrvd_dorpc() - make it use curthread instead
>   of it being explicitly passed as an argument. No functional changes.
>   
>   The big picture here is that I want to get rid of the 'td' argument
>   being passed everywhere, and this is the first piece that affects
>   the NFS server.
>   
>   Reviewed by:	rmacklem
>   MFC after:	2 weeks
>   Sponsored by:	DARPA, AFRL
>   Differential Revision:	https://reviews.freebsd.org/D19417
> 
> Modified:
>   head/sys/fs/nfs/nfs_var.h
>   head/sys/fs/nfsserver/nfs_nfsdkrpc.c
>   head/sys/fs/nfsserver/nfs_nfsdsocket.c
> 
> Modified: head/sys/fs/nfs/nfs_var.h
> ==============================================================================
> --- head/sys/fs/nfs/nfs_var.h	Mon Mar  4 11:33:49 2019	(r344757)
> +++ head/sys/fs/nfs/nfs_var.h	Mon Mar  4 13:02:36 2019	(r344758)
> @@ -283,8 +283,7 @@ int nfsrvd_notsupp(struct nfsrv_descript *, int,
>  
>  /* nfs_nfsdsocket.c */
>  void nfsrvd_rephead(struct nfsrv_descript *);
> -void nfsrvd_dorpc(struct nfsrv_descript *, int, u_char *, int, u_int32_t,
> -    NFSPROC_T *);
> +void nfsrvd_dorpc(struct nfsrv_descript *, int, u_char *, int, u_int32_t);
>  
>  /* nfs_nfsdcache.c */
>  void nfsrvd_initcache(void);
> 
> Modified: head/sys/fs/nfsserver/nfs_nfsdkrpc.c
> ==============================================================================
> --- head/sys/fs/nfsserver/nfs_nfsdkrpc.c	Mon Mar  4 11:33:49 2019	(r344757)
> +++ head/sys/fs/nfsserver/nfs_nfsdkrpc.c	Mon Mar  4 13:02:36 2019	(r344758)
> @@ -323,7 +323,6 @@ static int
>  nfs_proc(struct nfsrv_descript *nd, u_int32_t xid, SVCXPRT *xprt,
>      struct nfsrvcache **rpp)
>  {
> -	struct thread *td = curthread;
>  	int cacherep = RC_DOIT, isdgram, taglen = -1;
>  	struct mbuf *m;
>  	u_char tag[NFSV4_SMALLSTR + 1], *tagstr = NULL;
> @@ -384,7 +383,7 @@ nfs_proc(struct nfsrv_descript *nd, u_int32_t xid, SVC
>  	if (cacherep == RC_DOIT) {
>  		if ((nd->nd_flag & ND_NFSV41) != 0)
>  			nd->nd_xprt = xprt;
> -		nfsrvd_dorpc(nd, isdgram, tagstr, taglen, minorvers, td);
> +		nfsrvd_dorpc(nd, isdgram, tagstr, taglen, minorvers);
>  		if ((nd->nd_flag & ND_NFSV41) != 0) {
>  			if (nd->nd_repstat != NFSERR_REPLYFROMCACHE &&
>  			    (nd->nd_flag & ND_SAVEREPLY) != 0) {
> 
> Modified: head/sys/fs/nfsserver/nfs_nfsdsocket.c
> ==============================================================================
> --- head/sys/fs/nfsserver/nfs_nfsdsocket.c	Mon Mar  4 11:33:49 2019	(r344757)
> +++ head/sys/fs/nfsserver/nfs_nfsdsocket.c	Mon Mar  4 13:02:36 2019	(r344758)
> @@ -367,7 +367,7 @@ int nfsrv_writerpc[NFS_NPROCS] = { 0, 0, 1, 0, 0, 0, 0
>  
>  /* local functions */
>  static void nfsrvd_compound(struct nfsrv_descript *nd, int isdgram,
> -    u_char *tag, int taglen, u_int32_t minorvers, NFSPROC_T *p);
> +    u_char *tag, int taglen, u_int32_t minorvers);
>  
>  
>  /*
> @@ -475,14 +475,17 @@ nfsrvd_statend(int op, uint64_t bytes, struct bintime 
>   */
>  APPLESTATIC void
>  nfsrvd_dorpc(struct nfsrv_descript *nd, int isdgram, u_char *tag, int taglen,
> -    u_int32_t minorvers, NFSPROC_T *p)
> +    u_int32_t minorvers)
>  {
>  	int error = 0, lktype;
>  	vnode_t vp;
>  	mount_t mp = NULL;
>  	struct nfsrvfh fh;
>  	struct nfsexstuff nes;
> +	struct thread *p;
>  
> +	p = curthread;
> +
>  	/*
>  	 * Get a locked vnode for the first file handle
>  	 */
> @@ -557,7 +560,7 @@ nfsrvd_dorpc(struct nfsrv_descript *nd, int isdgram, u
>  	 * The group is indicated by the value in nfs_retfh[].
>  	 */
>  	if (nd->nd_flag & ND_NFSV4) {
> -		nfsrvd_compound(nd, isdgram, tag, taglen, minorvers, p);
> +		nfsrvd_compound(nd, isdgram, tag, taglen, minorvers);
>  	} else {
>  		struct bintime start_time;
>  
> @@ -620,7 +623,7 @@ out:
>   */
>  static void
>  nfsrvd_compound(struct nfsrv_descript *nd, int isdgram, u_char *tag,
> -    int taglen, u_int32_t minorvers, NFSPROC_T *p)
> +    int taglen, u_int32_t minorvers)
>  {
>  	int i, lktype, op, op0 = 0, statsinprog = 0;
>  	u_int32_t *tl;
> @@ -635,6 +638,9 @@ nfsrvd_compound(struct nfsrv_descript *nd, int isdgram
>  	fsid_t cur_fsid, save_fsid;
>  	static u_int64_t compref = 0;
>  	struct bintime start_time;
> +	struct thread *p;
> +
> +	p = curthread;
Why do you name it 'p', which is typical for process, and not 'td', you are
changing most of the code anyway.

Also I am curious why. It is certainly fine to remove td when it is used
as a formal placeholder argument only. But when the first action in the
function is evaluation of curthread() it becomes less obvious.

curthread() become very cheap on modern amd64, I am not so sure about
older machines or non-x86 cases.

>  
>  	NFSVNO_EXINIT(&vpnes);
>  	NFSVNO_EXINIT(&savevpnes);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190304132021.GN68879>