- 15 Oct, 2002 1 commit
-
-
Dipankar Sarma authored
This is the RCU core patch from akpm's tree. It has been in his tree since about 2.5.37-mm1 along with dcache_rcu and so far it has worked fine. For 2.5, I am hoping that we might get the following RCU patches included - 1. rt_rcu - ipv4 routecache lookup. Davem agreed to include this patch if and when you include RCU core in your tree. 2. dcache_rcu (by Maneesh Soni) - dcache lookup avoiding dcache_lock as much as possible. This has been akpm's tree - stable and gives us good yield. I have been submitting this to Viro and I will publish some more benchmark numbers later to help decide on this. This RCU core implements RCU APIs, call_rcu() and synchronize_kernel(), by monitoring a per-CPU quiescent state (idle/user etc.) counter. call_rcu() queues a callback to be invoked after all the CPUs have gone through a quiescent state. Queuing is per-CPU and each per-CPU batch gets a batch number. As batches get their turn, a global cpu mask is used to keep track of CPUs pending quiescent state. Checking for quiescent cycle is done by saving the per-CPU counter at the beginning of the batch and then monitoring it for change through the local timer interrupt handler.
-
- 11 Oct, 2002 39 commits
-
-
Linus Torvalds authored
-
Linus Torvalds authored
uses fields that do not exist otherwise.
-
Andi Kleen authored
Due to some bugs in byteorder/generic.h linux would always use C handcoded swab64 for 64bit ntohq or cpu_to_be64. The C version is very inefficient and expands to 30+ instructions of horrible code. This hurts on filesystems that use on disk big endian data structures with 64bit data types. This patch adds an assembly optimized swab64 to fix it. Now bswab64 is 4 instructions when your CPU supports bswap and 9 when it doesn't. Tests were done with gcc 3.2, may be different on older gcc. This is good for ~600 bytes code size reduction in XFS (gcc 3.2): Before: 503199 3296 1682 508177 7c111 fs/xfs/xfs.o After: 502543 3296 1682 507521 7be81 fs/xfs/xfs.o Also should be faster. Also some minor cleanups in the file.
-
Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Jan Harkes authored
Most of these changes have been tested and used in the 2.4 tree, so this is mostly a forward port of 2.4 bugfixes. * C99 initializers * Added specific initializations instead of assuming that the private part of the inode is already initialized. * Remove unused code. * Moved container file to the struct file private data, this is to * correct the session semantics model when file updates are fetched from * the server (old 'sessions' shouldn't see the new container yet). * Fixed consistency (and occasional oopes) when mmap-ing Coda files. * Fixing up inode numbers in readdir, old libc5 getcwd was broken. * Nuked upcall_stats, all of this can easily be maintained in userspace, and the existing code suffers from overflows in the fixed point calculations.
-
Andrew Morton authored
- Fix some printk warnings in 3c59x.c (inl() now returns a long). - ext3 warning fix from Stephen Hemminger: "__FUNCTION__ is a constant and gcc warns about passing it as a mutuable string." - Fix a return-with-BKL-held in isofs_readdir() - paride 64-bit sector_t fix (Bill Irwin)
-
http://linux-ntfs.bkbits.net/linux-2.5-ilookupLinus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
John Stultz authored
This syncs up the cyclone-timer code w/ Greg's changes from this morning.
-
Peter Chubb authored
In the current kernels, when a PCMCIA card is inserted into or removed from a socket, the kernel oopses because yenta_bh() tries to dereference a NULL pointer. The attached patch initialises the argument to yenta_bh() so that this doesn't happen.
-
http://linux-isdn.bkbits.net/linux-2.5.eiconLinus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
http://linux-isdn.bkbits.net/linux-2.5.isdnLinus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Rolf Eike Beer authored
-
Neil Brown authored
Add _request and _parse methods for nfsd.fh and nfsd.exports tables. nfsd.fh maps a filehandle-fragment to a path for a client, and nfsd.exports maps a path to export options for a client.
-
Neil Brown authored
a message should be: nfsd 10.0.1.1 {Expirydate} domainname if domainname is empty, then this is a NEGATIVE entry: that IP address will be deined access. {Expirydate} is seconds since unix epoch. e.g. 1036105199 for midnight, halloween.
-
Neil Brown authored
-
Neil Brown authored
get_word understands both \x and \012 quoting styles.
-
Neil Brown authored
This is the first upcall to actually be coded. A request will look like: nfsd 127.0.0.1
-
Neil Brown authored
This code enhances 'cache_check' to try to initiate an up-call if the cache entry is not up-to-date, and also defines add_word and add_hex for formating up-call requests. See rpc-cache.txt for more detail.
-
Neil Brown authored
[PATCH] kNFSd: Create files: /proc/net/rpc/$CACHENAME/channel for communicating cache updates with kernel Each cache gets it's own 'channel' at /proc/net/rpc/$CACHENAME/channel Reads from the file will return all pending requests, one at a time. select will block when at end of file. writes will pass full lines in to be processed.
-
Neil Brown authored
cache.c gets code to allow a 'request' to be referred pending an update of a cache item, and revisited when the item is updates. svcsock.c gets code to store the relevant part of a request on deferral, and to re-queue it when the cache item that caused the deferral is filled in.
-
Neil Brown authored
Rather than possibly modifying a request (as xdr_decode_string can) we use xdr_decode_string_inplace to symlink contents. This string may not be nul terminated (though it often is) so in the 'unlikely' event that is isn't nul terminated, we copy it into a kmalloced space first. It might be nice if vfs_symlink took a length, but then every filesystem would have to as well....
-
Neil Brown authored
We are going to want rpc request to be immutable so that we can take a copy and put it aside to be processed later. Currently the tcp code writes the response into the same buffer as the request, thus corrupting the request. With this patch, the response goes after the request. There should always be enough room as large reqeusts (Write) has small responses, and large responses (read) are for small requests. buflen is changed for requests to record the length of the request. It already gets reset for each new request.
-
Neil Brown authored
This introduces two caches, svc_export_cache (nfsd.exports) and svc_expkey_cache (nfsd.fh). nfsd.exports maps client+directory -> export options. nfsd.fh maps client + filehandle-fragment -> directory. A major part of this change is that export entries are now reference counted, so we have to be careful to keep those counts correct.
-
Neil Brown authored
-
Neil Brown authored
-
Neil Brown authored
Instead of doing the lookup from ipaddr to domain inside the nfs server, (and also when lockd calls into nfsd) it is now done at the rpc authentication level which is a more sensible place for it. Note that both AUTH_UNIX and AUTH_NULL do the same lookup. So that the rpc layer knows that nfsd and lockd both uses the name space of domains (while other hypothetical services may not) we introduce a 'class' for each service which svc_auth combines with the IP address when doing a lookup.
-
Neil Brown authored
This patch introduces two caches using the new infrastucture, and the concept of a 'domain'. A 'domain' refers to a collection of clients that all have the same view of the nfs server, and all have the same access rights (modulo different users on the clients). For AUTH_UNIX (and AUTH_NULL), the domain is determined from the IP address. For other authentication styles, the domain might be determined directly from the credentials. Each auth flavour knows how to allocate and free it's domain-specific infomation. auth_domain_cache maps a name to a domain which is owned by an auth flavour. ip_map_cache is a cache specific to AUTH_UNIX which maps IP address to domain. With this patch, svcauth_unix.c is created to store all auth_unix related code. The IP address lookup code is removed from nfsd/exports.c sunrpc module initilisation is moved out of stats.c into sunrpc_syms which seemed to be the most central .c file. It now registers these two caches. Now that the caches are being used, nfsd needs to call cache_clean periodically.
-
Neil Brown authored
This patch provides a "virtual class" for defining caches that make user-space information available in the kernel It is intended for RPC services or clients that need user-space support for authentication. As yet, support for userspace interaction isn't included as I want that to be able to have separate review.
-
Neil Brown authored
Define auth_ops that contains a method for authenticating a request and a method for authorising a reply. Call both methods as appropriate. Also discard rq_verfed and cr_flavour, neither ever used. And discard rq_auth as it isn't needed.
-
Neil Brown authored
-
Neil Brown authored
Now that all the hooks are in place, this large patch imports all of the new code for the NFSv4 server. This patch makes almost no changes to the existing nfsd codebase (these have been taken care of by the preceding patches). One aspect of the NFSv4 code deserves comment. The most natural scheme for processing a COMPOUND request would seem to be: 1a. XDR decode phase, decode args of all operations 2a. processing phase, process all operations 3a. XDR encode phase, encode results of all operations However, we use a scheme which works as follows: 1b. XDR decode phase, decode args of all operations 2b. For each operation, process the operation encode the result To see what is wrong with the first scheme, consider a COMPOUND of the form READ REMOVE. Since the last bit of processing for the READ request occurs in XDR encode, we might discover in step 3a that the READ request should return an error. Therefore, the REMOVE request should not be processed at all. This is a fatal problem, since the REMOVE was already been done in step 2a! Another type of problem would occur in a COMPOUND of the form READ WRITE. Assume that both operations succeed. Under scheme (a), the WRITE is actually performed _before_ the READ (since the "real" READ is really done during XDR encode). This is certainly incorrect if the READ and WRITE ranges overlap. These examples might seem a little artificial, but nevertheless it does seem that in order to process a COMPOUND correctly in all cases, we need to use scheme (b) instead of scheme (a). (To construct less artificial examples, just substitute GETATTR for READ in the examples above. This works because the "real" GETATTR is done during XDR encode: one would really have to bend over backwards in order to arrange things otherwise.)
-
Neil Brown authored
NFSv4 need to be able to make from user/group name to user/group id. This include file contains some simple stubs to do this. They will be replaced with something that really works later.
-
Neil Brown authored
This patch changes the 'xdrsize' parameter to svc_create(), to be NFS4_SVC_XDRSIZE if v4 is defined else NFS3_SVC_XDRSIZE if v3 is defined else NFS2_SVC_XDRSIZE (formerly NFSSVC_XDRSIZE) This always works, since NFS4_SVC_XDRSIZE >= NFS3_SVC_XDRSIZE >= NFS2_SVC_XDRSIZE. The value of NFSD_BUFSIZE has also been moved to const.h, since we need the definition available in nfs4proc.c
-
Neil Brown authored
NFSv4 has a concept of a 'root' filehandle (from which all other can be found via LOOKUP, so no need for mountd). This patch defines exp_pseudoroot(), which is used to set the filehandle for the root of the pseudofs. The root is defined to be the export point with fsid == 0.
-
Neil Brown authored
Define fh_dup2(), which copies a _verified_ filehandle, taking care of refcounts accordingly. (This will be used by RESTOREFH/SAVEFH and a few other places.)
-
Neil Brown authored
-
Neil Brown authored
Instantiate a new file include/linux/nfsd/xdr4.h (server-side XDR for NFSv4).
-
Neil Brown authored
All the lockd *_msg requests are implemented by calling the equivalent non- *_msg request and sending off the response as a new message (*_res). For the non- *_msg requests, the response buffer is pre-zeroed by the RPC layer, but the *_msg handlers weren't pre-zeroing the buffer, would could in some circumstances lead to an Oops. Now we pre-zero them all.
-
Neil Brown authored
Thanks to Hirokazu Takahashi <taka@valinux.co.jp>
-