1. 09 6月, 2006 6 次提交
    • T
      NFS: Separate metadata and page cache revalidation mechanisms · 44b11874
      Trond Myklebust 提交于
      Separate out the function of revalidating the inode metadata, and
      revalidating the mapping. The former may be called by lookup(),
      and only really needs to check that permissions, ctime, etc haven't changed
      whereas the latter needs only done when we want to read data from the page
      cache, and may need to sync and then invalidate the mapping.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      44b11874
    • T
      NFS: More page cache revalidation fixups · 38478b24
      Trond Myklebust 提交于
      Whenever the directory changes, we want to make sure that we always
      invalidate its page cache. Fix up update_changeattr() and
      nfs_mark_for_revalidate() so that they do so.
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      38478b24
    • C
      NFS: Optimize allocation of nfs_read/write_data structures · 0d0b5cb3
      Chuck Lever 提交于
      Clean up use of page_array, and fix an off-by-one error noticed by Tom
      Talpey which causes kmalloc calls in cases where using the page_array
      is sufficient.
      
      Test plan:
      Normal client functional testing with r/wsize=32768.
      Signed-off-by: NChuck Lever <cel@netapp.com>
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      0d0b5cb3
    • T
      NFS: Clean up inode metadata updates · 73a3d07c
      Trond Myklebust 提交于
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      73a3d07c
    • J
      [PATCH] elevator switching race · bc1c1169
      Jens Axboe 提交于
      There's a race between shutting down one io scheduler and firing up the
      next, in which a new io could enter and cause the io scheduler to be
      invoked with bad or NULL data.
      
      To fix this, we need to maintain the queue lock for a bit longer.
      Unfortunately we cannot do that, since the elevator init requires to be
      run without the lock held.  This isn't easily fixable, without also
      changing the mempool API.  So split the initialization into two parts,
      and alloc-init operation and an attach operation.  Then we can
      preallocate the io scheduler and related structures, and run the attach
      inside the lock after we detach the old one.
      
      This patch has survived 30 minutes of 1 second io scheduler switching
      with a very busy io load.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      bc1c1169
    • R
      [PATCH] Fix mempolicy.h build error · 45b35a5c
      Ralf Baechle 提交于
      From: Ralf Baechle <ralf@linux-mips.org>
      
      <linux/mempolicy.h> uses struct mm_struct and relies on a definition or
      declaration somehow magically being dragged in which may result in a
      build:
      
      [...]
        CC      mm/mempolicy.o
      In file included from mm/mempolicy.c:69:
      include/linux/mempolicy.h:150: warning: ‘struct mm_struct’ declared inside parameter list
      include/linux/mempolicy.h:150: warning: its scope is only this definition or declaration, which is probably not what you want
      include/linux/mempolicy.h:175: warning: ‘struct mm_struct’ declared inside parameter list
      mm/mempolicy.c:622: error: conflicting types for ‘do_migrate_pages’
      include/linux/mempolicy.h:175: error: previous declaration of ‘do_migrate_pages’ was here
      mm/mempolicy.c:1661: error: conflicting types for ‘mpol_rebind_mm’
      include/linux/mempolicy.h:150: error: previous declaration of ‘mpol_rebind_mm’ was here
      make[1]: *** [mm/mempolicy.o] Error 1
      make: *** [mm] Error 2
      [ralf@denk linux-ip35]$
      
      Including <linux/sched.h> is a step into direction of include hell so
      fixed by adding a forward declaration of struct mm_struct instead.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      45b35a5c
  2. 06 6月, 2006 2 次提交
    • A
      [PATCH] m48t86: ia64 build fix · 2d7b20c1
      Andrew Morton 提交于
      From: Andrew Morton <akpm@osdl.org>
      
      drivers/rtc/rtc-m48t86.c: In function `m48t86_rtc_read_time':
      drivers/rtc/rtc-m48t86.c:51: error: structure has no member named `ia64_mv'
      drivers/rtc/rtc-m48t86.c:55: error: structure has no member named `ia64_mv'
      drivers/rtc/rtc-m48t86.c:56: error: structure has no member named `ia64_mv'
      drivers/rtc/rtc-m48t86.c:57: error: structure has no member named `ia64_mv'
      drivers/rtc/rtc-m48t86.c:58: error: structure has no member named `ia64_mv'
      drivers/rtc/rtc-m48t86.c:60: error: structure has no member named `ia64_mv'
      
      readb() and writeb() are macros on ia64.
      
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2d7b20c1
    • R
      [PATCH] Sparsemem build fix · 93ff66bf
      Ralf Baechle 提交于
      From: Ralf Baechle <ralf@linux-mips.org>
      
      <linux/mmzone.h> uses PAGE_SIZE, PAGE_SHIFT from <asm/page.h> without
      including that header itself.  For some sparsemem configurations this may
      result in build errors like:
      
        CC      init/initramfs.o
      In file included from include/linux/gfp.h:4,
                       from include/linux/slab.h:15,
                       from include/linux/percpu.h:4,
                       from include/linux/rcupdate.h:41,
                       from include/linux/dcache.h:10,
                       from include/linux/fs.h:226,
                       from init/initramfs.c:2:
      include/linux/mmzone.h:498:22: warning: "PAGE_SHIFT" is not defined
      In file included from include/linux/gfp.h:4,
                       from include/linux/slab.h:15,
                       from include/linux/percpu.h:4,
                       from include/linux/rcupdate.h:41,
                       from include/linux/dcache.h:10,
                       from include/linux/fs.h:226,
                       from init/initramfs.c:2:
      include/linux/mmzone.h:526: error: `PAGE_SIZE' undeclared here (not in a function)
      include/linux/mmzone.h: In function `__pfn_to_section':
      include/linux/mmzone.h:573: error: `PAGE_SHIFT' undeclared (first use in this function)
      include/linux/mmzone.h:573: error: (Each undeclared identifier is reported only once
      include/linux/mmzone.h:573: error: for each function it appears in.)
      include/linux/mmzone.h: In function `pfn_valid':
      include/linux/mmzone.h:578: error: `PAGE_SHIFT' undeclared (first use in this function)
      make[1]: *** [init/initramfs.o] Error 1
      make: *** [init] Error 2
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Seems-reasonable-to: Andy Whitcroft <apw@shadowen.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      93ff66bf
  3. 01 6月, 2006 1 次提交
  4. 30 5月, 2006 2 次提交
  5. 24 5月, 2006 2 次提交
  6. 23 5月, 2006 1 次提交
  7. 22 5月, 2006 3 次提交
  8. 20 5月, 2006 1 次提交
  9. 17 5月, 2006 5 次提交
  10. 16 5月, 2006 4 次提交
  11. 13 5月, 2006 1 次提交
  12. 11 5月, 2006 2 次提交
  13. 09 5月, 2006 1 次提交
  14. 07 5月, 2006 2 次提交
  15. 04 5月, 2006 2 次提交
  16. 03 5月, 2006 2 次提交
  17. 02 5月, 2006 3 次提交
    • J
      [PATCH] vmsplice: restrict stealing a little more · 330ab716
      Jens Axboe 提交于
      Apply the same rules as the anon pipe pages, only allow stealing
      if no one else is using the page.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      330ab716
    • J
      [PATCH] splice: fix page LRU accounting · a893b99b
      Jens Axboe 提交于
      Currently we rely on the PIPE_BUF_FLAG_LRU flag being set correctly
      to know whether we need to fiddle with page LRU state after stealing it,
      however for some origins we just don't know if the page is on the LRU
      list or not.
      
      So remove PIPE_BUF_FLAG_LRU and do this check/add manually in pipe_to_file()
      instead.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      a893b99b
    • P
      [NETFILTER] x_tables: fix compat related crash on non-x86 · 46c5ea3c
      Patrick McHardy 提交于
      When iptables userspace adds an ipt_standard_target, it calculates the size
      of the entire entry as:
      
      sizeof(struct ipt_entry) + XT_ALIGN(sizeof(struct ipt_standard_target))
      
      ipt_standard_target looks like this:
      
        struct xt_standard_target
        {
              struct xt_entry_target target;
              int verdict;
        };
      
      xt_entry_target contains a pointer, so when compiled for 64 bit the
      structure gets an extra 4 byte of padding at the end. On 32 bit
      architectures where iptables aligns to 8 byte it will also have 4
      byte padding at the end because it is only 36 bytes large.
      
      The compat_ipt_standard_fn in the kernel adjusts the offsets by
      
        sizeof(struct ipt_standard_target) - sizeof(struct compat_ipt_standard_target),
      
      which will always result in 4, even if the structure from userspace
      was already padded to a multiple of 8. On x86 this works out by
      accident because userspace only aligns to 4, on all other
      architectures this is broken and causes incorrect adjustments to
      the size and following offsets.
      
      Thanks to Linus for lots of debugging help and testing.
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      46c5ea3c