Commit 76482297 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull nfsd updates from Chuck Lever:
 "This release introduces support for the CB_RECALL_ANY operation. NFSD
  can send this operation to request that clients return any delegations
  they choose. The server uses this operation to handle low memory
  scenarios or indicate to a client when that client has reached the
  maximum number of delegations the server supports.

  The NFSv4.2 READ_PLUS operation has been simplified temporarily whilst
  support for sparse files in local filesystems and the VFS is improved.

  Two major data structure fixes appear in this release:

   - The nfs4_file hash table is replaced with a resizable hash table to
     reduce the latency of NFSv4 OPEN operations.

   - Reference counting in the NFSD filecache has been hardened against
     races.

  In furtherance of removing support for NFSv2 in a subsequent kernel
  release, a new Kconfig option enables server-side support for NFSv2 to
  be left out of a kernel build.

  MAINTAINERS has been updated to indicate that changes to fs/exportfs
  should go through the NFSD tree"

* tag 'nfsd-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux: (49 commits)
  NFSD: Avoid clashing function prototypes
  SUNRPC: Fix crasher in unwrap_integ_data()
  SUNRPC: Make the svc_authenticate tracepoint conditional
  NFSD: Use only RQ_DROPME to signal the need to drop a reply
  SUNRPC: Clean up xdr_write_pages()
  SUNRPC: Don't leak netobj memory when gss_read_proxy_verf() fails
  NFSD: add CB_RECALL_ANY tracepoints
  NFSD: add delegation reaper to react to low memory condition
  NFSD: add support for sending CB_RECALL_ANY
  NFSD: refactoring courtesy_client_reaper to a generic low memory shrinker
  trace: Relocate event helper files
  NFSD: pass range end to vfs_fsync_range() instead of count
  lockd: fix file selection in nlmsvc_cancel_blocked
  lockd: ensure we use the correct file descriptor when unlocking
  lockd: set missing fl_flags field when retrieving args
  NFSD: Use struct_size() helper in alloc_session()
  nfsd: return error if nfs4_setacl fails
  lockd: set other missing fields when unlocking files
  NFSD: Add an nfsd_file_fsync tracepoint
  sunrpc: svc: Remove an unused static function svc_ungetu32()
  ...
parents 149c51f8 e78e274e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -10082,6 +10082,7 @@ F: drivers/infiniband/
F:	include/rdma/
F:	include/trace/events/ib_mad.h
F:	include/trace/events/ib_umad.h
F:	include/trace/misc/rdma.h
F:	include/uapi/linux/if_infiniband.h
F:	include/uapi/rdma/
F:	samples/bpf/ibumad_kern.c
@@ -11168,11 +11169,18 @@ L: linux-nfs@vger.kernel.org
S:	Supported
W:	http://nfs.sourceforge.net/
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git
F:	fs/exportfs/
F:	fs/lockd/
F:	fs/nfs_common/
F:	fs/nfsd/
F:	include/linux/lockd/
F:	include/linux/sunrpc/
F:	include/trace/events/rpcgss.h
F:	include/trace/events/rpcrdma.h
F:	include/trace/events/sunrpc.h
F:	include/trace/misc/fs.h
F:	include/trace/misc/nfs.h
F:	include/trace/misc/sunrpc.h
F:	include/uapi/linux/nfsd/
F:	include/uapi/linux/sunrpc/
F:	net/sunrpc/
+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

#include <linux/tracepoint.h>
#include <rdma/ib_cm.h>
#include <trace/events/rdma.h>
#include <trace/misc/rdma.h>

/*
 * enum ib_cm_state, from include/rdma/ib_cm.h
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@
#define _TRACE_RDMA_CMA_H

#include <linux/tracepoint.h>
#include <trace/events/rdma.h>
#include <trace/misc/rdma.h>


DECLARE_EVENT_CLASS(cma_fsm_class,
+4 −4
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
#include <linux/sched.h>
#include <linux/cred.h>

#define dprintk(fmt, args...) do{}while(0)
#define dprintk(fmt, args...) pr_debug(fmt, ##args)


static int get_name(const struct path *path, char *name, struct dentry *child);
@@ -132,8 +132,8 @@ static struct dentry *reconnect_one(struct vfsmount *mnt,
	inode_unlock(dentry->d_inode);

	if (IS_ERR(parent)) {
		dprintk("%s: get_parent of %ld failed, err %d\n",
			__func__, dentry->d_inode->i_ino, PTR_ERR(parent));
		dprintk("get_parent of %lu failed, err %ld\n",
			dentry->d_inode->i_ino, PTR_ERR(parent));
		return parent;
	}

@@ -147,7 +147,7 @@ static struct dentry *reconnect_one(struct vfsmount *mnt,
	dprintk("%s: found name: %s\n", __func__, nbuf);
	tmp = lookup_one_unlocked(mnt_user_ns(mnt), nbuf, parent, strlen(nbuf));
	if (IS_ERR(tmp)) {
		dprintk("%s: lookup failed: %d\n", __func__, PTR_ERR(tmp));
		dprintk("lookup failed: %ld\n", PTR_ERR(tmp));
		err = PTR_ERR(tmp);
		goto out_err;
	}
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ nlm4svc_retrieve_args(struct svc_rqst *rqstp, struct nlm_args *argp,
		*filp = file;

		/* Set up the missing parts of the file_lock structure */
		lock->fl.fl_flags = FL_POSIX;
		lock->fl.fl_file  = file->f_file[mode];
		lock->fl.fl_pid = current->tgid;
		lock->fl.fl_start = (loff_t)lock->lock_start;
Loading