- 17 Nov, 2002 15 commits
-
-
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.
-
Manfred Spraul authored
This adds error handling to the resource allocations in yenta.c: check that request_resource returns success, reduce allocation size if allocate_resource fails, free resources on module unload.
-
Linus Torvalds authored
-
Manfred Spraul authored
This splits poll_table into one structure used by f_op->poll and one structure used by the implemenation of sys_poll/sys_select: poll_table contains just the callback function pointer. struct poll_wrapper additionally contains err and table, i.e. the members used by the poll implementation. Changes: - split poll_table into 2 structures - reorder the declarations in <linux/poll.h> accordingly - uninline poll_initwait().
-
Arnaldo Carvalho de Melo authored
Also fix a printk usage.
-
Arnaldo Carvalho de Melo authored
dquot that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
smbfs that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
pci_hotplug_core that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
ntfs that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
jffs2 that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
intermezzo that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
hugetlbfs that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
cifs that got it implicitly before.
-
Arnaldo Carvalho de Melo authored
quota that got it implicitly before.
-
Davide Libenzi authored
This does: - naming cleanup: ep_* -> eventpoll_* for non-static functions ( 2 ) - No more limit of 2 poll wait queue for each file* Before epoll used to have, inside its item struct, space for two wait queues. This was driven by the fact that during a f_op->poll() each file won't register more than one read and one write wait queue. Now, I'm not sure if this is 100% true or not, but with the current implementation a linked list of wait queues is kept to remove each limit.
-
- 16 Nov, 2002 25 commits
-
-
Matthew Wilcox authored
drivers/base relies on device.h pulling in sched.h pulling in the rest of the world. Add some explicit dependencies in preparation for removing sched.h from device.h.
-
Matthew Wilcox authored
coda_linux simply doesn't need sched.h
-
Matthew Wilcox authored
elf.h simply doesn't need sched.h
-
Matthew Wilcox authored
ftape.h really wants interrupt.h, not sched.h
-
Matthew Wilcox authored
i2c.h simply doesn't need sched.h
-
Matthew Wilcox authored
if_pppox simply doesn't need sched.h
-
Linus Torvalds authored
NFSD users that got it implicitly before.
-
Linus Torvalds authored
-
Christoph Hellwig authored
mmuless ports don't need dup_mmap nor allocation of a pgd. I tried to avoid ifdef-mess as far as possible, and to archive that I created small wrappers for pgd allocation/freeing and move taking of the mmap semaphore into dup_mmap from the only caller. The end result is just one additiona ifdef.
-
Christoph Hellwig authored
It's only need for the two monster-inlines set_fs_root and set_fs_pwd that should better be out of line anyway. Some additional cleanup like named initializers as extra bonus.
-
Christoph Hellwig authored
Once again we only need a forward-declaration of struct vfsmount.
-
Christoph Hellwig authored
This is a preparation to get rid of the implicit includes in dcache.h and fs_struct.h.
-
Christoph Hellwig authored
Remove four dead prototypes and don't include mount.h here - fs.h itself doesn't need it at all (just the struct vfsmount forward declaration) and gets it through dcache.h anyway.
-
Linus Torvalds authored
-
Matthew Wilcox authored
This removes the pci_dev "->name[]" field, and makes users use the "struct device" name field instead. It also trimps it down to 50 bytes and limited the length of the vendor & device descriptions to 20 bytes each. Now we have three cases: - unknown vendor & unknown device -> "PCI device %04x:%04x". Clearly limited to 21 chars. - known vendor, unknown device -> "PCI device %04x:%04x (%.20s)" 24 + 20 chars - known vendor, known device -> "%.20s %.20s" 20 + 1 + 20 + 1, EXCEPT: - multiple devices of the same type add " (#%d)" so 42 + 4 + 4 = 50. This is the point where an IBMer tells me they intend to sell a machine with > 9999 PCI devices of the same type ;-) This limits the PCI IDs to a reasonable amount of space. For release, I think we do want to go back up to 80 for prettier output
-
Matthew Wilcox authored
parport only needs jiffies.h, not sched.h
-
Matthew Wilcox authored
nfsd/cache.h doesn't need sched.h, just sockaddr_in and iovec
-
Matthew Wilcox authored
input.h wants fs.h and timer.h, not sched.h
-
Matthew Wilcox authored
atmdev.h only wants wait.h, not sched.h
-
Matthew Wilcox authored
blkdev.h simply doesn't need sched.h
-
Andrew Morton authored
The inode reclaim is too aggressive at present - it is causing the shootdown of lots of recently-used pagecache. Simple testcase: run a huge `dd' while running a concurrent `watch -n1 cat /proc/meminfo'. The program text for `cat' gets loaded from disk once per second. This is in fact because the dentry_unused reclaim is too aggressive. (The general approach to inode reclaim is that it _not_ happen at the inode level. All the aging and lru activity happens at the dcache level.) The problem is partly due to a bug: shrink_dcache_memory() is returning the *total* number of dentries to the VM, rather than the number of unused dentries. This patch fixes that, and goes a little further. We do want to keep some unused dentries around. Reclaiming the last few thousand dentries is pretty pointless, and will allow reclaim of the last few thousand inodes and their attached pagecache. So the algorithm I have used is to not allow the number of unused dentries to fall below the number of used ones. This keeps a reasonable number of dentries in cache while providing a level of scaling to the system size and the current system activity. (Magic number alert: why not pin nr_unused to seven times nr_used, rather than one times??) shrink_dcache_memory() has been changed to tell the VM that the number of shrinkable dentries is: zero if (nr_unused < nr_used) otherwise (nr_unused - nr_used) so when there is memory pressure the VM will prune the unused dentry cache down to the size of the used dentry cache, but not below that. The patch also arranges (awkwardly) for all modifications of dentry_stat.nr_dentry to occur inside dcache_lock - it was racy.
-
Andrew Morton authored
Replace some kmaps in mpage.c with kmap_atomic.
-
Andrew Morton authored
Stephen Tweedie reports a 2.4.7 problem in which kswapd is chewing lots of CPU trying to reclaim inodes which are pinned by buffer_heads at i_dirty_buffers. This can only happen when there's memory pressure on ZONE_HIGHMEM - the 2.4 kernel runs shrink_icache_memory in that case as well. But there's no reclaim pressure on ZONE_NORMAL so the VM is never running try_to_free_buffers() against the ZONE_NORMAL buffers which are pinning the inodes. The 2.5 kernel also runs the slab shrinkers in response to ZONE_HIGHMEM pressure. This may be wrong - still thinking about that. This patch arranges for prune_icache to try to remove the inode's buffers when the inode is to be reclaimed. It also changes inode_has_buffers() and the other inode-buffer-list functions to look at inode->i_data, not inode->i_mapping. The latter was wrong.
-
Andrew Morton authored
slab does various consistency checks during `cat /proc/slabinfo' processing. If it finds one it stupidly goes BUG just before displaying the info which is required to diagnose the bug. Change it to not go BUG, but to emit some useful printks and continue. The patch also removes an uninteresting printk from the boot process.
-
Andrew Morton authored
Patch from Rohit Seth, changelog from Bill Irwin: (1) fixes failure to clear key->busy (yes, it's always under a lock) (2) fixes key->count being unconditionally set to 1 in alloc_key() (3) reduces search to key->size >> HPAGE_SHIFT from key->size (4) actually uses vma->vm_private_data to release the key as intended plus the cleanup: (5) removes the int *new argument to alloc_key()
-