An error occurred fetching the project authors.
- 13 Mar, 2004 3 commits
-
-
Trond Myklebust authored
read due to EOF.
-
Trond Myklebust authored
mounting. This should allow us to use AUTH_SYS credentials when mounting, (even when the user requests RPCSEC_GSS authentication) due to the hack described in RFC2623. Remove the broken NFS_INO_FAKE_ROOT hack.
-
Trond Myklebust authored
longer relies on ctime for correctness in avoiding update races. VFS: allow filesystems to disable inode_update_time() on a per-inode basis.
-
- 07 Feb, 2004 2 commits
-
-
Trond Myklebust authored
-
Trond Myklebust authored
-
- 07 Oct, 2003 3 commits
-
-
Trond Myklebust authored
- Hierarchy of state attached to nfs4_client in order to simplify state recovery. state_owners hang off nfs4_client, whereas state hangs off both open_owners and the nfs_inode. - Model tries to minimize the number of open_owners on the server by recycling unused open_owners into a pool. - NFSv4 state attached to file->private_data. Previously this was used by credentials (and still is for NFSv2/v3) Abstract out setup/release of struct file and nfs_page structure initialization in order to cope with these conflicting uses of private_data.
-
Trond Myklebust authored
a pointer to a filled nfs_write_data struct like we do for asynchronous function calls
-
Trond Myklebust authored
passing a pointer to a filled nfs_read_data structure (the same struct used by the asynchronous function calls)
-
- 23 Sep, 2003 2 commits
-
-
Alexander Viro authored
Real conversion to 32bit dev_t. Expansion to: * mknod() - 32 * newstat() - 32 on 64bit platforms * stat64() - 32 on mips, 64 on everything else (mips has weird struct stat64 and can't get more than 32 bits). Note that right now the difference is purely theoretical - we don't have internal values above 32 bits, so huge_... vs. new_... only marks the places where 64bit conversion will need extra work. * arch-dependent stat variants - depending on width available. * ustat et.al. - 32 * filesystems that can handle 32 bits right now - 32 * ext2 and ext3 - 32, with large dev_t inodes having 0 in the first element of i_data[] (where we store dev_t value for small device numbers) and keeping the value in the second element. * nfsd - 32; it can be driven to 64, but we'll get several issues with NFSv2 support. * RAID - 32 * devmapper - with v1 it's still 16 (nothing to do here), with v4 it's 64. * loop - 64 * initramfs - 32 * do_mounts code - 32. Parts that scan devfs tree are using newstat() on 64bit platforms and stat64() on the rest (IOW, the latest stat variant on given platform). * old_valid_dev()/new_valid_dev() added where needed (stat variants, mostly - we fail with -EOVERFLOW if values do not fit).
-
Alexander Viro authored
NFS made dev_t-agnostic. Aside of minor fixes in debugging printks, and adding old_encode_dev()/old_decode_dev(), the main part is in handling of exports with large dev_t. New fhandle format introduced, fh_verify(), fh_compose() and exports cache taught to deal with it. Format is used when ->s_dev of exported fs doesn't fit into 256:256; in that case we put major and minor in separate words in fhandle; ->fh_fsid_type is set to 2.
-
- 08 Jan, 2003 1 commit
-
-
Trond Myklebust authored
Patch by Chuck Lever to add a new field called wb_pgbase to the nfs_page struct. This separates the concept of file page offset from buffer page offset, allowing NFS to specify read and write requests into buffers at offsets that are independent of the file page offset. It is a prequisite for direct I/O in NFS.
-
- 20 Dec, 2002 4 commits
-
-
Chuck Lever authored
Description: everywhere the NFS client uses the req_offset() function today, it adds req->wb_offset to the result. this patch simply makes "+req->wb_offset" a part of the req_offset() function. Test status: Passes all Connectathon '02 tests with v2, v3, UDP and TCP. Passes NFS torture tests on an x86 UP highmem system.
-
Trond Myklebust authored
Retrieve the post-operation attribute changes for NFSv4 READ and WRITE operations. Unlike for NFSv2 and NFSv3, we do not retrieve the full set of file attributes. The main reason for this is that interpreting attributes is a much heavier task on NFSv4 (requiring, for instance, translation of file owner names into uids ...). Hence For a READ request, we retrieve only the 'change attribute' (for cache consistency checking) and the atime. For a WRITE request, we retrieve the 'change attribute' and the file size. In addition, we retrieve the value of the change attribute prior to the write operation, in order to be able to do weak cache consistency checking.
-
Trond Myklebust authored
The following patch creates a clean XDR path for the NFSv4 write requests instead of routing through encode_compound()/decode_compound().
-
Trond Myklebust authored
This creates a clean XDR path for the NFSv4 read requests instead of routing through encode_compound()/decode_compound(). This eliminates the intermediate step of setting up a struct nfs4_compound before proceeding to XDR encoding, and removes the large 'switch()' statements from the codepath altogether.
-
- 17 Nov, 2002 1 commit
-
-
Trond Myklebust authored
The "procedure number" has been used for 2 purposes in the kernel client RPC implementation: 1) As a number to pass to the server in the RPC header. 2) As an index into the "procedure array" of type 'struct rpc_procinfo', from which the RPC layer can find the XDR encode/decode functions, buffer size, and all the other static data that it needs to construct the on-wire RPC message. This works fine for NFSv2, v3 and for the NLM locking code for which there is a one-to-one mapping between NFS file operations, and RPC procedures. For NFSv4 on the other hand, the mapping is many-to-one, since there is only one RPC procedure number: NFSPROC4_COMPOUND. For efficiency purposes, we want to have a one-to-one mapping between NFS file operations and the corresponding XDR encode/decode routines, but currently this is not possible because of (2). The result is the mess that is 'struct nfs4_op' and encode/decode_compound. In the process eliminating (2), we might as well change to passing a pointer to the appropriate procedure array entry instead of an index. This change can be made transparent The appended patch therefore does the following: - Substitute a pointer to the rpc_procinfo instead of the RPC procedure number in the struct rpc_message. - Make the RPC procedure number an entry in the struct rpc_procinfo. - Clean out the largely unused (except in some obscure lockd debugging code) p_name field. The latter was just a stringified version of the RPC procedure name, so for those lockd cases, we can use the RPC procedure number instead.
-
- 16 Oct, 2002 1 commit
-
-
Trond Myklebust authored
The following patch fixes 2 obvious typos. Thanks to davem and George Anzinger for pointing them out.
-
- 15 Oct, 2002 1 commit
-
-
Trond Myklebust authored
Further cleanups Separate the static and dynamic filesystem data retrieval calls as per the NFSv3 spec. This also simplifies things for NFSv4, since many of the attributes in the fsinfo+fstat combined call are not mandatory to implement.
-
- 11 Oct, 2002 2 commits
-
-
Trond Myklebust authored
In NFSv3, an RPC is retried if the special error NFSERR_JUKEBOX is received. This generic bit of postprocessing happens invisibly for synchronous RPC's, but in the async case, the ->tk_exit callback must call nfs_async_handle_jukebox() by hand. In NFSv4, we also need generic postprocessing of async RPC's, but the details are different. Therefore, we don't want to call nfs_async_handle_jukebox(); we want to call a different, NFSv4-specific routine. Therefore, we want to move calls to nfs_async_handle_jukebox() out of the "generic" NFS code and into NFSv3-specific routines. This has already been done for async READ and WRITE in the preceding patches, but there is still one outstanding case: the async REMOVE in sillyrename. This patch removes nfs_async_handle_jukebox() from the async sillyrename path, and puts in the NFSv3 ->unlink_done() rpc_op.
-
Trond Myklebust authored
This is a nontrivial change to the NFS client. This patch does for the async WRITE and COMMIT paths what patch 15 did for the async READ path, by defining new nfs_rpc_ops ->setup_write() and ->setup_commit().
-
- 10 Oct, 2002 3 commits
-
-
Trond Myklebust authored
This is a nontrivial change to the NFS client. In this patch, we finish modifying the async READ path so that it is version-agnostic. We define a new nfs_rpc_op ->setup_read(), and move the v2- and v3-specific code in nfs_read_rpcsetup() there. We also have to change nfs_readpage() result so that the 'count' of bytes read is a parameter. The extra parameter means that it can no longer be ->tk_exit(). Instead, it is called from a version-specific ->tk_exit() routine which is set in ->read_setup(). The upshot of all this is that the version-specific part of the async READ path has been encapsulated in a new nfs_rpc_op ->read_setup(), and NFSv4 can share the logic for asynchronous READ's with NFSv2 and v3.
-
Trond Myklebust authored
This patch changes the interface of the ->setattr() nfs_rpc_op so that its first argument is a dentry instead of an inode. [Explanation: The dentry is required because in NFSv4, we may need to OPEN the file before doing the SETATTR. (This is required if the file size is changed as part of the setattr.) Opening the file requires making use of the containing directory's inode.]
-
Trond Myklebust authored
This patch changes the interface of the ->readdir() nfs_rpc_op so that its first argument is a dentry instead of an inode. [Explanation: The dentry is required because in NFSv4, we need to make use of the _parent_ directory's inode. This is because NFSv4 servers no longer return an entry for ".." in the READDIR response, so the client kernel needs to fake this entry, inode number and all.]
-
- 10 Sep, 2002 1 commit
-
-
Art Haas authored
Here are some patches for C99 initializers in fs/nfs. Patches are against 2.5.32.
-
- 28 May, 2002 2 commits
-
-
Trond Myklebust authored
Remove another class of rpciod deadlocks on HIGHMEM systems. Kick habit of keeping pages kmap()ed for the entire duration of NFS read/readdir/readlink operations. Use struct page directly in RPC client data receive buffer. TCP and UDP sk->data_ready() bottom-halves copy (and checksum when needed) data into pages rather than iovecs. atomic_kmap() of single pages is used for the copy. include/linux/xdr.h Declare structure for copying an sk_buff here rather than in xprt.c. Forward declaration of new functions. include/linux/sunrpc/xprt.h RPC client receive buffer changed to use new format 'struct xdr_buf'. net/sunrpc/clnt.c Initialize new format receive buffer. net/sunrpc/sunrpc_syms.c Export xdr_inline_pages(), xdr_shift_buf() net/sunrpc/xdr.c xdr_inline_pages() inlines pages into the receive buffer. xdr_partial_copy_from_skb() replaces csum_partial_copy_to_page_cache() and copy code in tcp_read_request(). Provides sendfile()-style method for copying data from an skb into a struct xdr_buf. xdr_shift_buf() replaces xdr_shift_iovec() for when we overestimate the size of the RPC/NFS header. net/sunrpc/xprt.c Adapt UDP and TCP receive routines to use new format xdr_buf. include/linux/nfs_xdr.h struct nfs_readargs, nfs_readdirargs, nfs_readlinkargs, nfs3_readdirargs, nfs3_readlinkargs all transmit page information. struct nfs_readdirres, nfs_readlinkres, nfs3_readlinkres obsoleted. struct nfs_rpc_ops->readlink(), readdir(), read() now send pages fs/nfs/dir.c Adapt to new format ->readdir(). Avoid kmap() around the RPC call. fs/nfs/read.c Adapt to new format ->read() and struct nfs_readargs. fs/nfs/symlink.c Adapt to new format ->readlink(). fs/nfs/proc.c Convert nfs_proc_readlink(), nfs_proc_readdir(), nfs_proc_read() fs/nfs/nfs2xdr.c Convert XDR routines to transmit page information. Remove duplicate zeroing of pages when server returns a short read. fs/nfs/nfs3proc.c Convert nfs3_proc_readlink(),nfs3_proc_readdir(),nfs3_proc_read() fs/nfs/nfs3xdr.c Convert XDR routines to transmit page information. Remove duplicate zeroing of pages when server returns a short read. Cheers, Trond
-
Trond Myklebust authored
Stop rpciod from deadlocking against itself in map_new_virtual() on HIGHMEM systems. RPC client currently has to keep all pages that are scheduled for transmission kmap()ed into an iovec for the entire duration of the call. We only actually need to kmap() pages while making the (non-blocking) call to sock_sendmsg(). NOTE: When transmitting several pages in one RPC call, sock_sendmsg() requires us to kmap() *all* those pages at the same time. Opens for deadlocks between rpciod and some other process that also kmaps more than 1 page at a time. For the TCP case we can solve later by converting to TCP_CORK+sendpage(). include/linux/sunrpc/xdr.h Introduce 'struct xdr_buf' in order to allow RPC layer to handle pages directly. include/linux/sunrpc/xprt.h: Convert the RPC client send-buffer to the new format. net/sunrpc/clnt.c Initialize the new format RPC send-buffer. net/sunrpc/sunrpc_syms.c Export xdr_encode_pages() net/sunrpc/xdr.c xdr_kmap() kmap()+copy a struct xdr_buf into an iovec array. xdr_kunmap() clean up after xdr_kmap(). xdr_encode_pages() used to inline pages for transmission. net/sunrpc/xprt.c xprt_sendmsg() needs to kmap() the pages into an iovec for transmission. include/linux/nfs_xdr.h struct nfs_writeargs transmits full page information. Convert nfs_rpc_ops->write() to send pages. fs/nfs/write.c Adapt to new format nfs_writeargs / nfs_rpc_ops->write() fs/nfs/proc.c Convert nfs_proc_write(). fs/nfs/nfs2xdr.c Convert nfs_xdr_writeargs() fs/nfs/nfs3proc.c Convert nfs3_proc_write(). fs/nfs/nfs3xdr.c Convert nfs3_xdr_writeargs() Cheers, Trond
-
- 30 Apr, 2002 1 commit
-
-
Dave Hansen authored
This patch takes the BKL out of vfs_readdir() and moves it into the individual filesystems, all 35 of them. I have the feeling that this wasn't done before because there are a lot of these to change and it was a pain to find them all. I definitely got all of those that were defined in the in the structure declaration like this "readdir: fs_readdir;" vxfs_readdir was assigned strangely, but I found it anyway. I also left devfs out of this one. Richard seems confident that devfs has no need for the BKL.
-
- 04 Apr, 2002 1 commit
-
-
Dave Jones authored
Originally by Grant R.Guenther Has had a quick once over by Al, who weeded out one chunk that was unrelated.
-
- 09 Feb, 2002 1 commit
-
-
Dave Jones authored
Big bits first, I'll redo the smaller bits tomorrow after some sleep. Same as last time, rediffed against pre5
-
- 05 Feb, 2002 2 commits
-
-
Linus Torvalds authored
- Jens: better ordering of requests when unable to merge - Neil Brown: make md work as a module again (we cannot autodetect in modules, not enough background information) - Neil Brown: raid5 SMP locking cleanups - Neil Brown: nfsd: handle Irix NFS clients named pipe behavior and dentry leak fix - maestro3 shutdown fix - fix dcache hash calculation that could cause bad hashes under certain circumstances (Dean Gaudet) - David Miller: networking and sparc updates - Jeff Garzik: include file cleanups - Andy Grover: ACPI update - Coda-fs error return fixes - rth: alpha Jensen update
-
Linus Torvalds authored
-