kernel-fxtec-pro1x/fs/nfsd
J. Bruce Fields ffe1137ba7 nfsd4: delay filling in write iovec array till after xdr decoding
Our server rejects compounds containing more than one write operation.
It's unclear whether this is really permitted by the spec; with 4.0,
it's possibly OK, with 4.1 (which has clearer limits on compound
parameters), it's probably not OK.  No client that we're aware of has
ever done this, but in theory it could be useful.

The source of the limitation: we need an array of iovecs to pass to the
write operation.  In the worst case that array of iovecs could have
hundreds of elements (the maximum rwsize divided by the page size), so
it's too big to put on the stack, or in each compound op.  So we instead
keep a single such array in the compound argument.

We fill in that array at the time we decode the xdr operation.

But we decode every op in the compound before executing any of them.  So
once we've used that array we can't decode another write.

If we instead delay filling in that array till the time we actually
perform the write, we can reuse it.

Another option might be to switch to decoding compound ops one at a
time.  I considered doing that, but it has a number of other side
effects, and I'd rather fix just this one problem for now.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2012-11-26 09:08:15 -05:00
..
acl.h nfsd4: remove outdated pathname-comments 2011-01-04 18:22:10 -05:00
auth.c Merge branch 'for-3.5' of git://linux-nfs.org/~bfields/linux 2012-06-01 08:32:58 -07:00
auth.h nfsd: minor fs/nfsd/auth.h cleanup 2008-02-01 16:42:05 -05:00
cache.h nfsd: turn on reply cache for NFSv4 2011-07-18 09:39:01 -04:00
current_stateid.h nfsd41: use current stateid by value 2012-02-15 11:20:45 -05:00
export.c SUNRPC: service request network namespace helper introduced 2012-07-27 16:49:21 -04:00
fault_inject.c nfsd: return 0 on reads of fault injection files 2012-05-31 20:29:48 -04:00
fault_inject.h NFSD: Added fault injection 2011-11-07 21:10:47 -05:00
idmap.h nfsd: pass network context to idmap init/exit functions 2012-04-12 09:12:10 -04:00
Kconfig NFSD: Added fault injection 2011-11-07 21:10:47 -05:00
lockd.c nfsd: Remove deprecated nfsctl system call and related code. 2011-07-15 18:58:42 -04:00
Makefile NFSD: Added fault injection 2011-11-07 21:10:47 -05:00
netns.h nfsd: make laundromat network namespace aware 2012-11-15 07:40:51 -05:00
nfs2acl.c nfsd4: nfsaclsvc_encode_voidres static 2012-08-20 18:39:49 -04:00
nfs3acl.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
nfs3proc.c nfsd: do_nfsd_create verf argument is a u32 2012-08-20 18:39:49 -04:00
nfs3xdr.c nfsd: fix compose_entry_fh() failure exits 2012-04-13 10:12:02 -04:00
nfs4acl.c fs: add export.h to files using EXPORT_SYMBOL/THIS_MODULE macros 2011-10-31 19:30:31 -04:00
nfs4callback.c nfsd: make nfs4_client network namespace dependent 2012-11-15 07:40:42 -05:00
nfs4idmap.c NFSD: pass null terminated buf to kstrtouint() 2012-09-10 17:46:19 -04:00
nfs4proc.c nfsd4: delay filling in write iovec array till after xdr decoding 2012-11-26 09:08:15 -05:00
nfs4recover.c nfsd: pass nfsd_net instead of net to grace enders 2012-11-15 07:40:50 -05:00
nfs4state.c nfsd: make laundromat network namespace aware 2012-11-15 07:40:51 -05:00
nfs4xdr.c nfsd4: delay filling in write iovec array till after xdr decoding 2012-11-26 09:08:15 -05:00
nfscache.c nfsd: turn on reply cache for NFSv4 2011-07-18 09:39:01 -04:00
nfsctl.c nfsd: remove unused listener-removal interfaces 2012-09-10 10:55:19 -04:00
nfsd.h nfsd: remove redundant "port" argument 2012-08-21 17:07:49 -04:00
nfsfh.c exportfs: add FILEID_INVALID to indicate invalid fid_type 2012-11-07 19:22:30 -05:00
nfsfh.h fs: propagate umode_t, misc bits 2012-01-03 22:55:10 -05:00
nfsproc.c nfsd: Push mnt_want_write() outside of i_mutex 2012-07-31 01:02:51 +04:00
nfssvc.c nfsd: fix v4 reply caching 2012-11-26 09:05:19 -05:00
nfsxdr.c Fix common misspellings 2011-03-31 11:26:23 -03:00
state.h nfsd: pass nfsd_net instead of net to grace enders 2012-11-15 07:40:50 -05:00
stats.c SUNRPC: register service stats /proc entries in passed network namespace context 2012-01-31 19:28:18 -05:00
vfs.c nfsd: use vfs_fsync_range(), not O_SYNC, for stable writes 2012-11-07 19:31:34 -05:00
vfs.h nfsd: Push mnt_want_write() outside of i_mutex 2012-07-31 01:02:51 +04:00
xdr.h nfsd: remove pointless paths in file headers 2009-12-15 15:01:47 -05:00
xdr3.h nfsd: remove pointless paths in file headers 2009-12-15 15:01:47 -05:00
xdr4.h nfsd4: delay filling in write iovec array till after xdr decoding 2012-11-26 09:08:15 -05:00