diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-23 11:53:47 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-23 11:53:47 -0400 |
commit | f63d395d47f37a4fe771e6d4b1db9d2cdae5ffc5 (patch) | |
tree | 3448a14ae965802adb963762cadeb9989ce4caa2 /fs/nfs/proc.c | |
parent | 643ac9fc5429e85b8b7f534544b80bcc4f34c367 (diff) | |
parent | 5a7c9eec9fde1da0e3adf0a4ddb64ff2a324a492 (diff) |
Merge tag 'nfs-for-3.4-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client updates for Linux 3.4 from Trond Myklebust:
"New features include:
- Add NFS client support for containers.
This should enable most of the necessary functionality, including
lockd support, and support for rpc.statd, NFSv4 idmapper and
RPCSEC_GSS upcalls into the correct network namespace from which
the mount system call was issued.
- NFSv4 idmapper scalability improvements
Base the idmapper cache on the keyring interface to allow
concurrent access to idmapper entries. Start the process of
migrating users from the single-threaded daemon-based approach to
the multi-threaded request-key based approach.
- NFSv4.1 implementation id.
Allows the NFSv4.1 client and server to mutually identify each
other for logging and debugging purposes.
- Support the 'vers=4.1' mount option for mounting NFSv4.1 instead of
having to use the more counterintuitive 'vers=4,minorversion=1'.
- SUNRPC tracepoints.
Start the process of adding tracepoints in order to improve
debugging of the RPC layer.
- pNFS object layout support for autologin.
Important bugfixes include:
- Fix a bug in rpc_wake_up/rpc_wake_up_status that caused them to
fail to wake up all tasks when applied to priority waitqueues.
- Ensure that we handle read delegations correctly, when we try to
truncate a file.
- A number of fixes for NFSv4 state manager loops (mostly to do with
delegation recovery)."
* tag 'nfs-for-3.4-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (224 commits)
NFS: fix sb->s_id in nfs debug prints
xprtrdma: Remove assumption that each segment is <= PAGE_SIZE
xprtrdma: The transport should not bug-check when a dup reply is received
pnfs-obj: autologin: Add support for protocol autologin
NFS: Remove nfs4_setup_sequence from generic rename code
NFS: Remove nfs4_setup_sequence from generic unlink code
NFS: Remove nfs4_setup_sequence from generic read code
NFS: Remove nfs4_setup_sequence from generic write code
NFS: Fix more NFS debug related build warnings
SUNRPC/LOCKD: Fix build warnings when CONFIG_SUNRPC_DEBUG is undefined
nfs: non void functions must return a value
SUNRPC: Kill compiler warning when RPC_DEBUG is unset
SUNRPC/NFS: Add Kbuild dependencies for NFS_DEBUG/RPC_DEBUG
NFS: Use cond_resched_lock() to reduce latencies in the commit scans
NFSv4: It is not safe to dereference lsp->ls_state in release_lockowner
NFS: ncommit count is being double decremented
SUNRPC: We must not use list_for_each_entry_safe() in rpc_wake_up()
Try using machine credentials for RENEW calls
NFSv4.1: Fix a few issues in filelayout_commit_pagelist
NFSv4.1: Clean ups and bugfixes for the pNFS read/writeback/commit code
...
Diffstat (limited to 'fs/nfs/proc.c')
-rw-r--r-- | fs/nfs/proc.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index 0c672588fe5a..b63b6f4d14fb 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c | |||
@@ -358,6 +358,11 @@ nfs_proc_unlink_setup(struct rpc_message *msg, struct inode *dir) | |||
358 | msg->rpc_proc = &nfs_procedures[NFSPROC_REMOVE]; | 358 | msg->rpc_proc = &nfs_procedures[NFSPROC_REMOVE]; |
359 | } | 359 | } |
360 | 360 | ||
361 | static void nfs_proc_unlink_rpc_prepare(struct rpc_task *task, struct nfs_unlinkdata *data) | ||
362 | { | ||
363 | rpc_call_start(task); | ||
364 | } | ||
365 | |||
361 | static int nfs_proc_unlink_done(struct rpc_task *task, struct inode *dir) | 366 | static int nfs_proc_unlink_done(struct rpc_task *task, struct inode *dir) |
362 | { | 367 | { |
363 | if (nfs_async_handle_expired_key(task)) | 368 | if (nfs_async_handle_expired_key(task)) |
@@ -372,6 +377,11 @@ nfs_proc_rename_setup(struct rpc_message *msg, struct inode *dir) | |||
372 | msg->rpc_proc = &nfs_procedures[NFSPROC_RENAME]; | 377 | msg->rpc_proc = &nfs_procedures[NFSPROC_RENAME]; |
373 | } | 378 | } |
374 | 379 | ||
380 | static void nfs_proc_rename_rpc_prepare(struct rpc_task *task, struct nfs_renamedata *data) | ||
381 | { | ||
382 | rpc_call_start(task); | ||
383 | } | ||
384 | |||
375 | static int | 385 | static int |
376 | nfs_proc_rename_done(struct rpc_task *task, struct inode *old_dir, | 386 | nfs_proc_rename_done(struct rpc_task *task, struct inode *old_dir, |
377 | struct inode *new_dir) | 387 | struct inode *new_dir) |
@@ -651,6 +661,11 @@ static void nfs_proc_read_setup(struct nfs_read_data *data, struct rpc_message * | |||
651 | msg->rpc_proc = &nfs_procedures[NFSPROC_READ]; | 661 | msg->rpc_proc = &nfs_procedures[NFSPROC_READ]; |
652 | } | 662 | } |
653 | 663 | ||
664 | static void nfs_proc_read_rpc_prepare(struct rpc_task *task, struct nfs_read_data *data) | ||
665 | { | ||
666 | rpc_call_start(task); | ||
667 | } | ||
668 | |||
654 | static int nfs_write_done(struct rpc_task *task, struct nfs_write_data *data) | 669 | static int nfs_write_done(struct rpc_task *task, struct nfs_write_data *data) |
655 | { | 670 | { |
656 | if (nfs_async_handle_expired_key(task)) | 671 | if (nfs_async_handle_expired_key(task)) |
@@ -668,6 +683,11 @@ static void nfs_proc_write_setup(struct nfs_write_data *data, struct rpc_message | |||
668 | msg->rpc_proc = &nfs_procedures[NFSPROC_WRITE]; | 683 | msg->rpc_proc = &nfs_procedures[NFSPROC_WRITE]; |
669 | } | 684 | } |
670 | 685 | ||
686 | static void nfs_proc_write_rpc_prepare(struct rpc_task *task, struct nfs_write_data *data) | ||
687 | { | ||
688 | rpc_call_start(task); | ||
689 | } | ||
690 | |||
671 | static void | 691 | static void |
672 | nfs_proc_commit_setup(struct nfs_write_data *data, struct rpc_message *msg) | 692 | nfs_proc_commit_setup(struct nfs_write_data *data, struct rpc_message *msg) |
673 | { | 693 | { |
@@ -721,9 +741,11 @@ const struct nfs_rpc_ops nfs_v2_clientops = { | |||
721 | .create = nfs_proc_create, | 741 | .create = nfs_proc_create, |
722 | .remove = nfs_proc_remove, | 742 | .remove = nfs_proc_remove, |
723 | .unlink_setup = nfs_proc_unlink_setup, | 743 | .unlink_setup = nfs_proc_unlink_setup, |
744 | .unlink_rpc_prepare = nfs_proc_unlink_rpc_prepare, | ||
724 | .unlink_done = nfs_proc_unlink_done, | 745 | .unlink_done = nfs_proc_unlink_done, |
725 | .rename = nfs_proc_rename, | 746 | .rename = nfs_proc_rename, |
726 | .rename_setup = nfs_proc_rename_setup, | 747 | .rename_setup = nfs_proc_rename_setup, |
748 | .rename_rpc_prepare = nfs_proc_rename_rpc_prepare, | ||
727 | .rename_done = nfs_proc_rename_done, | 749 | .rename_done = nfs_proc_rename_done, |
728 | .link = nfs_proc_link, | 750 | .link = nfs_proc_link, |
729 | .symlink = nfs_proc_symlink, | 751 | .symlink = nfs_proc_symlink, |
@@ -736,8 +758,10 @@ const struct nfs_rpc_ops nfs_v2_clientops = { | |||
736 | .pathconf = nfs_proc_pathconf, | 758 | .pathconf = nfs_proc_pathconf, |
737 | .decode_dirent = nfs2_decode_dirent, | 759 | .decode_dirent = nfs2_decode_dirent, |
738 | .read_setup = nfs_proc_read_setup, | 760 | .read_setup = nfs_proc_read_setup, |
761 | .read_rpc_prepare = nfs_proc_read_rpc_prepare, | ||
739 | .read_done = nfs_read_done, | 762 | .read_done = nfs_read_done, |
740 | .write_setup = nfs_proc_write_setup, | 763 | .write_setup = nfs_proc_write_setup, |
764 | .write_rpc_prepare = nfs_proc_write_rpc_prepare, | ||
741 | .write_done = nfs_write_done, | 765 | .write_done = nfs_write_done, |
742 | .commit_setup = nfs_proc_commit_setup, | 766 | .commit_setup = nfs_proc_commit_setup, |
743 | .lock = nfs_proc_lock, | 767 | .lock = nfs_proc_lock, |