Hi, Today I've updated the nfs-for-2.6.35 branch on git://git.linux-nfs.org/projects/trondmy/nfs-2.6.git with a bunch of new patches. Among the stuff that has been added are the stack usage reduction patches (that have previously been posted to the list) as well as Chuck's proposal to use ktime_t to improve the resolution of the RPC round-trip time measurement. I've also merged in a bunch of bugfixes to the access and auth cache shrinkers which should hopefully improve their performance. There are also fixes to ensure that the NFSv4 state management thread does not deadlock by allocating memory using GFP_KERNEL. Finally there are a couple of patches to shrink the size of the rpc_task structure on 64-bit platforms by re-ordering some of the fields and getting rid of some of the debugging stuff that has never triggered... The full list of patches is included below. Cheers Trond commit b87d8fb96b8dd6ef4bb4909971d1cd2592f40e16 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:55:38 2010 -0400 SUNRPC: Don't spam gssd with upcall requests when the kerberos key expired Now that the rpc.gssd daemon can explicitly tell us that the key expired, we should cache that information to avoid spamming gssd. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit efc09441c1ce01247f7b444e47a548eb04578b2b Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:50 2010 -0400 SUNRPC: Reorder the struct rpc_task fields This improves the packing of the rpc_task, and ensures that on 64-bit platforms the size reduces to 216 bytes. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit bd9b4566b7138f0b017cfc339fb9e85ea5591df0 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:50 2010 -0400 SUNRPC: Remove the 'tk_magic' debugging field It has not triggered in almost a decade. Time to get rid of it... Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit e72de905102eebab7c33850207d87b788d2f1872 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:49 2010 -0400 SUNRPC: Move the task->tk_bytes_sent and tk_rtt to struct rpc_rqst It seems strange to maintain stats for bytes_sent in one structure, and bytes received in another. Try to assemble all the RPC request-related stats in struct rpc_rqst Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 155097cfd47a0c0b35ab9bce11da3d89f8f72c80 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:06 2010 -0400 NFS: Don't call iput() in nfs_access_cache_shrinker iput() can potentially attempt to allocate memory, so we should avoid calling it in a memory shrinker. Instead, rely on the fact that iput() will call nfs_access_zap_cache(). Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 7712714697dde10e8e36c083cb5ff7cbbc28953b Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:06 2010 -0400 NFS: Clean up nfs_access_zap_cache() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit ee79d4a89a486e7f11fa480eea6d8088aa7c852c Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:06 2010 -0400 NFS: Don't run nfs_access_cache_shrinker() when the mask is GFP_NOFS Both iput() and put_rpccred() might allocate memory under certain circumstances, so make sure that we don't recurse and deadlock... Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit eb4e6f09297cacae523a748b9237835e91692a8a Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:06 2010 -0400 SUNRPC: Ensure rpcauth_prune_expired() respects the nr_to_scan parameter Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 83e57dd4238a5526f808ade2a1dde92da9a93e76 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:06 2010 -0400 SUNRPC: Ensure memory shrinker doesn't waste time in rpcauth_prune_expired() The 'cred_unused' list, that is traversed by rpcauth_cache_shrinker is ordered by time. If we hit a credential that is under the 60 second garbage collection moratorium, we should exit because we know at that point that all successive credentials are subject to the same moratorium... Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 195a92779b6c39c76c2add821344162e869c05b3 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:03 2010 -0400 SUNRPC: Dont run rpcauth_cache_shrinker() when gfp_mask is GFP_NOFS Under some circumstances, put_rpccred() can end up allocating memory, so check the gfp_mask to prevent deadlocks. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 53c21fecff181c07b9899ca17c2d2f857c199bbd Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:03 2010 -0400 NFS: Read requests can use GFP_KERNEL. There is no danger of deadlock should the allocation trigger page writeback. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 6b78aa773becb7099afacc507f75c9c616d829fa Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:02 2010 -0400 NFS: Clean up nfs_create_request() There is no point in looping if we're out of memory. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fcb57eba7fc3807f51f5f29e97f7a9aa5ca7f996 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:02 2010 -0400 NFS: Don't use GFP_KERNEL in rpcsec_gss downcalls Again, we can deadlock if the memory reclaim triggers a writeback that requires a rpcsec_gss credential lookup. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fbfba3569248684eb1bedc1b9edec1e509dd406a Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 13 12:51:01 2010 -0400 NFSv4: Don't use GFP_KERNEL allocations in state recovery We do not want to have the state recovery thread kick off and wait for a memory reclaim, since that may deadlock when the writebacks end up waiting for the state recovery thread to complete. The safe thing is therefore to use GFP_NOFS in all open, close, delegation return, lock, etc. operations that may be called by the state recovery thread. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 7536fbbb675e700f9cf0c83c3433128a3585ccf9 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Wed May 12 17:50:23 2010 -0400 SUNRPC: Fix xs_setup_bc_tcp() It is a BUG for anybody to call this function without setting args->bc_xprt. Trying to return an error value is just wrong, since the user cannot fix this: it is a programming error, not a user error. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit f048039337b4f154e20691efa81d81c2945cc13e Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:34:47 2010 -0400 SUNRPC: Replace jiffies-based metrics with ktime-based metrics Currently RPC performance metrics that tabulate elapsed time use jiffies time values. This is problematic on systems that use slow jiffies (for instance 100HZ systems built for paravirtualized environments). It is also a problem for computing precise latency statistics for advanced network transports, such as InfiniBand, that can have round-trip latencies significanly faster than a single clock tick. For the RPC client, adopt the high resolution time stamp mechanism already used by the network layer and blktrace: ktime. We use ktime format time stamps for all internal computations, and convert to milliseconds for presentation. As a result, we need only addition operations in the performance critical paths; multiply/divide is required only for presentation. We could report RTT metrics in microseconds. In fact the mountstats format is versioned to accomodate exactly this kind of interface improvement. For now, however, we'll stay with millisecond precision for presentation to maintain backwards compatibility with the handful of currently deployed user space tools. At a later point, we'll move to an API such as BDI_STATS where a finer timestamp precision can be reported. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 96a20bf7c56cf64e99ef754cf0efa0758ac17750 Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:34:37 2010 -0400 ktime: introduce ktime_to_ms() To report ktime statistics to user space in milliseconds, a new helper is required. When considering how to do this conversion, I didn't immediately see why the extra step of converting ktime to a timeval was needed. To make that more clear, introduce a couple of large comments. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 24ee073801b9aa79b4445c9c463d574bd9d3ee5b Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:34:27 2010 -0400 SUNRPC: RPC metrics and RTT estimator should use same RTT value Compute an RPC request's RTT once, and use that value both for reporting RPC metrics, and for adjusting the RTT context used by the RPC client's RTT estimator algorithm. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit c426d0e89a7d50c419e5bc9b1718186ce372cd7b Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:34:17 2010 -0400 NFS: Calldata for nfs4_renew_done() I'm about to change task->tk_start from a jiffies value to a ktime_t value in order to make RPC RTT reporting more precise. Recently (commit dc96aef9) nfs4_renew_done() started to reference task->tk_start so that a jiffies value no longer had to be passed from nfs4_proc_async_renew(). This allowed the calldata to point to an nfs_client instead. Changing task->tk_start to a ktime_t value makes it effectively useless for renew timestamps, so we need to restore the pre-dc96aef9 logic that provided a jiffies "start" timestamp to nfs4_renew_done(). Both an nfs_client pointer and a timestamp need to be passed to nfs4_renew_done(), so create a new nfs_renewdata structure that contains both, resembling what is already done for delegreturn, lock, and unlock. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit ab7058420b71234c829d3729d7505bdca06652e2 Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:34:08 2010 -0400 NFS: Squelch compiler warning in nfs_add_server_stats() Clean up: fs/nfs/iostat.h: In function ‘nfs_add_server_stats’: fs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions fs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions fs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions fs/nfs/iostat.h:41: warning: comparison between signed and unsigned integer expressions Commit fce22848 replaced the open-coded per-cpu logic in several functions in fs/nfs/iostat.h with a single invocation of this_cpu_ptr(). This macro assumes its second argument is signed, not unsigned. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit ac0aea1b7d4cb3023f64f6c78bbc11204acd75ab Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:33:58 2010 -0400 NFS: Clean up fscache_uniq mount option Clean up: fscache_uniq takes a string, so it should be included with the other string mount option definitions, by convention. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 2710f8d4e3e2eb5685f009ecaf99656792ac57b3 Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:33:48 2010 -0400 NFS: Squelch compiler warning Seen with -Wextra: /home/cel/linux/fs/nfs/fscache.c: In function ‘__nfs_readpages_from_fscache’: /home/cel/linux/fs/nfs/fscache.c:479: warning: comparison between signed and unsigned integer expressions The comparison implicitly converts "int" to "unsigned", making it safe. But there's no need for the implicit type conversions here, and the dfprintk() already uses a "%u" formatter for "npages." Better to reduce confusion. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit f1e359edc4b741144b29c362a3d49d1965b951b3 Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Fri May 7 13:33:30 2010 -0400 SUNRPC: Trivial cleanups in include/linux/sunrpc/xdr.h Clean up: Update the documenting comment, and fix some minor white space issues. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fd01fe01507c9110542ccb268f49a3e19e3d9bf6 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:43:06 2010 -0400 NFSv4: Clean up the NFSv4 setclientid operation Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 45bc71a9559c59fad8184bff95e02a826c6b17ef Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:42:46 2010 -0400 NFSv4: Allow attribute caching with 'noac' mounts if client holds a delegation If the server has given us a delegation on a file, we _know_ that we can cache the attribute information even when the user has specified 'noac'. Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit b9d5ca0c200731167465db8bf84b4f72c3f91b5c Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:42:12 2010 -0400 SUNRPC: Fail over more quickly on connect errors We should not allow soft tasks to wait for longer than the major timeout period when waiting for a reconnect to occur. Remove the field xprt->connect_timeout since it has been obsoleted by xprt->reestablish_timeout. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 03fffdff3dc6f63e141e8ea1686cb8cf3aff3082 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:41:57 2010 -0400 SUNRPC: Move the test for XPRT_CONNECTING into xprt_connect() This fixes a bug with setting xprt->stat.connect_start. Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 54d14891a9cd37e9ff280a72ed8e1d3442fd038b Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:41:10 2010 -0400 SUNRPC: Cleanup - make rpc_new_task() call rpc_release_calldata on failure Also have it return an ERR_PTR(-ENOMEM) instead of a null pointer. Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 800d7f501504edb0f7069286e46ad8f1ef81208e Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:37:01 2010 -0400 SUNRPC: Clean up xprt_release() Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 494512705b977bcb58165cc3173ae97cda96c375 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Mon Apr 19 19:26:23 2010 -0400 NFSv4: Fix up the documentation for nfs_do_refmount Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit ab313a0eb01b3075fb2d4c1dbf88ffb11177b8b2 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Mon Apr 19 19:14:28 2010 -0400 NFS: Replace nfsroot on-stack filehandle Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 75af462624e97d9adc4e2fe95e64eded02f95f6c Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Mon Apr 19 19:05:48 2010 -0400 NFS: Cleanup file handle allocations in fs/nfs/super.c Use the new helper functions instead of open coding. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit a3a45adbfbcc35b4ed408d38663088dbed9a512b Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:52 2010 -0400 NFS: Prevent the mount code from looping forever on broken exports Keep a global count of how many referrals that the current task has traversed on a path lookup. Return ELOOP if the count exceeds MAX_NESTED_LINKS. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit f1520a1b0a3596c96a53a22ea37b63b5b8ca8c67 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:52 2010 -0400 NFS: Reduce stack footprint of nfs3_proc_getacl() and nfs3_proc_setacl() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 51b25ed0807d8ad4cdaf951e6b4d85ce9e14c108 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:52 2010 -0400 NFS: Reduce stack footprint of nfs_statfs() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 8839ed8e719c3507ee963067589dddfb90191696 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:52 2010 -0400 NFS: Reduce stack footprint of nfs_setattr() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fe5ff3a04ae6f5abd776ddadd4b6e820b0b9dce2 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:51 2010 -0400 NFS: Reduce stack footprint of nfs4_proc_create() Move the O_EXCL open handling into _nfs4_do_open() where it belongs. Doing so also allows us to reuse the struct fattr from the opendata. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit ef6ef18e9ea8895be25165c436de0d30322c469f Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:51 2010 -0400 NFS: Reduce the stack footprint of nfs_proc_symlink() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 6e0ac61eb7c61c6e7a6285bd4feaedbd7041614e Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:51 2010 -0400 NFS: Reduce the stack footprint of nfs_proc_create Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit c7dd79ed382051c93772e7110c08a94d89d3d501 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:50 2010 -0400 NFS: Reduce the stack footprint of nfs_rmdir Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit f95c81470501c171e2bc9e2bbd81ad4f36e1668b Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:50 2010 -0400 NFS: Reduce stack footprint of nfs_proc_remove() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit f3c83d762e9329af0fad075c449af552d84cc3d6 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:50 2010 -0400 NFS: Reduce stack footprint of nfs3_proc_readlink() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 7f9d724bfc6b774186df614613896274cd57fbb4 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:49 2010 -0400 NFS: Reduce the stack footprint of nfs_link() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fe677f885967b79e46f2ee6d2bd5e950dc4d099c Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:49 2010 -0400 NFS: Reduce stack footprint of nfs_readdir() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 3c066c03da3e8fa2f9a91b9cd6c914a56604fbe0 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:49 2010 -0400 NFS: Reduce stack footprint of nfs3_proc_rename() and nfs4_proc_rename() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fa8875e97e5f7ec5d72857705790bd51c3f83095 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:49 2010 -0400 NFS: Reduce stack footprint of nfs_revalidate_inode() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 7fa0a015f4d3c7290e33b724bab38bb715a1ab65 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:48 2010 -0400 NFSv4: Reduce stack footprint of nfs4_proc_access() and nfs3_proc_access() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 80b2072b847aadcd860e4bbaaf9082b674b1aead Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:48 2010 -0400 NFSv4: Reduce the stack footprint of nfs4_remote_referral_get_sb Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 810f81559fcb1fe15f3bd81ca04b0ea6c7e230fa Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:48 2010 -0400 NFSv4: Reduce stack footprint of nfs4_get_root() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 2f2bfa9ecb445f21650a06159cdcaaf588b563e6 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:48 2010 -0400 NFS: Reduce the stack footprint of nfs_follow_remote_path() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit f7c87846ed8c32ba734a303dcbc44a0ede8552db Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:47 2010 -0400 NFS: Reduce the stack footprint of nfs_lookup Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit e9cb62d914a1c9e6854e6cc826157470ede6cf73 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:46 2010 -0400 NFSv4: Reduce the stack footprint of try_location() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit e227dbc83479ca4633886244f628738d12f57544 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:46 2010 -0400 NFS: Reduce the stack footprint of nfs_create_server Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 36c7e9460e3d5faabad40ba5a2ca5b123b922494 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:46 2010 -0400 NFS: Reduce the stack footprint of nfs_follow_mountpoint() Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 0c97dfe9dbd151dcdd89c6b1d73cecfe360f9935 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:46 2010 -0400 NFSv4: Eliminate nfs4_path_walk() All we really want is the ability to retrieve the root file handle. We no longer need the ability to walk down the path, since that is now done in nfs_follow_remote_path(). Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 87ec468d18208404148344966bb6e589ff3b69cc Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Apr 16 16:22:45 2010 -0400 NFS: Add helper functions for allocating filehandles and fattr structs NFS Filehandles and struct fattr are really too large to be allocated on the stack. This patch adds in a couple of helper functions to allocate them dynamically instead. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 4b98fb47f8e5d8f864a5281503ae37a9aa208874 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu Apr 8 14:25:20 2010 -0400 gss_krb5: Advertise rc4-hmac enctype support in the rpcsec_gss/krb5 upcall Update the upcall info indicating which Kerberos enctypes the kernel supports Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 274e11e7c1431f9a924edccbb1bbfc546354cc13 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:03:06 2010 -0400 gss_krb5: Add support for rc4-hmac encryption Add necessary changes to add kernel support for the rc4-hmac Kerberos encryption type used by Microsoft and described in rfc4757. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit fa1e39dc99488f3b74d5f2a0307e4a54dd65a437 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:03:05 2010 -0400 gss_krb5: Use confounder length in wrap code All encryption types use a confounder at the beginning of the wrap token. In all encryption types except arcfour-hmac, the confounder is the same as the blocksize. arcfour-hmac has a blocksize of one, but uses an eight byte confounder. Add an entry to the crypto framework definitions for the confounder length and change the wrap/unwrap code to use the confounder length rather than assuming it is always the blocksize. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit bd9dc4b0e3b9889b49bc887a6bf62c7a5b6b4c2b Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:03:04 2010 -0400 gssd_krb5: More arcfour-hmac support For the arcfour-hmac support, the make_seq_num and get_seq_num functions need access to the kerberos context structure. This will be used in a later patch. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 190a2e1c7615cd1e68fb5994ab935e137874ee79 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:03:03 2010 -0400 gss_krb5: Save the raw session key in the context This is needed for deriving arcfour-hmac keys "on the fly" using the sequence number or checksu Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit f2fec69662022e12e0593cee91a64ee94424e152 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:03:02 2010 -0400 gssd_krb5: arcfour-hmac support For arcfour-hmac support, the make_checksum function needs a usage field to correctly calculate the checksum differently for MIC and WRAP tokens. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 8cb614fd40227ed936ca28cd75e0c917aa7d09d8 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu Apr 8 14:23:06 2010 -0400 gss_krb5: Advertise AES enctype support in the rpcsec_gss/krb5 upcall Update upcall info indicating which Kerberos enctypes the kernel supports Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit a2c07a23d3ba8bea7a7a90ce75d13c9a84b00b22 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:03:00 2010 -0400 gss_krb5: add remaining pieces to enable AES encryption support Add the remaining pieces to enable support for Kerberos AES encryption types. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 8e415a3fa9b00bc19a682f40674d42e9345cba04 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:59 2010 -0400 gss_krb5: add support for new token formats in rfc4121 This is a step toward support for AES encryption types which are required to use the new token formats defined in rfc4121. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> [SteveD: Fixed a typo in gss_verify_mic_v2()] Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> [Trond: Got rid of the TEST_ROTATE/TEST_EXTRA_COUNT crap] Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 22e80c88526482a2ccf173db9547fb07ade3620b Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:58 2010 -0400 xdr: Add an export for the helper function write_bytes_to_xdr_buf() Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit dd49450037591da3bb9332fd46ea4d3e2f34eaef Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu Apr 8 14:21:12 2010 -0400 gss_krb5: Advertise triple-des enctype support in the rpcsec_gss/krb5 upcall Update the upcall info indicating which Kerberos enctypes the kernel supports. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 2feaa421212cd75b2422156469e8adcc6f4d0745 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:55 2010 -0400 gss_krb5: add support for triple-des encryption Add the final pieces to support the triple-des encryption type. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 19a636d3b22c368a58e83653ab950812a54d6957 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu Apr 8 14:09:58 2010 -0400 gss_krb5: Add upcall info indicating supported kerberos enctypes The text based upcall now indicates which Kerberos encryption types are supported by the kernel rpcsecgss code. This is used by gssd to determine which encryption types it should attempt to negotiate when creating a context with a server. The server principal's database and keytab encryption types are what limits what it should negotiate. Therefore, its keytab should be created with only the enctypes listed by this file. Currently we support des-cbc-crc, des-cbc-md4 and des-cbc-md5 Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit caf723a64d4d8d9e414803e11f487b64d0796a50 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:54 2010 -0400 gss_krb5: handle new context format from gssd For encryption types other than DES, gssd sends down context information in a new format. This new format includes the information needed to support the new Kerberos GSS-API tokens defined in rfc4121. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 2633d39f516e5680014216cfc014312630cacbde Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:53 2010 -0400 gss_krb5: import functionality to derive keys into the kernel Import the code to derive Kerberos keys from a base key into the kernel. This will allow us to change the format of the context information sent down from gssd to include only a single key. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 92d53af26e9cf0b0b88d0d5373018ee3ee94759d Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:52 2010 -0400 gss_krb5: add ability to have a keyed checksum (hmac) Encryption types besides DES may use a keyed checksum (hmac). Modify the make_checksum() function to allow for a key and take care of enctype-specific processing such as truncating the resulting hash. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 2aa5fd093c120f1d3947027d353430c1f45cb92c Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:51 2010 -0400 gss_krb5: introduce encryption type framework Add enctype framework and change functions to use the generic values from it rather than the values hard-coded for des. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 5d6a2a4f6639808fbb0130ea95736153c4ddd47b Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:50 2010 -0400 gss_krb5: prepare for new context format Prepare for new context format by splitting out the old "v1" context processing function Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 0be035054507be39eee0b56dc6b68e7dff79ad0a Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:49 2010 -0400 gss_krb5: split up functions in preparation of adding new enctypes Add encryption type to the krb5 context structure and use it to switch to the correct functions depending on the encryption type. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 562c87b6b962ab075afd8f4f5246fde12b8e39c1 Author: J. Bruce Fields <bfields@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:48 2010 -0400 gss_krb5: Don't expect blocksize to always be 8 when calculating padding Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 2989a61707503ef668fab678cd3a0db7ae7f8fb0 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:47 2010 -0400 gss_krb5: Added and improved code comments Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit d9b5a8f050e3ee49be730eb327f5cdc836bc35b5 Author: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Date: Wed Mar 17 13:02:46 2010 -0400 gss_krb5: Introduce encryption type framework Make the client and server code consistent regarding the extra buffer space made available for the auth code when wrapping data. Add some comments/documentation about the available buffer space in the xdr_buf head and tail when gss_wrap is called. Add a compile-time check to make sure we are not exceeding the available buffer space. Add a central function to shift head data. Signed-off-by: Kevin Coffman <kwc@xxxxxxxxxxxxxx> Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html