Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8df1b049 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (82 commits)
  NFSv4: Remove BKL from the nfsv4 state recovery
  SUNRPC: Remove the BKL from the callback functions
  NFS: Remove BKL from the readdir code
  NFS: Remove BKL from the symlink code
  NFS: Remove BKL from the sillydelete operations
  NFS: Remove the BKL from the rename, rmdir and unlink operations
  NFS: Remove BKL from NFS lookup code
  NFS: Remove the BKL from nfs_link()
  NFS: Remove the BKL from the inode creation operations
  NFS: Remove BKL usage from open()
  NFS: Remove BKL usage from the write path
  NFS: Remove the BKL from the permission checking code
  NFS: Remove attribute update related BKL references
  NFS: Remove BKL requirement from attribute updates
  NFS: Protect inode->i_nlink updates using inode->i_lock
  nfs: set correct fl_len in nlmclnt_test()
  SUNRPC: Support registering IPv6 interfaces with local rpcbind daemon
  SUNRPC: Refactor rpcb_register to make rpcbindv4 support easier
  SUNRPC: None of rpcb_create's callers wants a privileged source port
  SUNRPC: Introduce a specific rpcb_create for contacting localhost
  ...
parents a3cf8593 cadc723c
Loading
Loading
Loading
Loading
+57 −79
Original line number Diff line number Diff line
@@ -1544,10 +1544,6 @@ config UFS_FS
          The recently released UFS2 variant (used in FreeBSD 5.x) is
          READ-ONLY supported.

	  If you only intend to mount files from some other Unix over the
	  network using NFS, you don't need the UFS file system support (but
	  you need NFS file system support obviously).

	  Note that this option is generally not needed for floppies, since a
	  good portable way to transport files and directories between unixes
	  (and even other operating systems) is given by the tar program ("man
@@ -1587,6 +1583,7 @@ menuconfig NETWORK_FILESYSTEMS
	  Say Y here to get to see options for network filesystems and
	  filesystem-related networking code, such as NFS daemon and
	  RPCSEC security modules.

	  This option alone does not add any kernel code.

	  If you say N, all options in this submenu will be skipped and
@@ -1595,76 +1592,92 @@ menuconfig NETWORK_FILESYSTEMS
if NETWORK_FILESYSTEMS

config NFS_FS
	tristate "NFS file system support"
	tristate "NFS client support"
	depends on INET
	select LOCKD
	select SUNRPC
	select NFS_ACL_SUPPORT if NFS_V3_ACL
	help
	  If you are connected to some other (usually local) Unix computer
	  (using SLIP, PLIP, PPP or Ethernet) and want to mount files residing
	  on that computer (the NFS server) using the Network File Sharing
	  protocol, say Y. "Mounting files" means that the client can access
	  the files with usual UNIX commands as if they were sitting on the
	  client's hard disk. For this to work, the server must run the
	  programs nfsd and mountd (but does not need to have NFS file system
	  support enabled in its kernel). NFS is explained in the Network
	  Administrator's Guide, available from
	  <http://www.tldp.org/docs.html#guide>, on its man page: "man
	  nfs", and in the NFS-HOWTO.

	  A superior but less widely used alternative to NFS is provided by
	  the Coda file system; see "Coda file system support" below.
	  Choose Y here if you want to access files residing on other
	  computers using Sun's Network File System protocol.  To compile
	  this file system support as a module, choose M here: the module
	  will be called nfs.

	  If you say Y here, you should have said Y to TCP/IP networking also.
	  This option would enlarge your kernel by about 27 KB.
	  To mount file systems exported by NFS servers, you also need to
	  install the user space mount.nfs command which can be found in
	  the Linux nfs-utils package, available from http://linux-nfs.org/.
	  Information about using the mount command is available in the
	  mount(8) man page.  More detail about the Linux NFS client
	  implementation is available via the nfs(5) man page.

	  To compile this file system support as a module, choose M here: the
	  module will be called nfs.
	  Below you can choose which versions of the NFS protocol are
	  available in the kernel to mount NFS servers.  Support for NFS
	  version 2 (RFC 1094) is always available when NFS_FS is selected.

	  If you are configuring a diskless machine which will mount its root
	  file system over NFS at boot time, say Y here and to "Kernel
	  level IP autoconfiguration" above and to "Root file system on NFS"
	  below. You cannot compile this driver as a module in this case.
	  There are two packages designed for booting diskless machines over
	  the net: netboot, available from
	  <http://ftp1.sourceforge.net/netboot/>, and Etherboot,
	  available from <http://ftp1.sourceforge.net/etherboot/>.
	  To configure a system which mounts its root file system via NFS
	  at boot time, say Y here, select "Kernel level IP
	  autoconfiguration" in the NETWORK menu, and select "Root file
	  system on NFS" below.  You cannot compile this file system as a
	  module in this case.

	  If you don't know what all this is about, say N.
	  If unsure, say N.

config NFS_V3
	bool "Provide NFSv3 client support"
	bool "NFS client support for NFS version 3"
	depends on NFS_FS
	help
	  Say Y here if you want your NFS client to be able to speak version
	  3 of the NFS protocol.
	  This option enables support for version 3 of the NFS protocol
	  (RFC 1813) in the kernel's NFS client.

	  If unsure, say Y.

config NFS_V3_ACL
	bool "Provide client support for the NFSv3 ACL protocol extension"
	bool "NFS client support for the NFSv3 ACL protocol extension"
	depends on NFS_V3
	help
	  Implement the NFSv3 ACL protocol extension for manipulating POSIX
	  Access Control Lists.  The server should also be compiled with
	  the NFSv3 ACL protocol extension; see the CONFIG_NFSD_V3_ACL option.
	  Some NFS servers support an auxiliary NFSv3 ACL protocol that
	  Sun added to Solaris but never became an official part of the
	  NFS version 3 protocol.  This protocol extension allows
	  applications on NFS clients to manipulate POSIX Access Control
	  Lists on files residing on NFS servers.  NFS servers enforce
	  ACLs on local files whether this protocol is available or not.

	  Choose Y here if your NFS server supports the Solaris NFSv3 ACL
	  protocol extension and you want your NFS client to allow
	  applications to access and modify ACLs on files on the server.

	  Most NFS servers don't support the Solaris NFSv3 ACL protocol
	  extension.  You can choose N here or specify the "noacl" mount
	  option to prevent your NFS client from trying to use the NFSv3
	  ACL protocol.

	  If unsure, say N.

config NFS_V4
	bool "Provide NFSv4 client support (EXPERIMENTAL)"
	bool "NFS client support for NFS version 4 (EXPERIMENTAL)"
	depends on NFS_FS && EXPERIMENTAL
	select RPCSEC_GSS_KRB5
	help
	  Say Y here if you want your NFS client to be able to speak the newer
	  version 4 of the NFS protocol.
	  This option enables support for version 4 of the NFS protocol
	  (RFC 3530) in the kernel's NFS client.

	  Note: Requires auxiliary userspace daemons which may be found on
		http://www.citi.umich.edu/projects/nfsv4/
	  To mount NFS servers using NFSv4, you also need to install user
	  space programs which can be found in the Linux nfs-utils package,
	  available from http://linux-nfs.org/.

	  If unsure, say N.

config ROOT_NFS
	bool "Root file system on NFS"
	depends on NFS_FS=y && IP_PNP
	help
	  If you want your system to mount its root file system via NFS,
	  choose Y here.  This is common practice for managing systems
	  without local permanent storage.  For details, read
	  <file:Documentation/filesystems/nfsroot.txt>.

	  Most people say N here.

config NFSD
	tristate "NFS server support"
	depends on INET
@@ -1746,20 +1759,6 @@ config NFSD_V4

	  If unsure, say N.

config ROOT_NFS
	bool "Root file system on NFS"
	depends on NFS_FS=y && IP_PNP
	help
	  If you want your Linux box to mount its whole root file system (the
	  one containing the directory /) from some other computer over the
	  net via NFS (presumably because your box doesn't have a hard disk),
	  say Y. Read <file:Documentation/filesystems/nfsroot.txt> for
	  details. It is likely that in this case, you also want to say Y to
	  "Kernel level IP autoconfiguration" so that your box can discover
	  its network address at boot time.

	  Most people say N here.

config LOCKD
	tristate

@@ -1800,27 +1799,6 @@ config SUNRPC_XPRT_RDMA

	  If unsure, say N.

config SUNRPC_BIND34
	bool "Support for rpcbind versions 3 & 4 (EXPERIMENTAL)"
	depends on SUNRPC && EXPERIMENTAL
	default n
	help
	  RPC requests over IPv6 networks require support for larger
	  addresses when performing an RPC bind.  Sun added support for
	  IPv6 addressing by creating two new versions of the rpcbind
	  protocol (RFC 1833).

	  This option enables support in the kernel RPC client for
	  querying rpcbind servers via versions 3 and 4 of the rpcbind
	  protocol.  The kernel automatically falls back to version 2
	  if a remote rpcbind service does not support versions 3 or 4.
	  By themselves, these new versions do not provide support for
	  RPC over IPv6, but the new protocol versions are necessary to
	  support it.

	  If unsure, say N to get traditional behavior (version 2 rpcbind
	  requests only).

config RPCSEC_GSS_KRB5
	tristate "Secure RPC: Kerberos V mechanism (EXPERIMENTAL)"
	depends on SUNRPC && EXPERIMENTAL
+7 −1
Original line number Diff line number Diff line
@@ -224,7 +224,9 @@ void nlm_release_call(struct nlm_rqst *call)

static void nlmclnt_rpc_release(void *data)
{
	lock_kernel();
	nlm_release_call(data);
	unlock_kernel();
}

static int nlm_wait_on_grace(wait_queue_head_t *queue)
@@ -430,7 +432,7 @@ nlmclnt_test(struct nlm_rqst *req, struct file_lock *fl)
			 * Report the conflicting lock back to the application.
			 */
			fl->fl_start = req->a_res.lock.fl.fl_start;
			fl->fl_end = req->a_res.lock.fl.fl_start;
			fl->fl_end = req->a_res.lock.fl.fl_end;
			fl->fl_type = req->a_res.lock.fl.fl_type;
			fl->fl_pid = 0;
			break;
@@ -710,7 +712,9 @@ static void nlmclnt_unlock_callback(struct rpc_task *task, void *data)
die:
	return;
 retry_rebind:
	lock_kernel();
	nlm_rebind_host(req->a_host);
	unlock_kernel();
 retry_unlock:
	rpc_restart_call(task);
}
@@ -788,7 +792,9 @@ retry_cancel:
	/* Don't ever retry more than 3 times */
	if (req->a_retries++ >= NLMCLNT_MAX_RETRIES)
		goto die;
	lock_kernel();
	nlm_rebind_host(req->a_host);
	unlock_kernel();
	rpc_restart_call(task);
	rpc_delay(task, 30 * HZ);
}
+2 −0
Original line number Diff line number Diff line
@@ -248,7 +248,9 @@ static void nlm4svc_callback_exit(struct rpc_task *task, void *data)

static void nlm4svc_callback_release(void *data)
{
	lock_kernel();
	nlm_release_call(data);
	unlock_kernel();
}

static const struct rpc_call_ops nlm4svc_callback_ops = {
+6 −1
Original line number Diff line number Diff line
@@ -795,6 +795,7 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data)

	dprintk("lockd: GRANT_MSG RPC callback\n");

	lock_kernel();
	/* if the block is not on a list at this point then it has
	 * been invalidated. Don't try to requeue it.
	 *
@@ -804,7 +805,7 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data)
	 * for nlm_blocked?
	 */
	if (list_empty(&block->b_list))
		return;
		goto out;

	/* Technically, we should down the file semaphore here. Since we
	 * move the block towards the head of the queue only, no harm
@@ -818,13 +819,17 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data)
	}
	nlmsvc_insert_block(block, timeout);
	svc_wake_up(block->b_daemon);
out:
	unlock_kernel();
}

static void nlmsvc_grant_release(void *data)
{
	struct nlm_rqst		*call = data;

	lock_kernel();
	nlmsvc_release_block(call->a_block);
	unlock_kernel();
}

static const struct rpc_call_ops nlmsvc_grant_ops = {
+2 −0
Original line number Diff line number Diff line
@@ -278,7 +278,9 @@ static void nlmsvc_callback_exit(struct rpc_task *task, void *data)

static void nlmsvc_callback_release(void *data)
{
	lock_kernel();
	nlm_release_call(data);
	unlock_kernel();
}

static const struct rpc_call_ops nlmsvc_callback_ops = {
Loading