1. 21 May, 2004 12 commits
    • Andrew Morton's avatar
      [PATCH] ramdisk: implement writepages() · ef70d82a
      Andrew Morton authored
      Implement an empty ->writepages() so that attempts to write back ramdisk pages
      have less work to do.
      ef70d82a
    • Andrew Morton's avatar
      [PATCH] ramdisk: fix PageUptodate() handling · bf1570fe
      Andrew Morton authored
      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.
      bf1570fe
    • Andrew Morton's avatar
      [PATCH] ramdisk: use kmap_atomic() in rd_blkdev_pagecache_IO() · 5e86fee4
      Andrew Morton authored
      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.
      5e86fee4
    • Andrew Morton's avatar
      [PATCH] ramdisk: lock blockdev pages during "IO". · f8cc9647
      Andrew Morton authored
      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).
      f8cc9647
    • Andrew Morton's avatar
      [PATCH] ramdisk memory allocation fixes · 5be8e6a2
      Andrew Morton authored
      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.
      5be8e6a2
    • Andrew Morton's avatar
      [PATCH] ramdisk fixes · a16539ba
      Andrew Morton authored
      - 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.
      a16539ba
    • Andrew Morton's avatar
      [PATCH] ppc64: make enter_rtas() take unsigned long arg · c8dcfa85
      Andrew Morton authored
      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.
      c8dcfa85
    • Andrew Morton's avatar
      [PATCH] ppc64: trivial cleanup · 3897e867
      Andrew Morton authored
      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.
      3897e867
    • Andrew Morton's avatar
      [PATCH] ppc64: update xmon debugger · 984aa1e8
      Andrew Morton authored
      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.
      984aa1e8
    • Andrew Morton's avatar
      [PATCH] ppc64: fix inline version of _raw_spin_trylock · 68a6cd9b
      Andrew Morton authored
      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.
      68a6cd9b
    • Andrew Morton's avatar
      [PATCH] ppc64: Fix readq & writeq · fb5c2d93
      Andrew Morton authored
      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).
      fb5c2d93
    • Andrew Morton's avatar
      [PATCH] fix for stuck cpus at boot] · e0689d5d
      Andrew Morton authored
      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.
      e0689d5d
  2. 20 May, 2004 25 commits
  3. 19 May, 2004 3 commits