LWN.net Logo

2.6.7-rc1 long-format changelog

ChangeSet@1.1830, 2004-05-22 22:46:07-07:00, torvalds@ppc970.osdl.org
  Linux 2.6.7-rc1
  TAG: v2.6.7-rc1

ChangeSet@1.1829, 2004-05-22 22:26:09-07:00, roland@redhat.com
  [PATCH] bogus sigaltstack calls by rt_sigreturn
  
  There is a longstanding bug in the rt_sigreturn system call.
  This exists in both 2.4 and 2.6, and for almost every platform.
  
  I am referring to this code in sys_rt_sigreturn (arch/i386/kernel/signal.c):
  
  	if (__copy_from_user(&st, &frame->uc.uc_stack, sizeof(st)))
  		goto badframe;
  	/* It is more difficult to avoid calling this function than to
  	   call it and ignore errors.  */
  	/*
  	 * THIS CANNOT WORK! "&st" is a kernel address, and "do_sigaltstack()"
  	 * takes a user address (and verifies that it is a user address). End
  	 * result: it does exactly _nothing_.
  	 */
  	do_sigaltstack(&st, NULL, regs->esp);
  
  As the comment says, this is bogus.  On vanilla i386 kernels, this is just
  harmlessly stupid--do_sigaltstack always does nothing and returns -EFAULT.
  
  However this code actually bites users on kernels using Ingo Molnar's 4G/4G
  address space layout changes.  There some kernel stack address might very
  well be a lovely and readable user address as well.  When that happens, we
  make a sigaltstack call with some random buffer, and then the fun begins.
  
  To my knowledge, this has produced trouble in the real world only for 4G
  i386 kernels (RHEL and Fedora "hugemem" kernels) on machines that actually
  have several GB of physical memory (and in programs that are actually using
  sigaltstack and handling a lot of signals).  However, the same clearly
  broken code has been blindly copied to most other architecture ports, and
  off hand I don't know the address space details of any other well enough to
  know if real kernel stack addresses and real user addresses are in fact
  disjoint as they are on i386 when not using the nonstandard 4GB address
  space layout.
  
  The obvious intent of the call being there in the first place is to permit
  a signal handler to diddle its ucontext_t.uc_stack before returning, and
  have this effect a sigaltstack call on the signal handler return.  This is
  not only an optimization vs doing the extra system call, but makes it
  possible to make a sigaltstack change when that handler itself was running
  on the signal stack.  AFAICT this has never actually worked before, so
  certainly noone depends on it.  But the code certainly suggests that
  someone intended at one time for that to be the behavior.  Thus I am
  inclined to fix it so it works in that way, though it has not done so before.
  It would also be reasonable enough to simply rip out the bogus call and not
  have this functionality.
  
  From the current state of code in both 2.4 and 2.6, there is no fathoming
  how this broken code came about.  It's actually much simpler to just make
  it work!  I can only presume that at some point in the past the sigaltstack
  implementation functions were different such that this made sense.  Of the
  few ports I've looked at briefly, only the ppc/pc64 porters (go paulus!)
  actually tried to understand what the i386 code was doing and implemented
  it correctly rather than just carefully transliterating the bug.
  
  The patch below fixes only the i386 and x86_64 versions.  The x86_64
  patches I have not actually tested.  I think each and every arch (except
  ppc and ppc64) need to make the corresponding fixes as well.  Note that
  there is a function to fix for each native arch, and then one for each
  emulation flavor.  The details differ minutely for getting the calls right
  in each emulation flavor, but I think that most or all of the arch's with
  biarch/emulation support have similar enough code that each emulation
  flavor's fix will look very much like the arch/x86_64/ia32/ia32_signal.c
  patch here.

ChangeSet@1.1828, 2004-05-22 22:10:33-07:00, akpm@osdl.org
  [PATCH] partial prefetch for vma_prio_tree_next
  
  From: Rajesh Venkatasubramanian <vrajesh@umich.edu>
  
  This patch adds prefetches for walking a vm_set.list.  Adding prefetches
  for prio tree traversals is tricky and may lead to cache trashing.  So this
  patch just adds prefetches only when walking a vm_set.list.
  
  I haven't done any benchmarks to show that this patch improves performance.
   However, this patch should help to improve performance when vm_set.lists
  are long, e.g., libc.  Since we only prefetch vmas that are guaranteed to
  be used in the near future, this patch should not result in cache trashing,
  theoretically.
  
  I didn't add any NULL checks before prefetching because prefetch.h clearly
  says prefetch(0) is okay.

ChangeSet@1.1827, 2004-05-22 22:10:23-07:00, akpm@osdl.org
  [PATCH] rmap 40 better anon_vma sharing
  
  From: Hugh Dickins <hugh@veritas.com>
  
  anon_vma rmap will always necessarily be more restrictive about vma merging
  than before: according to the history of the vmas in an mm, they are liable to
  be allocated different anon_vma heads, and from that point on be unmergeable.
  
  Most of the time this doesn't matter at all; but in two cases it may matter.
  One case is that mremap refuses (-EFAULT) to span more than a single vma: so
  it is conceivable that some app has relied on vma merging prior to mremap in
  the past, and will now fail with anon_vma.  Conceivable but unlikely, let's
  cross that bridge if we come to it: and the right answer would be to extend
  mremap, which should not be exporting the kernel's implementation detail of
  vma to user interface.
  
  The other case that matters is when a reasonable repetitive sequence of
  syscalls and faults ends up with a large number of separate unmergeable vmas,
  instead of the single merged vma it could have.
  
  Andrea's mprotect-vma-merging patch fixed some such instances, but left other
  plausible cases unmerged.  There is no perfect solution, and the harder you
  try to allow vmas to be merged, the less efficient anon_vma becomes, in the
  extreme there being one to span the whole address space, from which hangs
  every private vma; but anonmm rmap is clearly superior to that extreme.
  
  Andrea's principle was that neighbouring vmas which could be mprotected into
  mergeable vmas should be allowed to share anon_vma: good insight.  His
  implementation was to arrange this sharing when trying vma merge, but that
  seems to be too early.  This patch sticks to the principle, but implements it
  in anon_vma_prepare, when handling the first write fault on a private vma:
  with better results.  The drawback is that this first write fault needs an
  extra find_vma_prev (whereas prev was already to hand when implementing
  anon_vma sharing at try-to-merge time).

ChangeSet@1.1826, 2004-05-22 22:10:11-07:00, akpm@osdl.org
  [PATCH] rmap 39 add anon_vma rmap
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Andrea Arcangeli's anon_vma object-based reverse mapping scheme for anonymous
  pages.  Instead of tracking anonymous pages by pte_chains or by mm, this
  tracks them by vma.  But because vmas are frequently split and merged
  (particularly by mprotect), a page cannot point directly to its vma(s), but
  instead to an anon_vma list of those vmas likely to contain the page - a list
  on which vmas can easily be linked and unlinked as they come and go.  The vmas
  on one list are all related, either by forking or by splitting.
  
  This has three particular advantages over anonmm: that it can cope
  effortlessly with mremap moves; and no longer needs page_table_lock to protect
  an mm's vma tree, since try_to_unmap finds vmas via page -> anon_vma -> vma
  instead of using find_vma; and should use less cpu for swapout since it can
  locate its anonymous vmas more quickly.
  
  It does have disadvantages too: a lot more change in mmap.c to deal with
  anon_vmas, though small straightforward additions now that the vma merging has
  been refactored there; more lowmem needed for each anon_vma and vma structure;
  an additional restriction on the merging of vmas (cannot be merged if already
  assigned different anon_vmas, since then their pages will be pointing to
  different heads).
  
  (There would be no need to enlarge the vma structure if anonymous pages
  belonged only to anonymous vmas; but private file mappings accumulate
  anonymous pages by copy-on-write, so need to be listed in both anon_vma and
  prio_tree at the same time.  A different implementation could avoid that by
  using anon_vmas only for purely anonymous vmas, and use the existing prio_tree
  to locate cow pages - but that would involve a long search for each single
  private copy, probably not a good idea.)
  
  Where before the vm_pgoff of a purely anonymous (not file-backed) vma was
  meaningless, now it represents the virtual start address at which that vma is
  mapped - which the standard file pgoff manipulations treat linearly as vmas
  are split and merged.  But if mremap moves the vma, then it generally carries
  its original vm_pgoff to the new location, so pages shared with the old
  location can still be found.  Magic.
  
  Hugh has massaged it somewhat: building on the earlier rmap patches, this
  patch is a fifth of the size of Andrea's original anon_vma patch.  Please note
  that this posting will be his first sight of this patch, which he may or may
  not approve.

ChangeSet@1.1825, 2004-05-22 22:10:00-07:00, akpm@osdl.org
  [PATCH] rmap 38 remove anonmm rmap
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Before moving on to anon_vma rmap, remove now what's peculiar to anonmm rmap:
  the anonmm handling and the mremap move cows.  Temporarily reduce
  page_referenced_anon and try_to_unmap_anon to stubs, so a kernel built with
  this patch will not swap anonymous at all.

ChangeSet@1.1824, 2004-05-22 22:09:49-07:00, akpm@osdl.org
  [PATCH] rmap 37 page_add_anon_rmap vma
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Silly final patch for anonmm rmap: change page_add_anon_rmap's mm arg to vma
  arg like anon_vma rmap, to smooth the transition between them.

ChangeSet@1.1823, 2004-05-22 22:09:38-07:00, akpm@osdl.org
  [PATCH] rmap 36 mprotect use vma_merge
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Earlier on, in 2.6.6, we took the vma merging code out of mremap.c and let it
  rely on vma_merge instead (via copy_vma).  Now take the vma merging code out
  of mprotect.c and let it rely on vma_merge too: so vma_merge becomes the sole
  vma merging engine.  The fruit of this consolidation is that mprotect now
  merges file-backed vmas naturally.  Make this change now because anon_vma will
  complicate the vma merging rules, let's keep them all in one place.
  
  vma_merge remains where the decisions are made, whether to merge with prev
  and/or next; but now [addr,end) may be the latter part of prev, or first part
  or whole of next, whereas before it was always a new area.
  
  vma_adjust carries out vma_merge's decision, but when sliding the boundary
  between vma and next, must temporarily remove next from the prio_tree too. 
  And it turned out (by oops) to have a surer idea of whether next needs to be
  removed than vma_merge, so the fput and freeing moves into vma_adjust.
  
  Too much decipherment of what's going on at the start of vma_adjust?  Yes, and
  there's a delicate assumption that you may use vma_adjust in sliding a
  boundary, or splitting in two, or growing a vma (mremap uses it in that way),
  but not for simply shrinking a vma.  Which is so, and must be so (how could
  pages mapped in the part to go, be zapped without first splitting?), but would
  feel better with some protection.
  
  __vma_unlink can then be moved from mm.h to mmap.c, and mm.h's more misleading
  than helpful can_vma_merge is deleted.

ChangeSet@1.1822, 2004-05-22 22:09:27-07:00, akpm@osdl.org
  [PATCH] rmap 35 mmap.c cleanups
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Before some real vma_merge work in mmap.c in the next patch, a patch of
  miscellaneous cleanups to cut down the noise:
  
  - remove rb_parent arg from vma_merge: mm->mmap can do that case
  - scatter pgoff_t around to ingratiate myself with the boss
  - reorder is_mergeable_vma tests, vm_ops->close is least likely
  - can_vma_merge_before take combined pgoff+pglen arg (from Andrea)
  - rearrange do_mmap_pgoff's ever-confusing anonymous flags switch
  - comment do_mmap_pgoff's mysterious (vm_flags & VM_SHARED) test
  - fix ISO C90 warning on browse_rb if building with DEBUG_MM_RB
  - stop that long MNT_NOEXEC line wrapping
  
  Yes, buried in amidst these is indeed one pgoff replaced by "next->vm_pgoff -
  pglen" (reverting a mod of mine which took pgoff supplied by user too
  seriously in the anon case), and another pgoff replaced by 0 (reverting
  anon_vma mod which crept in with NUMA API): neither of them really matters,
  except perhaps in /proc/pid/maps.

ChangeSet@1.1821, 2004-05-22 22:09:16-07:00, akpm@osdl.org
  [PATCH] rmap 34 vm_flags page_table_lock
  
  From: Hugh Dickins <hugh@veritas.com>
  
  First of a batch of seven rmap patches, based on 2.6.6-mm3.  Probably the
  final batch: remaining issues outstanding can have isolated patches.  The
  first half of the batch is good for anonmm or anon_vma, the second half of the
  batch replaces my anonmm rmap by Andrea's anon_vma rmap.
  
  Judge for yourselves which you prefer.  I do think I was wrong to call
  anon_vma more complex than anonmm (its lists are easier to understand than my
  refcounting), and I'm happy with its vma merging after the last patch.  It
  just comes down to whether we can spare the extra 24 bytes (maximum, on
  32-bit) per vma for its advantages in swapout and mremap.
  
  rmap 34 vm_flags page_table_lock
  
  Why do we guard vm_flags mods with page_table_lock when it's already
  down_write guarded by mmap_sem?  There's probably a historical reason, but no
  sign of any need for it now.  Andrea added a comment and removed the instance
  from mprotect.c, Hugh plagiarized his comment and removed the instances from
  madvise.c and mlock.c.  Huge leap in scalability...  not expected; but this
  should stop people asking why those spinlocks.

ChangeSet@1.1820, 2004-05-22 22:09:05-07:00, akpm@osdl.org
  [PATCH] rmap 33 install_arg_page vma
  
  From: Hugh Dickins <hugh@veritas.com>
  
  anon_vma will need to pass vma to put_dirty_page, so change it and its
  various callers (setup_arg_pages and its 32-on-64-bit arch variants); and
  please, let's rename it to install_arg_page.
  
  Earlier attempt to do this (rmap 26 __setup_arg_pages) tried to clean up
  those callers instead, but failed to boot: so now apply rmap 27's memset
  initialization of vmas to these callers too; which relieves them from
  needing the recently included linux/mempolicy.h.
  
  While there, moved install_arg_page's flush_dcache_page up before
  page_table_lock - doesn't in fact matter at all, just saves one worry when
  researching flush_dcache_page locking constraints.

ChangeSet@1.1819, 2004-05-22 22:08:54-07:00, akpm@osdl.org
  [PATCH] rmap 32 zap_pmd_range wrap
  
  From: Hugh Dickins <hugh@veritas.com>
  
  From: Andrea Arcangeli <andrea@suse.de>
  
  zap_pmd_range, alone of all those page_range loops, lacks the check for
  whether address wrapped.  Hugh is in doubt as to whether this makes any
  difference to any config on any arch, but eager to fix the odd one out.

ChangeSet@1.1818, 2004-05-22 22:08:43-07:00, akpm@osdl.org
  [PATCH] rmap 31 unlikely bad memory
  
  From: Hugh Dickins <hugh@veritas.com>
  
  From: Andrea Arcangeli <andrea@suse.de>
  
  Sprinkle unlikelys throughout mm/memory.c, wherever we see a pgd_bad or a
  pmd_bad; likely or unlikely on pte_same or !pte_same.  Put the jump in the
  error return from do_no_page, not in the fast path.

ChangeSet@1.1817, 2004-05-22 22:08:33-07:00, akpm@osdl.org
  [PATCH] rmap 30 fix bad mapcount
  
  From: Hugh Dickins <hugh@veritas.com>
  
  From: Andrea Arcangeli <andrea@suse.de>
  
  page_alloc.c's bad_page routine should reset a bad mapcount; and it's more
  revealing to show the bad mapcount than just the boolean mapped.

ChangeSet@1.1816, 2004-05-22 22:08:22-07:00, akpm@osdl.org
  [PATCH] rmap 29 VM_RESERVED safety
  
  From: Hugh Dickins <hugh@veritas.com>
  
  From: Andrea Arcangeli <andrea@suse.de>
  
  Set VM_RESERVED in videobuf_mmap_mapper, to warn do_no_page and swapout not to
  worry about its pages.  Set VM_RESERVED in ia64_elf32_init, it too provides an
  unusual nopage which might surprise higher level checks.  Future safety: they
  don't actually pose a problem in this current tree.

ChangeSet@1.1815, 2004-05-22 22:08:11-07:00, akpm@osdl.org
  [PATCH] rmap 28 remove_vm_struct
  
  From: Hugh Dickins <hugh@veritas.com>
  
  The callers of remove_shared_vm_struct then proceed to do several more
  identical things: gather them together in remove_vm_struct.

ChangeSet@1.1814, 2004-05-22 22:08:00-07:00, akpm@osdl.org
  [PATCH] rmap 27 memset 0 vma
  
  From: Hugh Dickins <hugh@veritas.com>
  
  We're NULLifying more and more fields when initializing a vma
  (mpol_set_vma_default does that too, if configured to do anything).  Now use
  memset to avoid specifying fields, and save a little code too.
  
  (Yes, I realize anon_vma will want to set vm_pgoff non-0, but I think that
  will be better handled at the core, since anon vm_pgoff is negotiable up until
  an anon_vma is actually assigned.)

ChangeSet@1.1813, 2004-05-22 22:07:49-07:00, akpm@osdl.org
  [PATCH] rmap 24 no rmap fastcalls
  
  From: Hugh Dickins <hugh@veritas.com>
  
  I like CONFIG_REGPARM, even when it's forced on: because it's easy to force
  off for debugging - easier than editing out scattered fastcalls.  Plus I've
  never understood why we make function foo a fastcall, but function bar not.
  Remove fastcall directives from rmap.  And fix comment about mremap_moved
  race: it only applies to anon pages.

ChangeSet@1.1812, 2004-05-22 22:07:38-07:00, akpm@osdl.org
  [PATCH] rmap 23 empty flush_dcache_mmap_lock
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Most architectures (like i386) do nothing in flush_dcache_page, or don't scan
  i_mmap in flush_dcache_page, so don't need flush_dcache_mmap_lock to do
  anything: define it and flush_dcache_mmap_unlock away.  Noticed arm26, cris,
  h8300 still defining flush_page_to_ram: delete it again.

ChangeSet@1.1811, 2004-05-22 22:07:26-07:00, akpm@osdl.org
  [PATCH] rmap 22 flush_dcache_mmap_lock
  
  From: Hugh Dickins <hugh@veritas.com>
  
  arm and parisc __flush_dcache_page have been scanning the i_mmap(_shared) list
  without locking or disabling preemption.  That may be even more unsafe now
  it's a prio tree instead of a list.
  
  It looks like we cannot use i_shared_lock for this protection: most uses of
  flush_dcache_page are okay, and only one would need lock ordering fixed
  (get_user_pages holds page_table_lock across flush_dcache_page); but there's a
  few (e.g.  in net and ntfs) which look as if they're using it in I/O
  completion - and it would be restrictive to disallow it there.
  
  So, on arm and parisc only, define flush_dcache_mmap_lock(mapping) as
  spin_lock_irq(&(mapping)->tree_lock); on i386 (and other arches left to the
  next patch) define it away to nothing; and use where needed.
  
  While updating locking hierarchy in filemap.c, remove two layers of the fossil
  record from add_to_page_cache comment: no longer used for swap.
  
  I believe all the #includes will work out, but have only built i386.  I can
  see several things about this patch which might cause revulsion: the name
  flush_dcache_mmap_lock?  the reuse of the page radix_tree's tree_lock for this
  different purpose?  spin_lock_irqsave instead?  can't we somehow get
  i_shared_lock to handle the problem?

ChangeSet@1.1810, 2004-05-22 22:07:15-07:00, akpm@osdl.org
  [PATCH] rmap 21 try_to_unmap_one mapcount
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Why should try_to_unmap_anon and try_to_unmap_file take a copy of
  page->mapcount and pass it down for try_to_unmap_one to decrement?  why not
  just check page->mapcount itself?  asks akpm.  Perhaps there used to be a good
  reason, but not any more: remove the mapcount arg.

ChangeSet@1.1809, 2004-05-22 22:07:04-07:00, akpm@osdl.org
  [PATCH] rmap 20 i_mmap_shared into i_mmap
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Why should struct address_space have separate i_mmap and i_mmap_shared
  prio_trees (separating !VM_SHARED and VM_SHARED vmas)?  No good reason, the
  same processing is usually needed on both.  Merge i_mmap_shared into i_mmap,
  but keep i_mmap_writable count of VM_SHARED vmas (those capable of dirtying
  the underlying file) for the mapping_writably_mapped test.
  
  The VM_MAYSHARE test in the arm and parisc loops is not necessarily what they
  will want to use in the end: it's provided as a harmless example of what might
  be appropriate, but maintainers are likely to revise it later (that parisc
  loop is currently being changed in the parisc tree anyway).
  
  On the way, remove the now out-of-date comments on vm_area_struct size.

ChangeSet@1.1808, 2004-05-22 22:06:53-07:00, akpm@osdl.org
  [PATCH] rmap.c comment/style fixups
  
  From: Christoph Hellwig <hch@lst.de>

ChangeSet@1.1807, 2004-05-22 22:06:42-07:00, akpm@osdl.org
  [PATCH] vm_area_struct size comment
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Missed comment on the size of vm_area_struct: it is no longer 64 bytes on
  ia32.

ChangeSet@1.1806, 2004-05-22 22:06:32-07:00, akpm@osdl.org
  [PATCH] rmap 19: arch prio_tree
  
  From: Hugh Dickins <hugh@veritas.com>
  
  The previous patches of this prio_tree batch have been to generic only.  Now
  the arm and parisc __flush_dcache_page are converted to using
  vma_prio_tree_next, and benefit from its selection of relevant vmas.  They're
  still accessing the tree without i_shared_lock or any other, that's not
  forgotten but still under investigation.  Include pagemap.h for the definition
  of PAGE_CACHE_SHIFT.  s390 and x86_64 no longer initialize vma's shared field
  (whose type has changed), done later.

ChangeSet@1.1805, 2004-05-22 22:06:21-07:00, akpm@osdl.org
  [PATCH] unmap_mapping_range: add comment

ChangeSet@1.1804, 2004-05-22 22:06:10-07:00, akpm@osdl.org
  [PATCH] rmap 18: i_mmap_nonlinear
  
  From: Hugh Dickins <hugh@veritas.com>
  
  The prio_tree is of no use to nonlinear vmas: currently we're having to search
  the tree in the most inefficient way to find all its nonlinears.  At the very
  least we need an indication of the unlikely case when there are some
  nonlinears; but really, we'd do best to take them out of the prio_tree
  altogether, into a list of their own - i_mmap_nonlinear.

ChangeSet@1.1803, 2004-05-22 22:05:59-07:00, akpm@osdl.org
  [PATCH] rmap 17: real prio_tree
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Rajesh Venkatasubramanian's implementation of a radix priority search tree of
  vmas, to handle object-based reverse mapping corner cases well.
  
  Amongst the objections to object-based rmap were test cases by akpm and by
  mingo, in which large numbers of vmas mapping disjoint or overlapping parts of
  a file showed strikingly poor performance of the i_mmap lists.  Perhaps those
  tests are irrelevant in the real world?  We cannot be too sure: the prio_tree
  is well-suited to solving precisely that problem, so unless it turns out to
  bring too much overhead, let's include it.
  
  Why is this prio_tree.c placed in mm rather than lib?  See GET_INDEX: this
  implementation is geared throughout to use with vmas, though the first half of
  the file appears more general than the second half.
  
  Each node of the prio_tree is itself (contained within) a vma: might save
  memory by allocating distinct nodes from which to hang vmas, but wouldn't save
  much, and would complicate the usage with preallocations.  Off each node of
  the prio_tree itself hangs a list of like vmas, if any.
  
  The connection from node to list is a little awkward, but probably the best
  compromise: it would be more straightforward to list likes directly from the
  tree node, but that would use more memory per vma, for the list_head and to
  identify that head.  Instead, node's shared.vm_set.head points to next vma
  (whose shared.vm_set.head points back to node vma), and that next contains the
  list_head from which the rest hang - reusing fields already used in the
  prio_tree node itself.
  
  Currently lacks prefetch: Rajesh hopes to add some soon.

ChangeSet@1.1802, 2004-05-22 22:05:47-07:00, akpm@osdl.org
  [PATCH] rmap 16: pretend prio_tree
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Pave the way for prio_tree by switching over to its interfaces, but actually
  still implement them with the same old lists as before.
  
  Most of the vma_prio_tree interfaces are straightforward.  The interesting one
  is vma_prio_tree_next, used to search the tree for all vmas which overlap the
  given range: unlike the list_for_each_entry it replaces, it does not find
  every vma, just those that match.
  
  But this does leave handling of nonlinear vmas in a very unsatisfactory state:
  for now we have to search again over the maximum range to find all the
  nonlinear vmas which might contain a page, which of course takes away the
  point of the tree.  Fixed in later patch of this batch.
  
  There is no need to initialize vma linkage all over, just do it before
  inserting the vma in list or tree.  /proc/pid/statm had an odd test for its
  shared count: simplified to an equivalent test on vm_file.

ChangeSet@1.1801, 2004-05-22 22:05:35-07:00, akpm@osdl.org
  [PATCH] rmap 15: vma_adjust
  
  From: Hugh Dickins <hugh@veritas.com>
  
  If file-based vmas are to be kept in a tree, according to the file offsets
  they map, then adjusting the vma's start pgoff or its end involves
  repositioning in the tree, while holding i_shared_lock (and page_table_lock). 
  We used to avoid that if possible, e.g.  when just moving end; but if we're
  heading that way, let's now tidy up vma_merge and split_vma, and do all the
  locking and adjustment in a new helper vma_adjust.  And please, let's call the
  next vma in vma_merge "next" rather than "prev".
  
  Since these patches are diffed over 2.6.6-rc2-mm2, they include the NUMA
  mpolicy mods which you'll have to remove to go earlier in the series, sorry
  for that nuisance.  I have intentionally changed the one vma_mpol_equal to
  mpol_equal, to make the merge cases more alike.

ChangeSet@1.1800, 2004-05-22 22:05:24-07:00, akpm@osdl.org
  [PATCH] numa api: fix end of memory handling in mbind
  
  From: Andi Kleen <ak@suse.de>
  
  This fixes a user triggerable crash in mbind() in NUMA API.  It would oops
  when running into the end of memory.  Actually not really oops, because a
  oops with the mm sem hold for writing always deadlocks.

ChangeSet@1.1799, 2004-05-22 22:05:14-07:00, akpm@osdl.org
  [PATCH] numa api: Add policy support to anonymous  memory
  
  From: Andi Kleen <ak@suse.de>
  
  Change to core VM to use alloc_page_vma() instead of alloc_page().
  
  Change the swap readahead to follow the policy of the VMA.

ChangeSet@1.1798, 2004-05-22 22:05:02-07:00, akpm@osdl.org
  [PATCH] numa api: Add statistics
  
  From: Andi Kleen <ak@suse.de>
  
  Add NUMA hit/miss statistics to page allocation and display them in sysfs.
  
  This is not 100% required for NUMA API, but without this it is very
  
  The overhead is quite low because all counters are per CPU and only happens
  when CONFIG_NUMA is defined.

ChangeSet@1.1797, 2004-05-22 22:04:51-07:00, akpm@osdl.org
  [PATCH] small numa api fixups
  
  From: Christoph Hellwig <hch@lst.de>
  
  - don't include mempolicy.h in sched.h and mm.h when a forward delcaration
    is enough.  Andi argued against that in the past, but I'd really hate to add
    another header to two of the includes used in basically every driver when we
    can include it in the six files actually needing it instead (that number is
    for my ppc32 system, maybe other arches need more include in their
    directories)
  
  - make numa api fields in tast_struct conditional on CONFIG_NUMA, this gives
    us a few ugly ifdefs but avoids wasting memory on non-NUMA systems.

ChangeSet@1.1796, 2004-05-22 22:04:40-07:00, akpm@osdl.org
  [PATCH] numa api: Add shared memory support
  
  From: Andi Kleen <ak@suse.de>
  
  Add support to tmpfs and hugetlbfs to support NUMA API.  Shared memory is a
  bit of a special case for NUMA policy.  Normally policy is associated to VMAs
  or to processes, but for a shared memory segment you really want to share the
  policy.  The core NUMA API has code for that, this patch adds the necessary
  changes to tmpfs and hugetlbfs.
  
  First it changes the custom swapping code in tmpfs to follow the policy set
  via VMAs.
  
  It is also useful to have a "backing store" of policy that saves the policy
  even when nobody has the shared memory segment mapped.  This allows command
  line tools to pre configure policy, which is then later used by programs.
  
  Note that hugetlbfs needs more changes - it is also required to switch it to
  lazy allocation, otherwise the prefault prevents mbind() from working.

ChangeSet@1.1795, 2004-05-22 22:04:29-07:00, akpm@osdl.org
  [PATCH] numa api: Add VMA hooks for policy
  
  From: Andi Kleen <ak@suse.de>
  
  NUMA API adds a policy to each VMA.  During VMA creattion, merging and
  splitting these policies must be handled properly.  This patch adds the calls
  to this. 
  
  It is a nop when CONFIG_NUMA is not defined.

ChangeSet@1.1794, 2004-05-22 22:04:17-07:00, akpm@osdl.org
  [PATCH] Re-add NUMA API statistics
  
  From: Andi Kleen <ak@suse.de>
  
  Patch readds the sysfs output of the NUMA API statistics.  All my test
  scripts need this and it is very useful to check if the policy actually
  works.
  
  This got lost when the huge page numa api changes got dropped.
  
  I decided to not resend the huge pages NUMA API changes for now.  Instead I
  will wait for this area to settle when demand paged large pages is merged.

ChangeSet@1.1793, 2004-05-22 22:04:06-07:00, akpm@osdl.org
  [PATCH] numa api core: use SLAB_PANIC

ChangeSet@1.1792, 2004-05-22 22:03:56-07:00, akpm@osdl.org
  [PATCH] mpol in copy_vma
  
  From: Hugh Dickins <hugh@veritas.com>
  
  I think Andi missed the copy_vma I recently added for mremap, and it'll
  need something like below....  (Doesn't look like it'll optimize away when
  it's not needed - rather bloaty.)

ChangeSet@1.1791, 2004-05-22 22:03:39-07:00, akpm@osdl.org
  [PATCH] numa api: Core NUMA API code
  
  From: Andi Kleen <ak@suse.de>
  
  The following patches add support for configurable NUMA memory policy
  for user processes. It is based on the proposal from last kernel summit
  with feedback from various people.
  
  This NUMA API doesn't not attempt to implement page migration or anything
  else complicated: all it does is to police the allocation when a page
  is first allocation or when a page is reallocated after swapping. Currently
  only support for shared memory and anonymous memory is there; policy for
  file based mappings is not implemented yet (although they get implicitely
  policied by the default process policy)
  
  It adds three new system calls: mbind to change the policy of a VMA,
  set_mempolicy to change the policy of a process, get_mempolicy to retrieve
  memory policy. User tools (numactl, libnuma, test programs, manpages) can be
  found in  ftp://ftp.suse.com/pub/people/ak/numa/numactl-0.6.tar.gz
  
  For details on the system calls see the manpages
  http://www.firstfloor.org/~andi/mbind.html
  http://www.firstfloor.org/~andi/set_mempolicy.html
  http://www.firstfloor.org/~andi/get_mempolicy.html
  Most user programs should actually not use the system calls directly,
  but use the higher level functions in libnuma
  (http://www.firstfloor.org/~andi/numa.html) or the command line tools
  (http://www.firstfloor.org/~andi/numactl.html
  
  The system calls allow user programs and administors to set various NUMA memory
  policies for putting memory on specific nodes. Here is a short description
  of the policies copied from the kernel patch:
  
   * NUMA policy allows the user to give hints in which node(s) memory should
   * be allocated.
   *
   * Support four policies per VMA and per process:
   *
   * The VMA policy has priority over the process policy for a page fault.
   *
   * interleave     Allocate memory interleaved over a set of nodes,
   *                with normal fallback if it fails.
   *                For VMA based allocations this interleaves based on the
   *                offset into the backing object or offset into the mapping
   *                for anonymous memory. For process policy an process counter
   *                is used.
   * bind           Only allocate memory on a specific set of nodes,
   *                no fallback.
   * preferred      Try a specific node first before normal fallback.
   *                As a special case node -1 here means do the allocation
   *                on the local CPU. This is normally identical to default,
   *                but useful to set in a VMA when you have a non default
   *                process policy.
   * default        Allocate on the local node first, or when on a VMA
   *                use the process policy. This is what Linux always did
   *                in a NUMA aware kernel and still does by, ahem, default.
   *
   * The process policy is applied for most non interrupt memory allocations
   * in that process' context. Interrupts ignore the policies and always
   * try to allocate on the local CPU. The VMA policy is only applied for memory
   * allocations for a VMA in the VM.
   *
   * Currently there are a few corner cases in swapping where the policy
   * is not applied, but the majority should be handled. When process policy
   * is used it is not remembered over swap outs/swap ins.
   *
   * Only the highest zone in the zone hierarchy gets policied. Allocations
   * requesting a lower zone just use default policy. This implies that
   * on systems with highmem kernel lowmem allocation don't get policied.
   * Same with GFP_DMA allocations.
   *
   * For shmfs/tmpfs/hugetlbfs shared memory the policy is shared between
   * all users and remembered even when nobody has memory mapped.
  
  
  
  
  This patch:
  
  This is the core NUMA API code. This includes NUMA policy aware
  wrappers for get_free_pages and alloc_page_vma(). On non NUMA kernels
  these are defined away.
  
  The system calls mbind (see http://www.firstfloor.org/~andi/mbind.html),
  get_mempolicy (http://www.firstfloor.org/~andi/get_mempolicy.html) and
  set_mempolicy (http://www.firstfloor.org/~andi/set_mempolicy.html) are
  implemented here.
  
  Adds a vm_policy field to the VMA and to the process. The process
  also has field for interleaving. VMA interleaving uses the offset
  into the VMA, but that's not possible for process allocations.
  
  From: Andi Kleen <ak@muc.de>
  
    > Andi, how come policy_vma() calls ->set_policy under i_shared_sem?
  
    I think this can be actually dropped now.  In an earlier version I did
    walk the vma shared list to change the policies of other mappings to the
    same shared memory region.  This turned out too complicated with all the
    corner cases, so I eventually gave in and added ->get_policy to the fast
    path.  Also there is still the mmap_sem which prevents races in the same MM.
     
  
    Patch to remove it attached.  Also adds documentation and removes the
    bogus __alloc_page_vma() prototype noticed by hch.
  
  From: Andi Kleen <ak@suse.de>
  
    A few incremental fixes for NUMA API.
  
    - Fix a few comments
  
    - Add a compat_ function for get_mem_policy I considered changing the
      ABI to avoid this, but that would have made the API too ugly.  I put it
      directly into the file because a mm/compat.c didn't seem worth it just for
      this.
  
    - Fix the algorithm for VMA interleave.
  
  From: Matthew Dobson <colpatch@us.ibm.com>
  
    1) Move the extern of alloc_pages_current() into #ifdef CONFIG_NUMA.
      The only references to the function are in NUMA code in mempolicy.c
  
    2) Remove the definitions of __alloc_page_vma().  They aren't used.
  
    3) Move forward declaration of struct vm_area_struct to top of file.

ChangeSet@1.1790, 2004-05-22 22:03:26-07:00, akpm@osdl.org
  [PATCH] numa api: Add IA64 support
  
  From: Andi Kleen <ak@suse.de>
  
  Add NUMA API system calls on IA64 and one bug fix required for it.

ChangeSet@1.1789, 2004-05-22 22:03:15-07:00, akpm@osdl.org
  [PATCH] numa api: Add i386 support
  
  From: Andi Kleen <ak@suse.de>
  
  Add NUMA API system calls for i386

ChangeSet@1.1788, 2004-05-22 22:03:04-07:00, akpm@osdl.org
  [PATCH] numa api: x86_64 support
  
  From: Andi Kleen <ak@suse.de>
  
  Add NUMA API system calls on x86-64
  
  This includes a bugfix to prevent miscompilation on gcc 3.2 of bitmap.h

ChangeSet@1.1787, 2004-05-22 22:02:50-07:00, akpm@osdl.org
  [PATCH] rmap 14: i_shared_lock fixes
  
  From: Hugh Dickins <hugh@veritas.com>
  
  First of batch of six patches which introduce Rajesh Venkatasubramanian's
  implementation of a radix priority search tree of vmas, to handle object-based
  reverse mapping corner cases well.
  
  rmap 14 i_shared_lock fixes
  
  Start the sequence with a couple of outstanding i_shared_lock fixes.
  
  Since i_shared_sem became i_shared_lock, we've had to shift and then
  temporarily remove mremap move's protection of concurrent truncation - if
  mremap moves ptes while unmap_mapping_range_list is making its way through the
  vmas, there's a danger we'd move a pte from an area yet to be cleaned back
  into an area already cleared.
  
  Now site the i_shared_lock with the page_table_lock in move_one_page.  Replace
  page_table_present by get_one_pte_map, so we know when it's necessary to
  allocate a new page table: in which case have to drop i_shared_lock, trylock
  and perhaps reorder locks on the way back.  Yet another fix: must check for
  NULL dst before pte_unmap(dst).
  
  And over in rmap.c, try_to_unmap_file's cond_resched amidst its lengthy
  nonlinear swapping was now causing might_sleep warnings: moved to a rather
  unsatisfactory and less frequent cond_resched_lock on i_shared_lock when we
  reach the end of the list; and one before starting on the nonlinears too: the
  "cursor" may become out-of-date if we do schedule, but I doubt it's worth
  bothering about.

ChangeSet@1.1786, 2004-05-22 22:02:36-07:00, akpm@osdl.org
  [PATCH] Convert i_shared_sem back to a spinlock
  
  Having a semaphore in there causes modest performance regressions on heavily
  mmap-intensive workloads on some hardware.  Specifically, up to 30% in SDET on
  NUMAQ and big PPC64.
  
  So switch it back to being a spinlock.  This does mean that unmap_vmas() needs
  to be told whether or not it is allowed to schedule away; that's simple to do
  via the zap_details structure.
  
  This change means that there will be high scheuling latencies when someone
  truncates a large file which is currently mmapped, but nobody does that
  anyway.  The scheduling points in unmap_vmas() are mainly for munmap() and
  exit(), and they still will work OK for that.
  
  From: Hugh Dickins <hugh@veritas.com>
  
    Sorry, my premature optimizations (trying to pass down NULL zap_details
    except when needed) have caught you out doubly: unmap_mapping_range_list was
    NULLing the details even though atomic was set; and if it hadn't, then
    zap_pte_range would have missed free_swap_and_cache and pte_clear when pte
    not present.  Moved the optimization into zap_pte_range itself.  Plus
    massive documentation update.
  
  From: Hugh Dickins <hugh@veritas.com>
  
    Here's a second patch to add to the first: mremap's cows can't come home
    without releasing the i_mmap_lock, better move the whole "Subtle point"
    locking from move_vma into move_page_tables.  And it's possible for the file
    that was behind an anonymous page to be truncated while we drop that lock,
    don't want to abort mremap because of VM_FAULT_SIGBUS.
  
    (Eek, should we be checking do_swap_page of a vm_file area against the
    truncate_count sequence?  Technically yes, but I doubt we need bother.)
  
  
  - We cannot hold i_mmap_lock across move_one_page() because
    move_one_page() needs to perform __GFP_WAIT allocations of pagetable pages.
  
  - Move the cond_resched() out so we test it once per page rather than only
    when move_one_page() returns -EAGAIN.

ChangeSet@1.1785, 2004-05-22 22:02:25-07:00, akpm@osdl.org
  [PATCH] rmap 13 include/asm deletions
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Delete include/asm*/rmap.h
  Delete pte_addr_t typedef from include/asm*/pgtable.h
  Delete KM_PTE2 from subset of include/asm*/kmap_types.h
  Beware when 4G/4G returns to -mm: i386 may need KM_FILLER for 8K stack.

ChangeSet@1.1784, 2004-05-22 22:02:09-07:00, akpm@osdl.org
  [PATCH] rmap 12 pgtable remove rmap
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Remove the support for pte_chain rmap from page table initialization, just
  continue to maintain nr_page_table_pages (but only for user page tables -
  it also counted vmalloc page tables before, little need, and I'm unsure if
  per-cpu stats are safe early enough on all arches).  mm/memory.c is the
  only core file affected.
  
  But ppc and ppc64 have found the old rmap page table initialization useful
  to support their ptep_test_and_clear_young: so transfer rmap's
  initialization to them (even on kernel page tables?  well, okay).

ChangeSet@1.1783, 2004-05-22 22:01:58-07:00, akpm@osdl.org
  [PATCH] rmap 11 mremap moves
  
  From: Hugh Dickins <hugh@veritas.com>
  
  A weakness of the anonmm scheme is its difficulty in tracking pages shared
  between two or more mms (one being an ancestor of the other), when mremap has
  been used to move a range of pages in one of those mms.  mremap move is not
  very common anyway, and it's more often used on a page range exclusive to the
  mm; but uncommon though it may be, we must not allow unlocked pages to become
  unswappable.
  
  This patch follows Linus' suggestion, simply to take a private copy of the
  page in such a case: early C-O-W.  My previous implementation was daft with
  respect to pages currently on swap: it insisted on swapping them in to copy
  them.  No need for that: just take the copy when a page is brought in from
  swap, and its intended address is found to clash with what rmap has already
  noted.
  
  If do_swap_page has to make this copy in the mremap moved case (simply a call
  to do_wp_page), might as well do so also in the case when it's a write access
  but the page not exclusive, it's always seemed a little odd that swapin needed
  a second fault for that.  A bug even: get_user_pages force imagines that a
  single call to handle_mm_fault must break C-O-W.  Another bugfix: swapoff's
  unuse_process didn't check is_vm_hugetlb_page.
  
  Andrea's anon_vma has no such problem with mremap moved pages, handling them
  with elegant use of vm_pgoff - though at some cost to vma merging.  How
  important is it to handle them efficiently?  For now there's a msg
  printk(KERN_WARNING "%s: mremap moved %d cows\n", current->comm, cows);

ChangeSet@1.1782, 2004-05-22 22:01:46-07:00, akpm@osdl.org
  [PATCH] rmap 10 add anonmm rmap
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Hugh's anonmm object-based reverse mapping scheme for anonymous pages.  We
  have not yet decided whether to adopt this scheme, or Andrea's more advanced
  anon_vma scheme.  anonmm is easier for me to merge quickly, to replace the
  pte_chain rmap taken out in the previous patch; a patch to install Andrea's
  anon_vma will follow in due course.
  
  Why build up and tear down chains of pte pointers for anonymous pages, when a
  page can only appear at one particular address, in a restricted group of mms
  that might share it?  (Except: see next patch on mremap.)
  
  Introduce struct anonmm per mm to track anonymous pages, all forks from one
  exec sharing the same bundle of linked anonmms.  Anonymous pages originate in
  one mm, but may be forked into another mm of the bundle later on.  Callouts
  from fork.c to allocate, dup and exit the anonmm structure private to rmap.c.
  
  From: Hugh Dickins <hugh@veritas.com>
  
    Two concurrent exits (of the last two mms sharing the anonhd).  First
    exit_rmap brings anonhd->count down to 2, gets preempted (at the
    spin_unlock) by second, which brings anonhd->count down to 1, sees it's 1
    and frees the anonhd (without making any change to anonhd->count itself),
    cpu goes on to do something new which reallocates the old anonhd as a new
    struct anonmm (probably not a head, in which case count will start at 1),
    first resumes after the spin_unlock and sees anonhd->count 1, frees "anonhd"
    again, it's used for something else, a later exit_rmap list_del finds list
    corrupt.

ChangeSet@1.1781, 2004-05-22 22:01:30-07:00, akpm@osdl.org
  [PATCH] rmap 9 remove pte_chains
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Lots of deletions: the next patch will put in the new anon rmap, which
  should look clearer if first we remove all of the old pte-pointer-based
  rmap from the core in this patch - which therefore leaves anonymous rmap
  totally disabled, anon pages locked in memory until process frees them.
  
  Leave arch files (and page table rmap) untouched for now, clean them up in
  a later batch.  A few constructive changes amidst all the deletions:
  
  Choose names (e.g.  page_add_anon_rmap) and args (e.g.  no more pteps) now
  so we need not revisit so many files in the next patch.  Inline function
  page_dup_rmap for fork's copy_page_range, simply bumps mapcount under lock.
   cond_resched_lock in copy_page_range.  Struct page rearranged: no pte
  union, just mapcount moved next to atomic count, so two ints can occupy one
  long on 64-bit; i386 struct page now 32 bytes even with PAE.  Never pass
  PageReserved to page_remove_rmap, only do_wp_page did so.
  
  
  From: Hugh Dickins <hugh@veritas.com>
  
    Move page_add_anon_rmap's BUG_ON(page_mapping(page)) inside the rmap_lock
    (well, might as well just check mapping if !mapcount then): if this page is
    being mapped or unmapped on another cpu at the same time, page_mapping's
    PageAnon(page) and page->mapping are volatile.
  
    But page_mapping(page) is used more widely: I've a nasty feeling that
    clear_page_anon, page_add_anon_rmap and/or page_mapping need barriers added
    (also in 2.6.6 itself),

ChangeSet@1.1780, 2004-05-22 22:01:17-07:00, akpm@osdl.org
  [PATCH] slab: consolidate panic code
  
  Many places do:
  
  	if (kmem_cache_create(...) == NULL)
  		panic(...);
  
  We can consolidate all that by passing another flag to kmem_cache_create()
  which says "panic if it doesn't work".

ChangeSet@1.1779, 2004-05-22 22:01:04-07:00, akpm@osdl.org
  [PATCH] rmap 8 unmap nonlinear
  
  From: Hugh Dickins <hugh@veritas.com>
  
  The previous patch let the ptes of file pages be located via page
  ->mapping->i_mmap and i_mmap_shared lists of vmas; which works well unless
  the vma is VM_NONLINEAR - one in which sys_remap_file_pages has been used
  to place pages in unexpected places, to avoid an explosion of distinct
  unmergable vmas.  Such pages were effectively locked in memory.
  
  page_referenced_file is already skipping nonlinear vmas, they'd just waste
  its time, and age unfairly any pages in their proper positions.  Now extend
  try_to_unmap_file, to persuade it to swap from nonlinears.
  
  Ignoring the page requested, try to unmap cluster of 32 neighbouring ptes
  (in worst case all empty slots) in a nonlinear vma, then move on to the
  next vma; stopping when we've unmapped at least as many maps as the
  requested page had (vague guide of how hard to try), or have reached the
  end.  With large sparse nonlinear vmas, this could take a long time:
  inserted a cond_resched while no locks are held, unusual at this level but
  I think okay, shrink_list does so.
  
  Use vm_private_data a little like the old mm->swap_address, as a cursor
  recording how far we got, so we don't attack the same ptes next time around
  (earlier tried inserting an empty marker vma in the list, but that got
  messy).  How well this will work on real- life nonlinear vmas remains to be
  seen, but should work better than locking them all in memory, or swapping
  everything out all the time.
  
  Existing users of vm_private_data have either VM_RESERVED or VM_DONTEXPAND
  set, both of which are in the VM_SPECIAL category where we never try to
  merge vmas: so removed the vm_private_data test from is_mergeable_vma, so
  we can still merge VM_NONLINEARs.  Of course, we could instead add another
  field to vm_area_struct.

ChangeSet@1.1778, 2004-05-22 22:00:54-07:00, akpm@osdl.org
  [PATCH] rmap 7 object-based rmap
  
  From: Hugh Dickins <hugh@veritas.com>
  
  Dave McCracken's object-based reverse mapping scheme for file pages: why
  build up and tear down chains of pte pointers for file pages, when
  page->mapping has i_mmap and i_mmap_shared lists of all the vmas which
  might contain that page, and it appears at one deterministic position
  within the vma (unless vma is nonlinear - see next patch)?
  
  Has some drawbacks: more work to locate the ptes from page_referenced and
  try_to_unmap, especially if the i_mmap lists contain a lot of vmas covering
  different ranges; has to down_trylock the i_shared_sem, and hope that
  doesn't fail too often.  But attractive in that it uses less lowmem, and
  shifts the rmap burden away from the hot paths, to swapout.
  
  Hybrid scheme for the moment: carry on with pte_chains for anonymous pages,
  that's unchanged; but file pages keep mapcount in the pte union of struct
  page, where anonymous pages keep chain pointer or direct pte address: so
  page_mapped(page) works on both.
  
  Hugh massaged it a little: distinct page_add_file_rmap entry point; list
  searches check rss so as not to waste time on mms fully swapped out; check
  mapcount to terminate once all ptes have been found; and a WARN_ON if
  page_referenced should have but couldn't find all the ptes.

ChangeSet@1.1777, 2004-05-22 22:00:42-07:00, akpm@osdl.org
  [PATCH] __set_page_dirty_nobuffers race fix
  
  Running __mark_inode_dirty() against a swapcache page is illegal and will
  oops.
  
  I see a race in set_page_dirty() wherein it can be called with a PageSwapCache
  page, but if the page is removed from swapcache after
  __set_page_dirty_nobuffers() drops tree_lock(), we have the situation where
  PageSwapCache() is false, but local variable `mapping' points at swapcache.
  
  Handle that by checking for non-null mapping->host.  We don't care about the
  page state at this point - we're only interested in the inode.
  
  
  
  There is a converse case: what if a page is added to swapcache as we are
  running set_page_dirty() against it?
  
  In this case the page gets its PG_dirty flag set but it is not tagged as dirty
  in the swapper_space radix tree.  The swap writeout code will handle this OK
  and test_clear_page_dirty()'s call to
  radix_tree_tag_clear(PAGECACHE_TAG_DIRTY) will silently have no effect.  The
  only downside is that future radix-tree-based writearound won't notice that
  such pages are dirty and swap IO scheduling will be a teensy bit worse.
  
  
  The patch also fixes the (silly) testing of local variable `mapping' to see if
  the page was truncated.  We should test page_mapping() for that.

ChangeSet@1.1776, 2004-05-22 22:00:31-07:00, akpm@osdl.org
  [PATCH] Make sync_page use swapper_space again
  
  Revert recent changes to sync_page().  Now that page_mapping() returns
  &swapper_space for swapcache pages we don't need to test for PageSwapCache in
  sync_page().

ChangeSet@1.1775, 2004-05-22 22:00:19-07:00, akpm@osdl.org
  [PATCH] vmscan: revert may_enter_fs changes
  
  Fix up the "may we call writepage" logic for the swapcache changes.

ChangeSet@1.1774, 2004-05-22 22:00:08-07:00, akpm@osdl.org
  [PATCH] revert recent swapcache handling changes
  
  Go back to the 2.6.5 concepts, with rmap additions.  In particular:
  
  - Implement Andrea's flavour of page_mapping().  This function opaquely does
    the right thing for pagecache pages, anon pages and for swapcache pages.
  
    The critical thing here is that page_mapping() returns &swapper_space for
    swapcache pages without actually requiring the storage at page->mapping. 
    This frees page->mapping for the anonmm/anonvma metadata.
  
  - Andrea and Hugh placed the pagecache index of swapcache pages into
    page->private rather than page->index.  So add new page_index() function
    which hides this.
  
  - Make swapper_space.set_page_dirty() again point at
    __set_page_dirty_buffers().  If we don't do that, a bare set_page_dirty()
    will fall through to __set_page_dirty_buffers(), which is silly.
  
    This way, __set_page_dirty_buffers() can continue to use page->mapping.
    It should never go near anon or swapcache pages.
  
  - Give swapper_space a ->set_page_dirty address_space_operation method, so
    that set_page_dirty() will not fall through to __set_page_dirty_buffers()
    for swapcache pages.  That function is not set up to handle them.
  
  
  The main effect of these changes is that swapcache pages are treated more
  similarly to pagecache pages.  And we are again tagging swapcache pages as
  dirty in their radix tree, which is a requirement if we later wish to
  implement swapcache writearound based on tagged radix-tree walks.

ChangeSet@1.1773, 2004-05-22 21:59:57-07:00, akpm@osdl.org
  [PATCH] __add_to_swap_cache and add_to_pagecache() simplification
  
  Simplify the logic in there a bit.

ChangeSet@1.1772, 2004-05-22 21:59:45-07:00, akpm@osdl.org
  [PATCH] Make swapper_space tree_lock irq-safe
  
  ->tree_lock is supposed to be IRQ-safe.  Hugh worked out that with his
  changes, we never actually take it from interrupt context, so spin_lock() is
  sufficient.
  
  Apart from kinda freaking me out, the analysis which led to this decision
  becomes untrue with later patches.  So make it irq-safe.

ChangeSet@1.1758.1.1, 2004-05-22 14:27:16-07:00, torvalds@ppc970.osdl.org
  Avoid type warning in comparison by making it explicit.
  
  (The difference between two pointers is a "size_t", while
  MAX_LEN and the result here are "int"s).

ChangeSet@1.1770, 2004-05-22 13:47:44-07:00, shemminger@osdl.org
  [BRIDGE]: Forwarding table sanity checks.
  
  Forwarding table paranoia:
  * Solve some potential problems if a device changes address and one or
    more device has the same address.  
  * Warn if new device added to a bridge matches a entry that has shown
    up on the network.
  * Also don't put static entries in the timer list, they don't time
    out so shouldn't be there.

ChangeSet@1.1769, 2004-05-22 13:47:01-07:00, shemminger@osdl.org
  [BRIDGE]: Compat hooks for new-ioctl interface.
  
  Replacement 64 bit compatibility code for the new ioctl's.  The new 
  ioctl's all pass through clean, but for the old style ioctl's it uses
  the mis-feature of the earlier bridge-utils that they check the API version.
  
  So if an old 32bit version of brctl is run on a 64bit platform it will
  report
  	bridge utilities not compatible with kernel version
  
  Tested on Itanium 1; but should solve issue for sparc, ppc, and x86_64

ChangeSet@1.1768, 2004-05-22 13:46:09-07:00, shemminger@osdl.org
  [BRIDGE]: New ioctl interface for 32/64 compatability.
  
  Add four new ioctl's for the operations that can't be done through sysfs.
  The existing bridge ioctl's are multiplexed, and most go through SIOCDEVPRIVATE
  so they won't work in a mixed 32/64bit environment.
  
  The new release of bridge-utils will use these if possible, and fall
  back to the old interface.

ChangeSet@1.1767, 2004-05-22 13:44:51-07:00, shemminger@osdl.org
  [BRIDGE]: Add sysfs support.

ChangeSet@1.1766, 2004-05-22 13:39:53-07:00, shemminger@osdl.org
  [BRIDGE]: Expose timer_residue function for use by sysfs.
  
  Move the local function timer_residue to br_timer_value so it can
  be used by both ioctl and sysfs code.

ChangeSet@1.1765, 2004-05-22 13:39:18-07:00, shemminger@osdl.org
  [BRIDGE]: Read forwarding table chunk at a time.
  
  Change how the read of forwarding table works.  Instead of copying
  entries to user one at a time, use an intermediate kernel buffer and
  do up to a page at a chunk.
  
  This gets rid of some awkward code dealing with entries getting deleted
  during the copy.  And allows same function to be used by later sysfs
  hook.

ChangeSet@1.1764, 2004-05-22 13:38:39-07:00, shemminger@osdl.org
  [BRIDGE]: Fix deadlock on device removal.
  
  Fix a deadlock where deleting a device call br_del_if with lock held.
  br_del_if doesn't want to be called under lock anymore.

ChangeSet@1.1763, 2004-05-22 13:38:07-07:00, shemminger@osdl.org
  [BRIDGE]: Ioctl cleanup and consolidation.
  
  Merge the ioctl stub calls that just end up calling the sub-function
  to do the actual ioctl.  Move br_get_XXX_ifindices into the ioctl file
  as well where they can be static.

ChangeSet@1.1762, 2004-05-22 13:37:36-07:00, shemminger@osdl.org
  [BRIDGE]: Relax locking on add/delete.
  
  Relax the locking on add/delete interfaces to a bridge.  Since these operations
  are already called with RTNL semaphore, only need to hold the bridge lock while
  doing operations related to STP and processing path.  This is necessary for later
  sysfs support where those operations might sleep.

ChangeSet@1.1761, 2004-05-22 13:36:59-07:00, shemminger@osdl.org
  [BRIDGE]: Cleanup of bridge allocation.
  
  Minor cleanup (lead in to later sysfs support).  
  Change new_nb to new_bridge_dev and return the net_device rather than
  bridge because that is what the caller wants anyway.

ChangeSet@1.1760, 2004-05-22 13:36:24-07:00, shemminger@osdl.org
  [BRIDGE]: Handle delete of multiple devices with same address.
  
  This fixes the issue discovered when removing bluetooth devices from a bridge.
  Need to add special case code when forwarding table is being cleaned up to 
  handle the case where several devices share the same hardware address.

ChangeSet@1.1759, 2004-05-22 13:35:20-07:00, herbet@gondor.apana.org.au
  [IPSEC]: Lock policy in policy timer.

ChangeSet@1.1758, 2004-05-22 13:01:55-07:00, B.Zolnierkiewicz@elka.pw.edu.pl
  [PATCH] IDE PCI: don't initialize fields of static chipset tables to zero
  
  Also remove unused EOL define from ide.h.
  
  This trivial patch makes grepping a lot easier.

ChangeSet@1.1757, 2004-05-22 13:01:44-07:00, B.Zolnierkiewicz@elka.pw.edu.pl
  [PATCH] two fixups for my ARM/ARM26 IDE changes
  
  - initializing needs to be set to 1 before calling ide_arm_init()
  
  - ide_default_io_ctl() should be 0 on arm26

ChangeSet@1.1756, 2004-05-22 13:01:33-07:00, B.Zolnierkiewicz@elka.pw.edu.pl
  [PATCH] remove dead drivers/ide/ppc/swarm.c
  
  This driver was partially merged in 2.5.32 and never compiled in 2.5/2.6.
  It was fixed in linux-mips CVS but has been broken again about 5 months ago.
  Just remove it for now (it is in wrong directory anyway).

ChangeSet@1.1755, 2004-05-22 10:52:32-07:00, bunk@fs.tum.de
  [PATCH] more comx removal
  
  The patch below removes the MAINTAINERS entry for the removed comx
  driver.
  
  Additionally, the following comx header files could be removed:
    drivers/net/wan/mixcom.h
    drivers/net/wan/hscx.h
    drivers/net/wan/munich32x.h
    drivers/net/wan/falc-lh.h
  
  I've double-checked that none of them are used by any other driver.

ChangeSet@1.1754, 2004-05-22 10:50:24-07:00, bunk@fs.tum.de
  [PATCH] JFFS2_FS_NAND=y compile error
  
  The case of CONFIG_JFFS2_FS_NAND=y got broken recently.
  
  The bug is obvious, and the fix is trivial:

ChangeSet@1.1753, 2004-05-22 10:39:44-07:00, akpm@osdl.org
  [PATCH] autofs4: MAINTAINERS update
  
  From: Ian Kent <raven@themaw.net>
  
  This changes the autofs4 maintainer to me.  Recommended by Joe Perches and
  OKed with Jeremy.

ChangeSet@1.1752, 2004-05-22 10:39:34-07:00, akpm@osdl.org
  [PATCH] autofs4: printk cleanup
  
  From: Ian Kent <raven@themaw.net>
  
  This is a patch contributed by Joe Perches to automatically include the
  function name in the dprintk statements.

ChangeSet@1.1751, 2004-05-22 10:39:23-07:00, akpm@osdl.org
  [PATCH] x86 cpuid cache info update
  
  From: Francois Romieu <romieu@fr.zoreil.com>
  
  Missing cache size format for Intel P4E (p.26 of doc.  241618-025, "Intel
  Processor Identification and the CPUID Instruction").

ChangeSet@1.1750, 2004-05-22 10:39:12-07:00, akpm@osdl.org
  [PATCH] i4l: Eicon driver: fix __devexit in prototype
  
  From: Armin Schindler <armin@melware.de>
  
  Fixes a compiler warning about unused Eicon ISDN driver function if hotplug is
  disabled.

ChangeSet@1.1749, 2004-05-22 10:39:01-07:00, akpm@osdl.org
  [PATCH] swsusp: fix devfs breakage introduced in 2.6.6
  
  From: Pavel Machek <pavel@ucw.cz>
  
  This fixes bad interaction between devfs and swsusp.
  
  Check whether the swap device is the specified resume device, irrespective of
  whether they are specified by identical names.
  
  (Thus, device inode aliasing is allowed.  You can say /dev/hda4 instead of
  /dev/ide/host0/bus0/target0/lun0/part4 [if using devfs] and they'll be
  considered the same device.  This is *necessary* for devfs, since the resume
  code can only recognize the form /dev/hda4, but the suspend code would like
  the long name [as shown in 'cat /proc/mounts'].)
  
  [Thanks to devfs hero whose name I forgot.]

ChangeSet@1.1748, 2004-05-22 10:38:51-07:00, akpm@osdl.org
  [PATCH] swsusp: kill unneccessary debugging
  
  From: Pavel Machek <pavel@ucw.cz>
  
  This is no longer neccessary.  We have enough pauses elsewhere, and it works
  well enough that this is not needed.

ChangeSet@1.1747, 2004-05-22 10:38:40-07:00, akpm@osdl.org
  [PATCH] blk: clear completion stack pointer on return
  
  From: Jens Axboe <axboe@suse.de>
  
  It doesn't always look safe to let ->waiting remain set when returning from
  functions that set it to point to stack area, since various locations check
  for != NULL to see if it's valid.  So clear it on return from
  ide_do_drive_cmd() and blk_execute_rq().

ChangeSet@1.1746, 2004-05-22 10:38:29-07:00, akpm@osdl.org
  [PATCH] Sanitise handling of unneeded syscall stubs
  
  From: David Mosberger <davidm@napali.hpl.hp.com>
  
  Below is a patch that tries to sanitize the dropping of unneeded system-call
  stubs in generic code.  In some instances, it would be possible to move the
  optional system-call stubs into a library routine which would avoid the need
  for #ifdefs, but in many cases, doing so would require making several
  functions global (and possibly exporting additional data-structures in
  header-files).  Furthermore, it would inhibit (automatic) inlining in the
  cases in the cases where the stubs are needed.  For these reasons, the patch
  keeps the #ifdef-approach.
  
  This has been tested on ia64 and there were no objections from the
  arch-maintainers (and one positive response).  The patch should be safe but
  arch-maintainers may want to take a second look to see if some __ARCH_WANT_foo
  macros should be removed for their architecture (I'm quite sure that's the
  case, but I wanted to play it safe and only preserved the status-quo in that
  regard).

ChangeSet@1.1745, 2004-05-22 10:38:16-07:00, akpm@osdl.org
  [PATCH] trivial: remove duplicated #includes
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  a.othieno@bluewin.ch (Arthur Othieno)
  From:  Vinay K Nallamothu <vinay-rc@naturesoft.net>
  
  Remove various duplicated #includes
  
  From:  Vinay K Nallamothu <vinay-rc@naturesoft.net>
  
          Use mod_timer in drivers_block_floppy98.c
  
  From:  carbonated beverage <ramune@net-ronin.org>
  
          doc update for bk usage
          bk://... appears to be dead, use http://... instead.

ChangeSet@1.1744, 2004-05-22 10:38:03-07:00, akpm@osdl.org
  [PATCH] trivial: use page_to_phys in dma_map_page()
  
  From: Trivial Patch Monkey <trivial@rustcorp.com.au>
  
  From:  Adam Lackorzynski <adam@os.inf.tu-dresden.de>
  
  dma_map_page() can be simplified by using page_to_phys instead of writing the
  calculation explicitly.

ChangeSet@1.1743, 2004-05-22 10:37:52-07:00, akpm@osdl.org
  [PATCH] fbdev: mode switching fix.
  
  From: James Simmons <jsimmons@infradead.org>
  
  This fixes the bugs that where in mode switch via stty.
  
  The problem was we couldn't set the mode just by using the x and y
  resolution.  We use modedb to fill in the rest.  There also was a bug that
  allowed you to change the console resolution for drivers with fixed
  resolutions.  This would mess up your display.  Now that is fixed.

ChangeSet@1.1742, 2004-05-22 10:37:41-07:00, akpm@osdl.org
  [PATCH] fix sendfile on 64bit architectures
  
  From: Andi Kleen <ak@suse.de>
  
  sys_sendfile has a hardcoded 2GB limit.  64bit architectures should
  probably always use sys_sendfile64() in their native system tables, because
  for them sizeof(off_t) == sizeof(loff_t).  This patch does this.  It seemed
  easier to just change the 64bit entry tables instead of fixing up all the
  emulation layers to do 2GB checks on their own.
  
  I changed all 64bit architectures except for parisc64, which seemed to
  already have a sendfile64.

ChangeSet@1.1741, 2004-05-22 10:37:30-07:00, akpm@osdl.org
  [PATCH] console autodetection for pmac
  
  From: Olaf Hering <olh@suse.de>
  
  This one allows console autodetection for powermacs.

ChangeSet@1.1740, 2004-05-22 10:37:19-07:00, akpm@osdl.org
  [PATCH] gss_api build fix
  
  From: "J. Bruce Fields" <bfields@fieldses.org>
  
  Older gcc's don't like that dimensionless array.  Remove it in favour of a
  pointer to the data.

ChangeSet@1.1739, 2004-05-22 10:37:08-07:00, akpm@osdl.org
  [PATCH] vga16fb warning fix
  
  drivers/video/vga16fb.c:1350: warning: assignment makes pointer from integer without a cast

ChangeSet@1.1738, 2004-05-22 10:36:55-07:00, akpm@osdl.org
  [PATCH] Fix !CONFIG_SYSFS build
  
  From: Maneesh Soni <maneesh@in.ibm.com>
  
  The sysfs_rename_dir() interface was changed recently but I forgot to
  change the definition if CONFIG_SYSFS is not defined.

ChangeSet@1.1734, 2004-05-21 22:59:48+01:00, tony@com.rmk.(none)
  [ARM PATCH] 1887/1: Update OMAP low level debug functions again
  
  Patch from Tony Lindgren
  
  This patch makes the low level debug functions work when support is
  compiled in for multiple OMAPs. The patch also removes now unnecessary
  include, incorrect comment, and SERIAL_REG_SHIFT ifdefs.

ChangeSet@1.1733, 2004-05-21 22:55:08+01:00, tony@com.rmk.(none)
  [ARM PATCH] 1885/1: OMAP update 2/2: include files
  
  Patch from Tony Lindgren
  
  This patch syncs the mainline kernel with the linux-omap tree.
  The highlights of the patch are:
  - Changed the BOOT_MEM() to use the new IO address (Tony Lindgren)
  - Cleaned up interrupt handler (Juha Yrjölä)
  - DMA channel linking for 1610 (Samuel Ortiz)
  - GPIO fixes (Juha Yrjölä)
  - IRQ fix for OMAP-730 (Kevin Hilman)
  - OMAP-1510 FPGA interrupt fix (Dirk Behme)
  - OMAP-1610 voltage change settings (Todd Poynor)
  - Uncompress kernel serial output fixes (Tony Lindgren)

ChangeSet@1.1726.1.45, 2004-05-21 14:54:20-07:00, torvalds@ppc970.osdl.org
  Merge http://lia64.bkbits.net/to-linus-2.5
  into ppc970.osdl.org:/home/torvalds/v2.6/linux

ChangeSet@1.1726.1.44, 2004-05-21 14:46:46-07:00, torvalds@ppc970.osdl.org
  [REDO] ramdisk: separate the blockdev backing_dev_info from the hosted inodes
  
  This re-applies the separation of the ramdisk blockdev inode
  backing store and the files that live in the ramdisk.
  
  Cset exclude: torvalds@ppc970.osdl.org|ChangeSet|20040521210025|21437

ChangeSet@1.1726.1.43, 2004-05-21 14:46:17-07:00, akpm@osdl.org
  [PATCH] block device layer: separate backing_dev_info infrastructure
  
  Sigh.  ramdisk almost works, except it loses data on umount.
  
  This is because the files which are atop the ramdisk do not contribute to
  dirty memory accounting, but they do need writeback.  So when sync() calls
  sync_inodes_sb() to do the work, sync_inodes_sb() hopelessly underestimates
  the number of pages which need writeback for a complete sync.
  
  If you run `sync' enough times, everything eventually hits "disk" and all is
  happy.
  
  The root cause here is that the ramdisk and the files which it hosts shared
  the same backing_dev_info.  This is inappropriate because the hosted files
  *do* want to writeback and really should contribute to dirty memory
  accounting. But the ramdisk inode itself wants neither.
  
  So.  The patch sets up the infrastructure which permits a blockdev to provide
  a separate backing_dev_info for the files which it hosts.  It's a bit of a
  ramdisk-special.

ChangeSet@1.1732, 2004-05-21 22:46:09+01:00, tony@com.rmk.(none)
  [ARM PATCH] 1884/1: OMAP update 1/2: arch files
  
  Patch from Tony Lindgren
  
  This patch syncs the mainline kernel with the linux-omap tree.
  The highlights of the patch are:
  - Changed the BOOT_MEM() to use the new IO address (Tony Lindgren)
  - Cleaned up interrupt handler (Juha Yrjölä)
  - DMA channel linking for 1610 (Samuel Ortiz)
  - GPIO fixes (Juha Yrjölä)
  - IRQ fix for OMAP-730 (Kevin Hilman)
  - OMAP-1510 FPGA interrupt fix (Dirk Behme)
  - OMAP-1610 voltage change settings (Todd Poynor)
  - Uncompress kernel serial output fixes (Tony Lindgren)

ChangeSet@1.1726.4.4, 2004-05-21 14:43:13-07:00, herbert@gondor.apana.org.au
  [IPSEC]: Fix state modifications in xfrm_state_update().
  
  doing a mod_timer on a live state without holding a lock or for that
  matter not even checking whether the state is dead is definitely a bad
  idea

ChangeSet@1.1726.4.3, 2004-05-21 14:41:11-07:00, bdschuym@pandora.be
  [BRIDGE]: Fix LL_RESERVED_SPACE usage in netfilter code.

ChangeSet@1.1726.4.2, 2004-05-21 14:39:28-07:00, yoshfuji@linux-ipv6.org
  [IPV4]: Fix deadlock in IP tunnel error path.

ChangeSet@1.1726.1.42, 2004-05-21 14:29:23-07:00, torvalds@ppc970.osdl.org
  Add 'mode' argument to vfs_symlink.
  
  Right now we ignore it, but we need to pass this down
  to the low-level filesystems if we want to ever make
  knfsd create symlinks with different permissions correctly.

ChangeSet@1.1726.1.41, 2004-05-21 14:09:43-07:00, ysato@users.sourceforge.jp
  [PATCH] H8/300 module support update
  
  - add module support code
  - add H8/300 ELF infomation
  - fix kcore ELF format

ChangeSet@1.1726.1.40, 2004-05-21 14:09:31-07:00, ysato@users.sourceforge.jp
  [PATCH] H8/300 new ide driver support
  
  - new config items
  - interface setup
  - io cleanup

ChangeSet@1.1726.1.39, 2004-05-21 14:09:20-07:00, ysato@users.sourceforge.jp
  [PATCH] H8/300 mtd setup fix
  
  - config symbol fix

ChangeSet@1.1726.3.1, 2004-05-21 17:03:30-04:00, jgarzik@redhat.com
  Merge redhat.com:/spare/repo/linux-2.6
  into redhat.com:/spare/repo/libata-2.6

ChangeSet@1.1608.8.18, 2004-05-21 14:03:26-07:00, davidm@tiger.hpl.hp.com
  ia64: Update defconfig

ChangeSet@1.1608.8.17, 2004-05-21 14:01:30-07:00, davidm@tiger.hpl.hp.com
  ia64: Kill a warning when arch/ia64/kernel/machvec.c gets compiled on UP.

ChangeSet@1.1726.1.38, 2004-05-21 14:00:25-07:00, torvalds@ppc970.osdl.org
  Undo separate backing_dev_info for ramdisk.c.
  
  The code was incomplete. Let's re-do it when the other pieces
  are in place.
  
  Cset exclude: akpm@osdl.org[torvalds]|ChangeSet|20040521202003|24125

ChangeSet@1.1726.2.1, 2004-05-21 16:54:36-04:00, jgarzik@redhat.com
  Merge redhat.com:/spare/repo/linux-2.6
  into redhat.com:/spare/repo/i810-audio-2.6

ChangeSet@1.1608.8.16, 2004-05-21 13:28:01-07:00, peterc@gelato.unsw.edu.au
  ia64: Make cond_syscall() declare a dummy prototype so GCC doesn't complain.

ChangeSet@1.1726.1.37, 2004-05-21 13:24:27-07:00, akpm@osdl.org
  [PATCH] ramfs lfs limit
  
  From: Andrea Arcangeli <andrea@suse.de>
  
  this fixes the 2G limit on ramfs

ChangeSet@1.1726.1.36, 2004-05-21 13:24:17-07:00, akpm@osdl.org
  [PATCH] Neaten and fix init/main.c cpu bringup message
  
  From: Andrew Theurer <habanero@us.ibm.com>
  
  Use num_online_cpus in smp_init instead of counting cpus which may or may not
  really be brought up.

ChangeSet@1.1726.1.35, 2004-05-21 13:24:06-07:00, akpm@osdl.org
  [PATCH] Fix power/shutdown.c comments
  
  From: Roger Luethi <rl@hellgate.ch>
  
  Make the comments in drivers/base/power/shutdown.c somewhat less wrong. 
  There's still room for improvement :-/.

ChangeSet@1.1726.1.34, 2004-05-21 13:23:55-07:00, akpm@osdl.org
  [PATCH] drop left-over #ifndef __ia64__
  
  From: David Mosberger <davidm@napali.hpl.hp.com>
  
  It used to be that loops_per_jiffy was a macro on ia64, hence it couldn't be
  exported.  That's no longer the case though, so there is no point in
  inhibiting its export (not that it makes any _sense_ to export that value on
  ia64).

ChangeSet@1.1726.1.33, 2004-05-21 13:23:44-07:00, akpm@osdl.org
  [PATCH] Fix i386/x86_64 cpuid/msr BUG() on impossible CPUs
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  Matthieu Castet <castet.matthieu@free.fr> pointed out that testing
  cpu_online(cpu) on a UP system goes BUG().
  
  That's because you're never supposed to ask cpu_online() about a CPU which
  is >= NR_CPUS.  msr and cpuid devices use the minor to indicate the CPU
  number.  Oops.
  
  Fix is to explicitly test cpu < NR_CPUS.  Using cpu_online() is OK;
  although the CPU might go down before you actually read the file, that will
  simply cause junk to be returned.

ChangeSet@1.1726.1.32, 2004-05-21 13:23:33-07:00, akpm@osdl.org
  [PATCH] msr.c touchups
  
  A few things which Lindent got wrong.

ChangeSet@1.1726.1.31, 2004-05-21 13:23:23-07:00, akpm@osdl.org
  [PATCH] Feed arch/i386/kernel/msr.c through Lindent

ChangeSet@1.1726.1.30, 2004-05-21 13:23:12-07:00, akpm@osdl.org
  [PATCH] trivial: swsusp section usage
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  Pavel Machek <pavel@ucw.cz>
  
  This patch fixes init section usage in swsusp.c: "read_suspend_image()" can
  be __init.

ChangeSet@1.1726.1.29, 2004-05-21 13:23:01-07:00, akpm@osdl.org
  [PATCH] trivial: fix counter in build_zonelists()
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  Stephen Leonard <stephen@phynp6.phy-astr.gsu.edu>
  
  This fixes a counter that is unnecessarily incremented in build_zonelists().

ChangeSet@1.1726.1.28, 2004-05-21 13:22:51-07:00, akpm@osdl.org
  [PATCH] trivial: add CC Trivial Patch Monkey to SubmittingPatches
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
   From:  maximilian attems <janitor@sternwelten.at>
  
  The "Trivial Patch Monkey" is neither documented in MAINTAINERS nor was there
  a note in SubmittingPatches.

ChangeSet@1.1726.1.27, 2004-05-21 13:22:40-07:00, akpm@osdl.org
  [PATCH] trivial: drivers/media/video_ir-kbd-gpio.c: kill duplicate include
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  a.othieno@bluewin.ch (Arthur Othieno)

ChangeSet@1.1726.1.26, 2004-05-21 13:22:29-07:00, akpm@osdl.org
  [PATCH] trivial: Make JFFS2 ready for Linux 2.7
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  (OK from maintainer  	David Woodhouse <dwmw2@infradead.org>)
   From:  Sam Ravnborg <sam@ravnborg.org>
  
    From:  <l.s.r@web.de>
    >   since the code for Linux 2.4 compatibility in fs/jffs2 is gone, we can
    >   clean up the Makefile a bit. Following patch makes the Makefile
    >   compatible with Linux 2.7 instead . :) Please consider applying.
  
    If we are going to clean up this I prefer we get rid of the
    local variables.
    See attached patch.
  
    	Sam

ChangeSet@1.1726.1.25, 2004-05-21 13:22:19-07:00, akpm@osdl.org
  [PATCH] trivial: fix /proc documentation lies about file-nr
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  Tommi Virtanen <tv@tv.debian.net>

ChangeSet@1.1726.1.24, 2004-05-21 13:22:08-07:00, akpm@osdl.org
  [PATCH] trivial: Fix #endif comment in linux_moduleparam.h
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  Pavel Machek <pavel@ucw.cz>
  
  If we are providing "helpful" comment, it should better be correct.

ChangeSet@1.1726.1.23, 2004-05-21 13:21:57-07:00, akpm@osdl.org
  [PATCH] trivial: MAINTAINERS fbdev - web site change
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  David Eger <eger@theboonies.us>
  
  Doesn't resolve.

ChangeSet@1.1726.1.22, 2004-05-21 13:21:47-07:00, akpm@osdl.org
  [PATCH] trivial: fix old URLs in initrd doc
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  Marco Cova <marco.cova@studio.unibo.it>

ChangeSet@1.1726.1.21, 2004-05-21 13:21:34-07:00, akpm@osdl.org
  [PATCH] trivial: add parantheses for if (necessary for cross-compilation)
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  Martin Schaffner <schaffner@gmx.li>

ChangeSet@1.1726.1.20, 2004-05-21 13:21:21-07:00, akpm@osdl.org
  [PATCH] trivial: scripts_kernel-doc should strip comments inside structs'
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  <adobriyan@mail.ru>
  
    Long block comment before declaration moves it out of page in pdfs.
  
    Alexey
  
    $ ./linux-2.6.6-rc2/scripts/kernel-doc.orig -text test.c
    struct stuff:
    struct stuff {
            int a;
            /** comment here*/char b;
    };
    Members:
    a
             aaaa
    b
             bbbbb
    Description:
    stuff
  
    $ ./linux-2.6.6-rc2/scripts/kernel-doc -text test.c
    struct stuff:
    struct stuff {
            int a;
            char b;
    };
    Members:
    a
             aaaa
    b
             bbbbb
    Description:
    stuff

ChangeSet@1.1726.1.19, 2004-05-21 13:21:10-07:00, akpm@osdl.org
  [PATCH] trivial: Fix name of biovec slab
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  From:  "Chen, Kenneth W" <kenneth.w.chen@intel.com>
  
  Pure cosmetic.  Largest biovec slab is printed as biovec-BIO_MAX_PAGES in
  /proc/slabinfo.  It would be more informative to print actual number instead
  of macro's name.

ChangeSet@1.1726.1.18, 2004-05-21 13:21:00-07:00, akpm@osdl.org
  [PATCH] cleanup double semicolons
  
  From: Nuno Monteiro <nuno@itsari.org>
  
  Remove lots of double-semicolons.

ChangeSet@1.1726.1.17, 2004-05-21 13:20:48-07:00, akpm@osdl.org
  [PATCH] Fix NFSD oops in readdir
  
  From: Neil Brown <neilb@cse.unsw.edu.au>
  
  If a single readdir entry needs to be split over two pages in the reply, we
  first encode it into a new page, and then copy the bits into place.  When
  we do this relocation, we have to modify the "offset" pointer to be either
  in the first or the second page, as appropriate.
  
  If the pointer should be at the start of the second page, it is currently
  put past the end of the first page.
  
  Note that as the offset and whole response is known to be 4byte-aligned,
  the offset pointer will never be split over two pages.

ChangeSet@1.1726.1.16, 2004-05-21 13:20:38-07:00, akpm@osdl.org
  [PATCH] fbmem: rename sys_inbuf() and sys_outbuf()
  
  From: David Mosberger <davidm@napali.hpl.hp.com>
  
  These aren't syscalls, so rename them.  And make them static.

ChangeSet@1.1726.1.15, 2004-05-21 13:20:26-07:00, akpm@osdl.org
  [PATCH] getblk() BUG removal
  
  We keep on getting BUG()s from isofs_read_super() because it passes an insane
  blocksize to bread().  See http://bugme.osdl.org/show_bug.cgi?id=2735 for
  example.
  
  I don't know what's up with isofs, but going BUG in there seems a bit rude.
  Change it to drop a bunch of diagnostics and a backtrace then return a null
  bh*.
  
  Most callers of getblk() don't expect it to fail, so they'll oops anyway.  But
  isofs does actually check for a NULL return.  This way, the machine stays up
  and we get better debug diagnostics.

ChangeSet@1.1726.1.14, 2004-05-21 13:20:14-07:00, akpm@osdl.org
  [PATCH] Debugging option to put data symbols in kallsyms
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  kallsyms contains only function names, but some debuggers (eg.  xmon on
  PPC/PPC64) use it to lookup symbols: it'd be much nicer if it included data
  symbols too.

ChangeSet@1.1726.1.13, 2004-05-21 13:20:03-07:00, akpm@osdl.org
  [PATCH] ramdisk: separate the blockdev backing_dev_info from the hosted inodes'
  
  Give appropriate and separate backing_dev_info's to both the ramdisk blockdev
  inode and to the files which live atop the ramdisk.
  
  Everything works now.

ChangeSet@1.1726.1.12, 2004-05-21 13:19:51-07:00, akpm@osdl.org
  [PATCH] ramdisk: implement writepages()
  
  Implement an empty ->writepages() so that attempts to write back ramdisk pages
  have less work to do.

ChangeSet@1.1726.1.11, 2004-05-21 13:19:40-07:00, akpm@osdl.org
  [PATCH] ramdisk: fix PageUptodate() handling
  
  When a filesystem does getblk() to get a buffer_head against the ramdisk the
  VFS will allocate a new not-uptodate pagecache page and will attach buffers to
  it.
  
  The filesystem will then bring certain buffer_heads uptodate.  But not the
  whole page.
  
  Later, various ramdisk a_ops see the not-uptodate page and wipe the whole
  thing out, including the parts to which the filesystem wrote!
  
  Fix that up by only zapping those parts of the page which are covered by
  non-uptodate buffers.

ChangeSet@1.1726.1.10, 2004-05-21 13:19:28-07:00, akpm@osdl.org
  [PATCH] ramdisk: use kmap_atomic() in rd_blkdev_pagecache_IO()
  
  We don't actualy need to kmap the blockdev inode's pages at all, because
  they're ~__GFP_HIGHMEM.  But it's future-safe, and cheap.

ChangeSet@1.1726.1.9, 2004-05-21 13:19:17-07:00, akpm@osdl.org
  [PATCH] ramdisk: lock blockdev pages during "IO".
  
  There's a race: one CPU writes a 1k block into a ramdisk page which isn't in
  the blockdev pagecache yet.  It memsets the locked page to zeroes.
  
  While this is happening, another CPU comes in and tries to write a different
  1k block to the "disk".  But it doesn't lock the page so it races with the
  memset and can have its data scribbled over.
  
  Fix this up by locking the page even if it already existed in pagecache.
  
  Locking a pagecache page in a make_request_fn sounds deadlocky but it is not,
  because:
  
  a) ramdisk_writepage() does nothing but a set_bit(), and cannot recur onto
     the same page.
  
  b) Any higher-level code which holds a page lock is supposed to be
     allocating its memory with GFP_NOFS, and in 2.6 kernels that's equivalent
     to GFP_NOIO.
  
     (The distinction between GFP_NOIO and GFP_NOFS basically disappeared
     with the buffer_head LRU, although it was reused for writes to swap).

ChangeSet@1.1726.1.8, 2004-05-21 13:19:06-07:00, akpm@osdl.org
  [PATCH] ramdisk memory allocation fixes
  
  Allocating pagecache pages within the disk request_fn is deadlocky and prone
  to page allocation failures, causing write I/O errors.
  
  Attempt to improve things by fiddling with gfp masks.

ChangeSet@1.1726.1.7, 2004-05-21 13:18:55-07:00, akpm@osdl.org
  [PATCH] ramdisk fixes
  
  - Remove the ramdisk special-case in fs-writeback.c - it will soon be
    unneeded.
  
  - Fix rd_ioctl() to return -ENOTTY on invalid ioctl types, not -EINVAL.
  
  - Make ramdisk Kconfig friendlier.

ChangeSet@1.1726.1.6, 2004-05-21 13:18:44-07:00, akpm@osdl.org
  [PATCH] ppc64: make enter_rtas() take unsigned long arg
  
  From: Paul Mackerras <paulus@samba.org>
  
  We declare enter_rtas with a struct rtas_args * argument, though it is
  supposed to be a physical address, and then every time we call it we cast the
  unsigned long result from __pa() to a void *.  This patch changes the
  declaration of enter_rtas to make it take an unsigned long argument, and
  removes the cast from all the callers.  The actual enter_rtas() routine is in
  assembler and doesn't need to be changed.

ChangeSet@1.1726.1.5, 2004-05-21 13:18:33-07:00, akpm@osdl.org
  [PATCH] ppc64: trivial cleanup
  
  From: David Gibson <david@gibson.dropbear.id.au>
  
  The ppc64 head.S contains an enable_32b_mode function which is used
  nowhere.  This patch removes it.

ChangeSet@1.1726.1.4, 2004-05-21 13:18:21-07:00, akpm@osdl.org
  [PATCH] ppc64: update xmon debugger
  
  From: Paul Mackerras <paulus@samba.org>
  
  This patch fixes a whole pile of problems in the xmon kernel debugger for
  ppc64.  This basically makes xmon SMP-safe.  Now, when we enter xmon it
  sends an IPI to the other CPUs to get them into xmon too.  It also changes
  the way we do single-stepping and breakpoints so that we don't have to
  remove a breakpoint to proceed from it (instead we either emulate the
  instruction where the breakpoint was, or execute it out of place).  With
  this patch, if we get an exception inside xmon, it will just return to the
  xmon command loop instead of hanging the system as at present.
  
  The patch is quite large because it updates the disassembler to the latest
  version from binutils (trimmed a bit), which is why I didn't cc lkml.

ChangeSet@1.1726.1.3, 2004-05-21 13:18:10-07:00, akpm@osdl.org
  [PATCH] ppc64: fix inline version of _raw_spin_trylock
  
  From: Paul Mackerras <paulus@samba.org>
  
  When I added the out-of-line spinlocks on PPC64, I inadvertently introduced
  a bug in the inline version of _raw_spin_trylock, where it returns the
  opposite of what it should return.  The patch below fixes it.

ChangeSet@1.1726.1.2, 2004-05-21 13:17:59-07:00, akpm@osdl.org
  [PATCH] ppc64: Fix readq & writeq
  
  From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  
  This fixes busted asm constraints for readq & writeq implementation on
  ppc64 that resulted in garbage beeing generated for writeq (plus an obvious
  mistake in the prototype).

ChangeSet@1.1726.1.1, 2004-05-21 13:17:47-07:00, akpm@osdl.org
  [PATCH] fix for stuck cpus at boot]
  
  From: Anton Blanchard <anton@samba.org>
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  When hotplug cpu isn't enabled, cpu_is_offline is always false.  I had a stuck
  cpu at boot that resulted in a lockup because we tried to start a migration
  thread on it.  Instead of cpu_is_offline we can use !cpu_online which should
  cover both the hotplug cpu enabled and disabled cases.

ChangeSet@1.1730, 2004-05-21 09:47:55+01:00, nico@org.rmk.(none)
  [ARM PATCH] 1889/1: don't select CONFIG_IWMMXT just yet with Mainstone
  
  Patch from Nicolas Pitre
  
  Since the iWMMXt patch (#1866/1) requires more time to be reviewed,
  this patch will allow merging Mainstone patches without breaking
  anything if iWMMXt support isn't merged yet.
  Should be applied after patch #1867/1.

ChangeSet@1.1729, 2004-05-21 09:44:10+01:00, nico@org.rmk.(none)
  [ARM PATCH] 1870/1: defconfig for Mainstone
  
  Patch from Nicolas Pitre
  

ChangeSet@1.1728, 2004-05-21 09:40:03+01:00, nico@org.rmk.(none)
  [ARM PATCH] 1868/1: support for LEDs on Mainstone
  
  Patch from Nicolas Pitre
  

ChangeSet@1.1727, 2004-05-21 09:35:39+01:00, nico@org.rmk.(none)
  [ARM PATCH] 1867/1: support for the Intel Mainstone (PXA27x based) eval board
  
  Patch from Nicolas Pitre
  

ChangeSet@1.1726, 2004-05-20 22:22:11-07:00, akpm@osdl.org
  [PATCH] ide-disk.c: don't put disks in STANDBY mode on reboot
  
  From: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
  
  From: Rene Herman <rene.herman@keyaccess.nl>
  
  Prevent the disks from spinning down across a reboot.

ChangeSet@1.1717.1.108, 2004-05-20 17:40:39-04:00, trond.myklebust@fys.uio.no
  From: Dave Jones <davej@redhat.com>
  
  Remove a local 1k array.

ChangeSet@1.1608.8.15, 2004-05-20 14:05:41-07:00, davidm@tiger.hpl.hp.com
  ia64: Reserve syscall number for kexec_load().

ChangeSet@1.1608.8.14, 2004-05-20 13:50:49-07:00, davidm@tiger.hpl.hp.com
  ia64: Fix bug in fsys_rt_sigprocmask() reported by Andreas Schwab.

ChangeSet@1.1717.10.6, 2004-05-20 15:46:12-05:00, shaggy@austin.ibm.com
  JFS: [CHECKER] if txCommit fails, don't call d_instantiate
  
  In several functions, d_instantiate is called before the transaction
  is committed.  Under the rare condition that txCommit fails, the new
  inode is released, but the dentry continues to point to it.  This
  can lead to a seg fault.  The fix is to call d_instantiate after
  txCommit has run successfully.

ChangeSet@1.1717.1.107, 2004-05-20 15:54:44-04:00, trond.myklebust@fys.uio.no
  From: Arjan van de Ven <arjanv@redhat.com> and akpm
  
  nfs/read.c: dynamically allocate the big structs

ChangeSet@1.1717.1.106, 2004-05-20 15:54:10-04:00, trond.myklebust@fys.uio.no
  nfs_writepage_sync stack reduction
  
  Patch from akpm

ChangeSet@1.1717.1.105, 2004-05-20 15:52:52-04:00, trond.myklebust@fys.uio.no
  RPCSEC_GSS: The expiration time passed down in the
      gss context is (duh!) in seconds, not jiffies!
  
  Patch by Bruce Fields

ChangeSet@1.1717.1.104, 2004-05-20 15:52:15-04:00, trond.myklebust@fys.uio.no
  RPCSEC_GSS: Split out integrity code in wrap and
      unwrap procedures; otherwise they're going to
      be ridiculously long after we add privacy support.
  
  Patch by Bruce Fields

ChangeSet@1.1717.1.103, 2004-05-20 15:51:05-04:00, trond.myklebust@fys.uio.no
  RPCSEC_GSS: Move EXPORT_SYMBOL's to place where functions
      are defined.
  
  Patch by Bruce Fields

ChangeSet@1.1717.1.102, 2004-05-20 15:49:58-04:00, trond.myklebust@fys.uio.no
  RPCSEC_GSS: Fix module reference counting.
      Clean up the interface to the GSSAPI code.
                                                                                  
  Patch by Bruce Fields

ChangeSet@1.1717.1.101, 2004-05-20 15:49:16-04:00, trond.myklebust@fys.uio.no
  RPCSEC_GSS: Make a couple functions in the krb5 code more
      generally useful. This will help prepare for the spkm3
      and lipkey mechanisms.
  
  Patch by Bruce Fields

ChangeSet@1.1717.1.100, 2004-05-20 15:48:31-04:00, trond.myklebust@fys.uio.no
  RPCSEC_GSS: this adds some new trace messages and
       makes existing ones consistent with other
       trace messages in the RPC client.
                                                                                  
  Patch by Chuck Lever

ChangeSet@1.1717.1.99, 2004-05-20 15:47:44-04:00, trond.myklebust@fys.uio.no
  NFS: Patch by Steve Dickson to improve error reporting
      when mounting an NFS filesystem.

ChangeSet@1.1717.1.98, 2004-05-20 15:47:06-04:00, trond.myklebust@fys.uio.no
  Following a suggestion by Jamie Lokier
  
  RPC: Make "major" timeouts be of fixed length "timeo<<retrans"
       rather than counting the number of retransmissions. The
       clock starts at the first attempt to send each request.
                                                                                  
  RPC: Ensure that we "slow start" the RTT estimation after a
       major timeout has occurred.

ChangeSet@1.1717.1.97, 2004-05-20 15:46:05-04:00, trond.myklebust@fys.uio.no
  NFSv4: Fix a bug in the open reboot-recovery code.

ChangeSet@1.1717.1.96, 2004-05-20 15:45:19-04:00, trond.myklebust@fys.uio.no
  NFS O_DIRECT: Change the NFS O_DIRECT path so that it
      no longer calls the generic VFS read and write routines.
      This allows all application read requests to pass through
      to the server, instead of just the ones that appear to be
      inside the file. this eliminates the requirement to use a
      GETATTR operation before each read or write to determine
      where the EOF is. This is a significant performance and
      scalability win.
  
      It also removes all requirements for holding the inode
      semaphore during NFS direct reads and writes, as the read
      and write logic no longer needs atomic access to the size
      of the file. this also helps client CPU scalability by
      reducing the serialization of writes against a single file.
                                                                                  
      Patch by Chuck Lever

ChangeSet@1.1717.1.95, 2004-05-20 15:43:48-04:00, trond.myklebust@fys.uio.no
  NFS_O_DIRECT: there's a code path in nfs_direct_write_seg
      where NFS_I(inode)->data_updates can get out of sync
      with reality, which will lead to a BUG() in nfs_clear_inode
      later on.
  
      Patch by Olaf Kirch.

ChangeSet@1.1717.1.94, 2004-05-20 15:39:02-04:00, trond.myklebust@fys.uio.no
  RPC: Ensure that if we reconnect, we delay by at least 15
       seconds in order to avoid flooding of servers.

ChangeSet@1.1717.1.93, 2004-05-20 12:02:07-07:00, trond.myklebust@fys.uio.no
  [PATCH] Fix NFS long symlinks checks
  
  The NFS readlink() methods all take a buffer length argument.  Use that
  instead of assuming PAGE_SIZE... 
  
  We need to return ENAMETOOLONG rather than EIO.

ChangeSet@1.1717.8.3, 2004-05-20 10:53:00-07:00, dvrabel@arcom.com
  [ARM] Fix IXP4XX_OST_RELOAD_MASK definition to not mask proper bits
  
  Current definition of OST_RELOAD_MASK masks off bit 2 of
  the timer reload value register when it should mask bits 0 
  and 1.  This would cause small timeout values to be loaded 
  incorrectly.

ChangeSet@1.1717.8.2, 2004-05-20 10:33:31-07:00, dvrabel@arcom.com
  [ARM] Fix IXP4xx CLOCK_TICK_RATE to match HW 66.66... MHz

ChangeSet@1.1717.1.92, 2004-05-20 08:28:38-07:00, neilb@cse.unsw.edu.au
  [PATCH] Invalid notify_change(symlink, [ATTR_MODE]) in nfsd
  
  Make sure NFS client doesn't see errors from mode setting on new symlinks.
  
  When nfsd creates a symlink, it tries to set the mode as the mode is 
  carried in the NFS request and some filesystems store a mode.
  
  If the filesystem refuses to set the mode (e.g. -EOPNOTSUPP), this
  error should not be returned to the client.

ChangeSet@1.1717.10.5, 2004-05-20 10:05:02-05:00, shaggy@austin.ibm.com
  JFS: [CHECKER] Memory leak on commonly executed path
  
  The jfs_log structure was never being freed at unmount time.

ChangeSet@1.1717.17.5, 2004-05-20 18:41:07+09:00, yoshfuji@linux-ipv6.org
  [IPV6] ensure to evaluate the checksum for sockets with the IPV6_CHECKSUM option.

ChangeSet@1.1717.17.4, 2004-05-20 18:33:44+09:00, yoshfuji@linux-ipv6.org
  [IPV6] put appropriate checksum for rawv6 sockets even if it was not initialized.

ChangeSet@1.1717.17.3, 2004-05-20 18:30:34+09:00, yoshfuji@linux-ipv6.org
  [IPV6] unify csum_ipv6_magic() code path for rawv6 sockets.

ChangeSet@1.1717.17.2, 2004-05-20 18:23:35+09:00, yoshfuji@linux-ipv6.org
  [IPV6] unify XXX_push_pending_frames() code path for rawv6 sockets.

ChangeSet@1.1717.17.1, 2004-05-20 18:20:15+09:00, yoshfuji@linux-ipv6.org
  [IPV6] handle return value from ip6_push_pending_frames().

ChangeSet@1.1717.16.2, 2004-05-19 23:28:11-07:00, mhuth@mvista.com
  [IPV6]: Fix sock identity checking bug in tcp_ipv6_check_established.

ChangeSet@1.1717.16.1, 2004-05-19 23:22:32-07:00, peterm@redhat.com
  [NETLINK]: Fix typo in netlink_unicast.

ChangeSet@1.1717.15.4, 2004-05-19 21:11:32-07:00, pat@computer-refuge.org
  [SPARC64]: Verify that boot CPU number is less than NR_CPUS.

ChangeSet@1.1717.1.89, 2004-05-19 21:02:27-07:00, vfort@provident-solutions.com
  [PATCH] mxser.c kernel-2.6.5
  
  This adds support for the CP-104 Moxa Smartio serial cards.  Just add
  the PCI ID information.

ChangeSet@1.1717.15.3, 2004-05-19 20:59:01-07:00, zli4@cs.uiuc.edu
  [SPARC]: Fix prom_prom_taken[].theres_more setting.

ChangeSet@1.1717.15.2, 2004-05-19 20:56:34-07:00, davem@nuts.davemloft.net
  [SPARC64]: Mark sort_memlist static.

ChangeSet@1.1717.15.1, 2004-05-19 20:55:29-07:00, davem@nuts.davemloft.net
  [SPARC64]: Update defconfig.

ChangeSet@1.1717.1.88, 2004-05-19 20:35:43-07:00, paulus@samba.org
  [PATCH] ppc64: move kmem_bufctl_t inside #ifndef __ASSEMBLY__
  
  When the kmem_bufctl_t typedef got added to include/asm-ppc64/types.h,
  it got added outside the #ifndef __ASSEMBLY__ section, causing
  assembler errors.  This patch, from David Gibson, moves it inside the
  #ifndef __ASSEMBLY__ region.

ChangeSet@1.1717.1.87, 2004-05-19 20:15:25-07:00, gerg@snapgear.com
  [PATCH] m68knommu: add newlines to debug trace in comempci.c
  
  Add newlines to some printk debug trace of comempci.c driver.

ChangeSet@1.1717.1.86, 2004-05-19 20:15:14-07:00, gerg@snapgear.com
  [PATCH] m68knommu: remove un-used libgcc symbols
  
  Remove a lot of un-used and un-needed libgcc funstions from export list
  for m68knommu syms.

ChangeSet@1.1717.1.85, 2004-05-19 20:15:04-07:00, gerg@snapgear.com
  [PATCH] m68knommu: correct build line for Dragonbakk frame buffer driver
  
  Correct build lines for Motorola Dragonball 68x328 frame buffer driver. 
  
  Patch from Georges Menie <georges@menie.org>

ChangeSet@1.1717.1.84, 2004-05-19 20:14:53-07:00, gerg@snapgear.com
  [PATCH] m68knommu: remove ColdFire specific atomic functions
  
  Remove ColdFire specific code sections for atomic_add and atomc_sub.
  
  These are not needed, the m68k asm code for these functions is ColdFire
  clean.

ChangeSet@1.1717.1.83, 2004-05-19 20:14:42-07:00, gerg@snapgear.com
  [PATCH] m68knommu: un-define IO instructions when using smc driver
  
  We should un-define all the x86 style IO routines when redefining local
  versions.

ChangeSet@1.1717.1.82, 2004-05-19 20:14:31-07:00, gerg@snapgear.com
  [PATCH] m68knommu: add init points for Dragonball frame buffer driver
  
  Create init points for the Motorola Dragonball 68x328 frame
  buffer driver.
  
  Patch from Georges Menie <georges@menie.org>

ChangeSet@1.1717.1.81, 2004-05-19 20:14:21-07:00, gerg@snapgear.com
  [PATCH] m68knommu: add find_next_bit() to bitops.h
  
  A couple of fixups for asm-m68knommu/bitops.h:
  
  . re-order definition of fls(), to be outside __KERNEL__
  . add code for find_next_bit()

ChangeSet@1.1717.1.80, 2004-05-19 20:14:10-07:00, gerg@snapgear.com
  [PATCH] m68knommu: big clean/fix of Dragonball frame buffer driver
  
  Big cleanup of the Motorola DragonBall 68x328 frame buffer.  It was
  quite broken before. 
  
  Patch from Georges Menie <georges@menie.org>.

ChangeSet@1.1717.1.79, 2004-05-19 20:13:59-07:00, gerg@snapgear.com
  [PATCH] m68knommu: fix cache flush for 5407 ColdFire CPU
  
  Fix the cache flushing code for the ColdFire 5407 CPU.
  
  The cpushl instruction arguments are wrong, causing it to miss some
  cache lines.

ChangeSet@1.1717.1.78, 2004-05-19 20:13:49-07:00, gerg@snapgear.com
  [PATCH] ucLinux: return 0 on success from do_munmap() for nommu version
  
  Added a nommu version of sysctl_max_map_count.
  
  Fix return value from do_munmap(), it should return 0 on success not
  EINVAL.

ChangeSet@1.1717.1.77, 2004-05-19 20:10:35-07:00, akpm@osdl.org
  [PATCH] raid locking fix.
  
  From: Neil Brown <neilb@cse.unsw.edu.au>
  
  Fix bug #2661
  
  Raid currently calls ->unplug_fn under spin_lock_irqsave(), but unplug_fns
  can sleep.
  
  
  After a morning of scratching my head and trying to come up with some that
  does less locking, the following is the best I can come up with.  I'm not
  proud of it but it should work.
  
  If I move "nr_pending" out or rdev into the per-personality structures
  (e.g.  mirror_info), and if I had "atomic_inc_if_nonzero" I could do with
  without locking so much, but random atomic* functions don't seem trivial

ChangeSet@1.1717.1.75, 2004-05-19 16:43:49-07:00, akpm@osdl.org
  [PATCH] s390 atomic_inc_and_test() fix
  
  From: David Mosberger <davidm@napali.hpl.hp.com>

ChangeSet@1.1717.1.74, 2004-05-19 16:42:48-07:00, akpm@osdl.org
  [PATCH] sir_dev locking fix
  
  From: Martin Diehl <lists@mdiehl.de>
  
  There was a spin_unlock missing in the raw mode tx-completion path.  Probably
  it slipped through because the raw mode stuff is never reached with my Actisys
  hardware.

ChangeSet@1.1717.1.73, 2004-05-19 16:42:37-07:00, akpm@osdl.org
  [PATCH] s390: network driver
  
  From: Martin Schwidefsky <schwidefsky@de.ibm.com>
  
  Network driver changes:
   - iucv: Make grab_param function SMP safe.
   - lcs: Fix null-pointer dereference after unsuccessful set_online.
   - qeth: Fix kmalloc flags in qeth_alloc_reply.
   - qeth: Show broadcase capability also in route4/6 sysfs attributes.
   - qeth: Remove debug code.
   - qeth: Add option to qetharp user space interface to strip unused
           fields from query arp records.
   - qeth: Add shortcut in outbound path for HiperSockets.
   - qeth: Add more info to qeth_perf_stats.
   - qeth: Add support for direct SNMP interface to OSA express cards.

ChangeSet@1.1717.1.72, 2004-05-19 16:42:26-07:00, akpm@osdl.org
  [PATCH] s390: zfcp host adapater
  
  From: Martin Schwidefsky <schwidefsky@de.ibm.com>
  
  zfcp host adapter change:
   - Remove misplaced dot in error message.
   - Remove unused performance statistics code.

ChangeSet@1.1717.1.71, 2004-05-19 16:42:15-07:00, akpm@osdl.org
  [PATCH] s390: dasd driver
  
  From: Martin Schwidefsky <schwidefsky@de.ibm.com>
  
  dasd device driver changes:
   - Reset pointer from ccw device to dasd_devmap on device removal.

ChangeSet@1.1717.1.70, 2004-05-19 16:42:05-07:00, akpm@osdl.org
  [PATCH] s390: core s390
  
  From: Martin Schwidefsky <schwidefsky@de.ibm.com>
  
  s390 core changes:
   - Fix system call trace / audit interface.
   - Fix find_first_bit / find_next_bit inlines assembly constraints.

ChangeSet@1.1717.1.69, 2004-05-19 16:41:54-07:00, akpm@osdl.org
  [PATCH] use-before-uninitialized value in ext3(2)_find_ goal
  
  From: Mingming Cao <cmm@us.ibm.com>
  
  There is a uninitialized goal value being referenced in both ext3 and ext2
  find goal block functions (ext3_find_goal() and ext2_find_goal()).
  
  In the non-sequential write case, these functions check the goal value(non
  zero) before calling ext3(2)_find_near() to find the goal block to
  allocate.
  
  Since the goal value is uninitialized(non zero), the ext3(2)_find_near() is
  never being called in the non-sequential write, thus ext3(2)_find_goal()
  failed to guide a goal block in the random write case.
  
  ext3(2)_new_block() takes the junk goal value and will turn it to goal 0
  since it's normally beyond the filesystem block number limit.  The fix is
  trivial.

ChangeSet@1.1717.1.68, 2004-05-19 16:41:43-07:00, akpm@osdl.org
  [PATCH] Fix overzealous use of online cpu iterators
  
  From: Rusty Russell <rusty@rustcorp.com.au>
  
  The IA64 hotplug CPU merge seems to have included some core changes: in
  particular the recalc_bh_state() needs to sum for all (including offline)
  cpus, since we don't empty the counters on CPU down.  The totals printed by
  /proc/stat (the first loop) should include offline cpus, too (apparently
  printing out the per-cpu lines for offline cpus confuses top).

ChangeSet@1.1717.1.67, 2004-05-19 16:41:33-07:00, akpm@osdl.org
  [PATCH] vga16fb-fix
  
  The recent ARM-specific fix broke ia32.  Hopefully the ARM team can find an
  arch-specific implementation of VGA_MAP_MEM() which makes it work.

ChangeSet@1.1717.1.66, 2004-05-19 16:41:22-07:00, akpm@osdl.org
  [PATCH] VFS cache sizing fix for small machines
  
  From: Matt Mackall <mpm@selenic.com>
  
  Doing the algebra:
  
  c = (a - b) * 3/2
  a' = a - c = a - 3/2(a - b) = (2a - 3a + 3b)/2 = (3b - a)/2
  a' >= 0
  3b - a >= 0
  3b >= a
  b >= a/3
  nr_free_pages() >= mempages/3
  
  We can indeed get into trouble if we try to load a large kernel on a very
  small box (ie kernel reserves more than 2/3 of usable memory).  Surprisingly I
  haven't hit this, but here's a fix.

ChangeSet@1.1717.1.65, 2004-05-19 16:41:11-07:00, akpm@osdl.org
  [PATCH] svc_recv() fix
  
  From: "J. Bruce Fields" <bfields@fieldses.org>
  
  svc_recv may call svc_sock_release before rqstp->rq_res is initialized.

ChangeSet@1.1717.1.64, 2004-05-19 16:41:00-07:00, akpm@osdl.org
  [PATCH] kNFSd: Add a warning when upcalls fail,
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  From: "J. Bruce Fields" <bfields@fieldses.org>
  
  To help the user diagnose problems caused by user-level daemons not running.

ChangeSet@1.1717.1.63, 2004-05-19 16:40:49-07:00, akpm@osdl.org
  [PATCH] kNFSd: Remove check on number of threads waiting on user-space.
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  From: "J. Bruce Fields" <bfields@fieldses.org>
  
  Currently we are counting the number of threads already asleep and returning
  an immediate NFS4ERR_DELAY (==JUKEBOX) error if more than half are already
  asleep.
  
  This patch removes that logic, so instead we only return NFS4ERR_DELAY if an
  upcall times out (if it takes more than a second to return).
  
  With the thread counting there is the risk that even when all the relevant
  subsystems are responsive, the client may still see occasional NFS4ERR_DELAY
  returns just because, by coincidence, several upcalls were initiated at the
  same time.  I expect clients will delay several seconds before retrying after
  NFS4ERR_DELAY, so this will be quite noticeable to users.  Sporadic long
  delays like this are likely to lead users to suspect a problem somewhere, when
  in fact there is none.
  
  The current scheme ensures that we can still process requests not depending on
  upcalls, even when all threads would otherwise be tied up waiting on upcalls. 
  However, this is not something that should happen under normal circumstances;
  if a server spends a significant portion of its time with all threads waiting
  for upcalls, this a sign that something is seriously wrong.
  
  In such a circumstance (e.g., an ldap server dies), we can, at least, bound
  the waiting time to a second without the need for counting threads.
  
  In short, removing the thread-counting will allow us to behave predictably
  when things are working, while still allowing some progress when they don't.
  
  It would be a worthwhile project to measure the amount of time threads spend
  waiting for upcalls (or for reads, for that matter); if a significant portion
  of the time they spend handling requests is spent sleeping, then there's an
  opportunity to improve nfsd performance: if we can break the one-to-one
  mapping between requests and threads, then we can lower the number of threads
  required to keep the nfs server busy.
  
  However, both the currently available options for doing this are problematic:
  returning JUKEBOX/DELAY errors at random times will lead to unpredictable
  performance, and saving a copy of the request to be processed from scratch
  again later is wasteful and makes it difficult to provide correct semantics,
  especially in the NFSv4 case.
  
  So for now I believe waits with short timeouts are the best option.

ChangeSet@1.1717.1.62, 2004-05-19 16:40:39-07:00, akpm@osdl.org
  [PATCH] kNFSd: Reduce timeout when waiting for idmapper userspace daemon.
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  From: "J. Bruce Fields" <bfields@fieldses.org>
  
  1 second should be plenty of time; if we're going to take longer than that
  it's probably better just to return NFS4ERR_DELAY and let the client retry
  anyway.

ChangeSet@1.1717.1.61, 2004-05-19 16:40:28-07:00, akpm@osdl.org
  [PATCH] kNFSd: Improve idmapper behaviour on failure.
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  From: "J. Bruce Fields" <bfields@fieldses.org>
  
  Slightly better behavior on failed mapping (which may happen either because
  idmapd is not running, or because there it has told us it doesn't know the
  mapping.):
  
  	on name->id (setattr), return BADNAME.  (I used ESRCH to
  		communicate BADNAME, just because it was the first error in
  		include/asm-generic/errno-base.h that had something to
  		do with nonexistance of something, and that we weren't
  		already using.)
  
  	id->name (getattr), return a string representation of the numerical
  		id.  This is probably useless to the client, especially
  		since we're unlikely to accept such a string on a setattr,
  		but perhaps some client will find it mildly helpful.

ChangeSet@1.1717.1.60, 2004-05-19 16:40:17-07:00, akpm@osdl.org
  [PATCH] kNFSd: Fix race conditions in idmapper
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  From: "J. Bruce Fields" <bfields@fieldses.org>
  
  Also fix leaks on error; split up code a bit to make it easier to verify
  correctness.

ChangeSet@1.1717.1.59, 2004-05-19 16:40:08-07:00, akpm@osdl.org
  [PATCH] kNFSd: Protect reference to exp across calls to nfsd_cross_mnt
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  nfsd_cross_mnt can release the reference to the passed svc_export structure
  when it returns a different svc_export structure.  So we need to make sure we
  have a counted reference before, and drop the reference afterwards.

ChangeSet@1.1717.1.58, 2004-05-19 16:39:57-07:00, akpm@osdl.org
  [PATCH] kNFSd: Change fh_compose to NOT consume a reference to the dentry.
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  fh_compose currently consumes a reference to the dentry but not the export
  point.  This is both inconsistent and confusing.
  
  It is better if a routine like this doesn't consume reference points, so with
  this patch, it doesn't.  This fixes a couple of very subtle and unusual
  reference counting errors.

ChangeSet@1.1717.1.57, 2004-05-19 16:39:46-07:00, akpm@osdl.org
  [PATCH] kNFSd: Allow larger writes to sunrpc/svc caches.
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  We currently serialize all writes to these caches with queue_io_sem, so we
  only needed one buffer.
  
  There is some need for larger-than-one-page writes, so we can just statically
  allocate a buffer.

ChangeSet@1.1717.1.56, 2004-05-19 16:39:35-07:00, akpm@osdl.org
  [PATCH] kNFSd: Make sure CACHE_NEGATIVE is cleared when a cache entry is updates.
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  This is important for update-in-place caches which may change from being
  negative to posative.
  
  Thanks to "J.  Bruce Fields" <bfields@fieldses.org> and Olaf Kirch
  <okir@suse.de>

ChangeSet@1.1717.1.55, 2004-05-19 16:39:25-07:00, akpm@osdl.org
  [PATCH] kNFSd: Use correct _bh locking on sv_lock.
  
  From: NeilBrown <neilb@cse.unsw.edu.au>
  
  With the _bh, we can deadlock.

ChangeSet@1.1717.1.54, 2004-05-19 16:39:14-07:00, akpm@osdl.org
  [PATCH] initialise mca_bus_type even if !MCA_bus
  
  From: "Randy.Dunlap" <rddunlap@osdl.org>
  
  We need to call mca_system_init() to register MCA bus struct, otherwise
  find_mca_adapter() oopses with a NULL ptr dereference.
  
  Fixes this oops reported last week:
  	http://marc.theaimsgroup.com/?l=linux-kernel&m=108455738606747&w=2
  
  Thanks to James Bottomley for pointing this out.

ChangeSet@1.1717.1.53, 2004-05-19 16:39:03-07:00, akpm@osdl.org
  [PATCH] drivers/cdrom/aztcd.c warning fix.
  
  From: "Luiz Fernando N. Capitulino" <lcapitulino@prefeitura.sp.gov.br>
  
  drivers/cdrom/azctd.c:379: warning: `pa_ok' defined but not used

ChangeSet@1.1717.1.52, 2004-05-19 16:38:53-07:00, akpm@osdl.org
  [PATCH] do_generic_mapping_read() cleanup
  
  We just tested the page's uptodateness, no point in doing it again.

ChangeSet@1.1717.1.51, 2004-05-19 16:38:42-07:00, akpm@osdl.org
  [PATCH] efivars: add MODULE_VERSION, remove unnecessary check in exit
  
  From: Matt Domsch <Matt_Domsch@dell.com>
  
  * Adds MODULE_VERSION
  
  * Remove check for efi_enabled in efivars_exit() - we aborted module load at
    init based on this already.

ChangeSet@1.1717.1.50, 2004-05-19 16:38:32-07:00, akpm@osdl.org
  [PATCH] EDD: remove unused SCSI header files
  
  From: Matt Domsch <Matt_Domsch@dell.com>
  
  EDD: Remove no longer needed SCSI header file inclusion.
  
  Thanks to ArjanV for reminding me.

ChangeSet@1.1717.1.49, 2004-05-19 16:38:21-07:00, akpm@osdl.org
  [PATCH] SubmittingDrivers completeness
  
  From: Jonathan Corbet <corbet@lwn.net>
  
  I noticed a patch went in to Documentation/SubmittingDrivers which tweaked
  the URL for KernelTraffic.  Here's a self-serving patch which makes that
  section more complete; to be fair, I added two other sites too.  Just in
  case it's useful.

ChangeSet@1.1717.1.48, 2004-05-19 16:38:10-07:00, akpm@osdl.org
  [PATCH] Quota fix 3 - quota file corruption
  
  From: Jan Kara <jack@ucw.cz>
  
  This patch fixes possible quota files corruption which could happen when root
  did not have any inodes&space allocated.
  
  Originally this could not happen as structure would not be written to disk in
  that case but with journalled quota we need to write even all-zero structure. 
  The fix is not very nice but change of the format on disk is probably worse (I
  made a mistake with not including the usage-bitmaps into format :().

ChangeSet@1.1717.1.47, 2004-05-19 16:37:59-07:00, akpm@osdl.org
  [PATCH] SELinux: fix error handling in selinuxfs
  
  From: Stephen Smalley <sds@epoch.ncsc.mil>
  
  This patch against 2.6.6 fixes error handling for two out-of-memory conditions
  in selinuxfs, avoiding potential deadlock due to returning without releasing a
  semaphore.  The patch was submitted by Karl MacMillan of Tresys.

ChangeSet@1.1717.1.46, 2004-05-19 16:37:49-07:00, akpm@osdl.org
  [PATCH] correct ps2esdi module parm name
  
  From: "Randy.Dunlap" <rddunlap@osdl.org>
  
  The module parameter name is incorrect (looks like a thinko).

ChangeSet@1.1717.1.45, 2004-05-19 16:37:38-07:00, akpm@osdl.org
  [PATCH] Subject: [PATCH] kbuild SUBDIRS="more/ than/ one/"
  
  From: Andreas Gruenbacher <agruen@suse.de>
  
  Here is a patch that re-adds support for more than one directory in SUBDIRS.
  We have a number of packages that use this.
  
  The FORCE dependency of crmodverdir seems unnecessary; removing.
  
  (acked by Sam)

ChangeSet@1.1717.1.44, 2004-05-19 16:37:28-07:00, akpm@osdl.org
  [PATCH] mark the `planb' video driver broken
  
  From: Christoph Hellwig <hch@lst.de>
  
  This one is missing updates from the v4l1 interfaces in 2.4 to the 2.6ish
  v4l2 and thus doesn't compile.  While we're at it also remove the
  MOD_{INC,DEC}_USE_COUNT calls in it that were bogus even in 2.4 to avoid
  false positives in grep.

ChangeSet@1.1717.1.43, 2004-05-19 16:37:17-07:00, akpm@osdl.org
  [PATCH] don't mention MOD_INC_USE_COUNT/MOD_DEC_USE_COUNT in docs
  
  From: Christoph Hellwig <hch@lst.de>
  
  If we want new drivers to not use obsolete interfaces we're better off not
  mentioning it in the documentation.

ChangeSet@1.1717.1.42, 2004-05-19 16:37:06-07:00, akpm@osdl.org
  [PATCH] replace MOD_INC_USE_COUNT in cyber2000fb
  
  From: Christoph Hellwig <hch@lst.de>
  
  This driver is unloadable for the pci case, but not if vlb cards are found so
  we can't use the module_exit removal to lock it into memory.
  
  Replace the MOD_INC_USE_COUNT with __module_get in it's module_init routine.

ChangeSet@1.1717.1.41, 2004-05-19 16:36:55-07:00, akpm@osdl.org
  [PATCH] Remove blk_run_queues() remnants
  
  It no longer exists.

ChangeSet@1.1717.1.40, 2004-05-19 16:36:45-07:00, akpm@osdl.org
  [PATCH] fore200e.c warning fix
  
  drivers/atm/fore200e.c: In function `fore200e_close':
  drivers/atm/fore200e.c:1659: warning: use of cast expressions as lvalues is deprecated

ChangeSet@1.1717.1.39, 2004-05-19 16:36:34-07:00, akpm@osdl.org
  [PATCH] reserve syscall slots for kexec
  
  From: "Randy.Dunlap" <rddunlap@osdl.org>
  
  kexec is a fairly major and popular feature.  People are shipping it in
  products, although it is not known if Linux distributors plan to ship it.
  
  The patch reserves the kexec syscall slots to pin the ABI down for
  everyone.
  
  
  - add kexec_load prototype to syscalls.h
  
  - add LINUX_REBOOT_CMD_KEXEC to reboot.h
  
  - add kexec_load syscall for ia32, ia64, x86_64, ppc32, ppc64

ChangeSet@1.1717.1.38, 2004-05-19 16:36:23-07:00, akpm@osdl.org
  [PATCH] Fix for Makefiles to get KBUILD_OUTPUT working
  
  From: Mathieu Chouquet-Stringer <mchouque@online.fr>
  
  If you use O=/someotherdir or KBUILD_OUTPUT=/someotherdir on the following
  architectures: alpha, mips, sh and cris, the build process is probably
  going to fail at one point or another, depending on the target you used,
  because make can't find scripts/Makefile.build or scripts/Makefile.clean.
  
  The following patch fixes this, I greped the whole tree and these four were
  the only "offenders" I found.

ChangeSet@1.1717.1.37, 2004-05-19 16:36:12-07:00, akpm@osdl.org
  [PATCH] BeFS MAINTAINERS update
  
  From: "Sergey S. Kostyliov" <rathamahata@php4.ru>

ChangeSet@1.1717.1.36, 2004-05-19 16:36:00-07:00, akpm@osdl.org
  [PATCH] Work around gcc 3.3.3-hammer sched miscompilation on x86-64
  
  From: Andi Kleen <ak@muc.de>
  
  The new domain scheduler got miscompiled on x86-64 with gcc 3.3.3-hammer,
  which is shipping with some distributions.  The kernel deadlocks eventually
  under light stress on SMP systems with the right options.
  
  After some experiments it seems this simple change avoids the
  miscompilation.  It also doesn't pessimize the code unduly for other
  architectures.

ChangeSet@1.1717.1.35, 2004-05-19 16:35:49-07:00, akpm@osdl.org
  [PATCH] slab: add kmem_cache_alloc_node
  
  From: Manfred Spraul <manfred@colorfullife.com>
  
  The attached patch adds a simple kmem_cache_alloc_node function: allocate
  memory on a given node.  The function is intended for cpu bound structures.
   It's used for alloc_percpu and for the slab-internal per-cpu structures.
  Jack Steiner reported a ~3% performance increase for AIM7 on a 64-way
  Itanium 2.
  
  Port maintainers: The patch could cause problems if CPU_UP_PREPARE is
  called for a cpu on a node before the corresponding memory is attached
  and/or if alloc_pages_node doesn't fall back to memory from another node if
  there is no memory in the requested node.  I think noone does that, but I'm
  not sure.

ChangeSet@1.1717.1.34, 2004-05-19 16:35:39-07:00, akpm@osdl.org
  [PATCH] slab: allow arch override for kmem_bufctl_t
  
  From: Manfred Spraul <manfred@colorfullife.com>
  
  The slab allocator keeps track of the free objects in a slab with a linked
  list of integers (typedef'ed to kmem_bufctl_t).  Right now unsigned int is
  used for kmem_bufctl_t, i.e.  4 bytes per-object overhead.
  
  The attached patch implements a per-arch definition of for this type:
  Theoretically, unsigned short is sufficient for kmem_bufctl_t and this would
  reduce the per-object overhead to 2 bytes.  But some archs cannot operate on
  16-bit values efficiently, thus it's not possible to switch everyone to
  ushort.
  
  The chosen types are a result of dicussions with the various arch maintainers.

ChangeSet@1.1717.1.33, 2004-05-19 16:35:27-07:00, akpm@osdl.org
  [PATCH] slab: enable runtime cache line size on i386
  
  From: Manfred Spraul <manfred@colorfullife.com>
  
  the attached patch switches the SLAB_HWCACHE_ALIGN alignment from the
  compile time L1 cache line size to the runtime detected value for i386. 
  x86-64 already uses the runtime detection.

ChangeSet@1.1717.1.32, 2004-05-19 16:35:17-07:00, akpm@osdl.org
  [PATCH] Fix arithmetic in shrink_zone()
  
  From: Nick Piggin <nickpiggin@yahoo.com.au>
  
  If the zone has a very small number of inactive pages, local variable
  `ratio' can be huge and we do way too much scanning.  So much so that Ingo
  hit an NMI watchdog expiry, although that was because the zone would have a
  had a single refcount-zero page in it, and that logic recently got fixed up
  via get_page_testone().
  
  Nick's patch simply puts a sane-looking upper bound on the number of pages
  which we'll scan in this round.
  
  
  It fixes another failure case: if the inactive list becomes very small
  compared to the size of the active list, active list scanning (and therefore
  inactive list refilling) also becomes small.
  
  This patch causes inactive list scanning to be keyed off the size of the
  active+inactive lists.  It has the plus of hiding active and inactive
  balancing implementation from the higher level scanning code.  It will
  slightly change other aspects of scanning behaviour, but probably not
  significantly.

ChangeSet@1.1717.1.31, 2004-05-19 16:35:06-07:00, akpm@osdl.org
  [PATCH] dentry size tuning
  
  Experimenting with various values of DENTRY_STORAGE
  
   dentry size      objs/slab   dentry size * objs/slab    inline string
  
     148               26               3848                   32
     152               26               3952                   36
     156               25               3900                   40
     160               24               4000                   44
  
  We're currently at 160.  The patch fairly arbitrarily takes it down to 152, so
  we can fit a 35-char name into the inline part of the dentry.
  
  Also, go back to the old way of sizing d_iname so that any arch-specific
  compiler-forced alignemnts are honoured.

ChangeSet@1.1717.1.30, 2004-05-19 16:34:55-07:00, akpm@osdl.org
  [PATCH] Fix madvise length checking
  
  Fix http://bugme.osdl.org/show_bug.cgi?id=2710.
  
  When the user passed madvise a length of -1 through -4095, madvise blindly
  rounds this up to 0 then "succeeds".

ChangeSet@1.1717.1.29, 2004-05-19 16:34:45-07:00, akpm@osdl.org
  [PATCH] Remove hardcoded offsets from i386 asm
  
  From: Brian Gerst <bgerst@didntduck.org>
  
  Generate offsets for thread_info, cpuinfo_x86, and a few others instead of
  hardcoding them.

ChangeSet@1.1717.1.28, 2004-05-19 16:34:34-07:00, akpm@osdl.org
  [PATCH] fix radio-cadet `readq' namespace clash
  
  It conflicts with the readq() I/O function.

ChangeSet@1.1717.1.27, 2004-05-19 16:34:23-07:00, akpm@osdl.org
  [PATCH] security: add disable param to capabilities module
  
  From: Chris Wright <chrisw@osdl.org>
  
  Add disable param to capabilities module.  Similar to the SELinux param for
  disabling at boot time.  This allows vendors to ship single binary image with
  capabilities compiled statically, and disable it if they provide another
  security model compiled as module.

ChangeSet@1.1717.1.26, 2004-05-19 16:34:12-07:00, akpm@osdl.org
  [PATCH] speed up readahead for seeky loads
  
  From: Ram Pai <linuxram@us.ibm.com>
  
  Currently the readahead code tends to read one more page than it should with
  seeky database-style loads.  This was to prevent bogus readahead triggering
  when we step into the last page of the current window.
  
  The patch removes that workaround and fixes up the suboptimal logic instead.
  
  
  wrt the "rounding errors" mentioned in this patch, Ram provided the following
  description:
  
    Say the i/o size is 20 pages.
  
    Our algorithm starts by a initial average i/o size of 'ra_pages/2' which
    is mostly say 16.
  
    Now every time we take a average, the 'average' progresses as follows
    (16+20)/2=18
    (18+20)/2=19
    (19+20)/2=19
    (19+20)/2=19.....
    and the rounding error makes it never touch 20
  
  
  
  Benchmarking sitrep:
  
  			IOZONE
  
  	run on a nfs mounted filesystem:
  	client machine 2proc, 733MHz, 2GB memory
  	server machine 8proc, 700Mhz, 8GB memory
  
  ./iozone -c -t1 -s 4096m -r 128k

ChangeSet@1.1717.1.25, 2004-05-19 16:34:02-07:00, akpm@osdl.org
  [PATCH] dpt_i2o warning fixes
  
  drivers/scsi/dpt_i2o.c: In function `adpt_queue':
  drivers/scsi/dpt_i2o.c:442: warning: use of cast expressions as lvalues is deprecated
  drivers/scsi/dpt_i2o.c: In function `adpt_scsi_register':
  drivers/scsi/dpt_i2o.c:2213: warning: use of cast expressions as lvalues is deprecated

ChangeSet@1.1717.1.24, 2004-05-19 16:33:51-07:00, akpm@osdl.org
  [PATCH] Mark CONFIG_MAC_SERIAL (drivers/macintosh/macserial.c) as broken
  
  From: Arthur Othieno <a.othieno@bluewin.ch>
  
  CONFIG_MAC_SERIAL (drivers/macintosh/macserial.c) is marked obsolete and
  currently doesn't build.
  
  benh says: "I though build got fixed recently ...  well, anyway, the driver is
  indeed obsolete, there's a new one in drivers/serial now."

ChangeSet@1.1717.1.23, 2004-05-19 16:33:40-07:00, akpm@osdl.org
  [PATCH] PPC32: Minor OCP cleanups
  
  From: Matt Porter <mporter@kernel.crashing.org>
  
  Fixes a warning and a printk format in OCP.

ChangeSet@1.1717.1.22, 2004-05-19 16:33:30-07:00, akpm@osdl.org
  [PATCH] PPC64 iSeries virtual ethernet locking fix
  
  From: Olaf Hering <olh@suse.de>
  
  Missing spin_unlock in the error path.

ChangeSet@1.1717.1.21, 2004-05-19 16:33:19-07:00, akpm@osdl.org
  [PATCH] PPC64: iSeries virtual ethernet transmit errors
  
  From: Stephen Rothwell <sfr@au1.ibm.com>
  
  This patch stops the iseries_veth driver trying to send every packet to too
  many logical partitions.  Consequently, the number of transmit errors falls to
  (about) zero from a very large number.  This should also improve performance a
  bit as the driver is no longer doing 31 extra skb_clone()s and skb_free()s for
  each packet.

ChangeSet@1.1717.1.20, 2004-05-19 16:33:08-07:00, akpm@osdl.org
  [PATCH] PPC32: Get full register set on bad kernel accesses
  
  From: Paul Mackerras <paulus@sam