09 Jun, 2006

30 commits

  • Replace all module uses with the new vfs_kern_mount() interface, and fix up
    simple_pin_fs().

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • do_kern_mount() does not allow the kernel to use private mount interfaces
    without exposing the same interfaces to userland. The problem is that the
    filesystem is referenced by name, thus meaning that it and its mount
    interface must be registered in the global filesystem list.

    vfs_kern_mount() passes the struct file_system_type as an explicit
    parameter in order to overcome this limitation.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Now that we have a real nfs_invalidate_page() to ensure that
    truncate_inode_pages() does the right thing when there are pending dirty
    pages, we can get rid of nfs_delete_inode().

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • In the case of a call to truncate_inode_pages(), we should really try to
    cancel any pending writes on the page.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • We just set *acl_len to zero, and attrlen is unsigned, so this comparison
    is clearly bogus. I have no idea what I was thinking.

    Fixes a bug that caused getacl to fail over krb5p.

    Signed-off-by: J. Bruce Fields
    Signed-off-by: Trond Myklebust

    J. Bruce Fields
     
  • Signed-off-by: Alexey Dobriyan
    Signed-off-by: Trond Myklebust

    Alexey Dobriyan
     
  • Fix two errors in the client-side acl cache: First, when nfs3_proc_getacl
    requests only the default acl of a file and the access acl is not cached
    already, a NULL access acl entry is cached instead of ERR_PTR(-EAGAIN)
    ("not cached").

    Second, update the cached acls in nfs3_proc_setacls: nfs_refresh_inode does
    not always invalidate the cached acls, and when it does not, the cached acls
    get out of sync.

    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Trond Myklebust

    Andreas Gruenbacher
     
  • Currently, we are accounting for all calls to nfs_revalidate_inode(), but not
    to nfs_revalidate_mapping(), or nfs_lookup_verify_inode(), etc...

    Signed-off-by: Trond Myklebust

    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: Trond Myklebust

    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: Trond Myklebust

    Trond Myklebust
     
  • Fix up a bug in the handling of NFS_INO_REVAL_PAGECACHE: make sure that
    nfs_update_inode() clears it when we're sure we're not racing with other
    updates.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • 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: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • The XID generator uses get_random_bytes to generate an initial XID.
    NFS_ROOT starts up before the random driver, though, so get_random_bytes
    doesn't set a random XID for NFS_ROOT. This causes NFS_ROOT mount points
    to reuse XIDs every time the client is booted. If the client boots often
    enough, the server will start serving old replies out of its DRC.

    Use net_random() instead.

    Test plan:
    I/O intensive workloads should perform well and generate no errors. Traces
    taken during client reboots should show that NFS_ROOT mounts use unique
    XIDs after every reboot.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • Make the RPC client select privileged ephemeral source ports at
    random. This improves DRC behavior on the server by using the
    same port when reconnecting for the same mount point, but using
    a different port for fresh mounts.

    The Linux TCP implementation already does this for nonprivileged
    ports. Note that TCP sockets in TIME_WAIT will prevent quick reuse
    of a random ephemeral port number by leaving the port INUSE until
    the connection transitions out of TIME_WAIT.

    Test plan:
    Connectathon against every known server implementation using multiple
    mount points. Locking especially.

    Signed-off-by: Chuck Lever
    Signed-off-by: Trond Myklebust

    Chuck Lever
     
  • Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • The Linux NFSv4 server violates RFC3530 in that the change attribute is not
    guaranteed to be updated for every change to the inode. Our optimisation
    for checking whether or not the inode metadata has changed or not is broken
    too. Grr....

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • The code that is supposed to zero the uninitialised partial pages when the
    server returns a short read is currently broken: it looks at the nfs_page
    wb_pgbase and wb_bytes fields instead of the equivalent nfs_read_data
    values when deciding where to start truncating the page.

    Also ensure that we are more careful about setting PG_uptodate
    before retrying a short read: the retry will change the nfs_read_data
    args.pgbase and args.count.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • * 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
    e1000: remove risky prefetch on next_skb->data
    e1000: fix ethtool test irq alloc as "probe"
    [PATCH] bcm43xx: add DMA rx poll workaround to DMA4

    Linus Torvalds
     
  • From: Martin Schwidefsky

    __futex_atomic_op needs to do an atomic operation in the user address space,
    not the kernel address space. Add the missing sacf 256/sacf 0 to switch to
    the secondary mode before doing the compare-and-swap. In addition add
    another fixup for catch specification exceptions if the compare-and-swap
    address is not aligned.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Schwidefsky
     
  • Looking at the reiser4 crash, I found a leak in debugfs. In
    debugfs_mknod(), we create the inode before checking if the dentry
    already has one attached. We don't free it if that is the case.

    These bugs happen quite often, I'm starting to think we should disallow
    such coding in CodingStyle.

    Signed-off-by: Jens Axboe
    Signed-off-by: Linus Torvalds

    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: Jens Axboe
    Signed-off-by: Linus Torvalds

    Jens Axboe
     
  • From: Malcom Parsons

    When scrolling up in SCROLL_PAN_REDRAW mode with a large limited scroll
    region, the bottom few lines have to be redrawn. Without this patch, the
    wrong text is drawn into these lines, corrupting the display.

    Observed in 2.6.14 when running an IRC client in the Nintendo DS linux
    port.

    I haven't tested if scrolling down has the same problem.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Malcom Parsons
     
  • From: Ralf Baechle

    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 is a step into direction of include hell so
    fixed by adding a forward declaration of struct mm_struct instead.

    Signed-off-by: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     
  • From: Lennert Buytenhek

    The recent renaming of m48t86's ->readb() and ->writeb() platform driver
    methods (2d7b20c1884777e66009be1a533641c19c4705f6) to ->readbyte() and
    ->writebyte() to fix the ia64 build broke the build of the cirrus ep93xx
    ARM platform. This patch fixes it up.

    Signed-off-by: Lennert Buytenhek
    Cc: Alessandro Zummo
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lennert Buytenhek
     
  • From: "Andy Currid"

    This patch fixes a kernel panic during boot that occurs on NVIDIA platforms
    that have HPET enabled.

    When HPET is enabled, the standard timer IRQ is routed to IOAPIC pin 2 and is
    advertised as such in the ACPI APIC table - but an earlier workaround in the
    kernel was ignoring this override. The fix is to honor timer IRQ overrides
    from ACPI when HPET is detected on an NVIDIA platform.

    Signed-off-by: Andy Currid
    Cc: "Brown, Len"
    Cc: "Yu, Luming"
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Currid
     
  • From: "Andy Currid"

    This patch fixes a kernel panic during boot that occurs on NVIDIA platforms
    that have HPET enabled.

    When HPET is enabled, the standard timer IRQ is routed to IOAPIC pin 2 and is
    advertised as such in the ACPI APIC table - but an earlier workaround in the
    kernel was ignoring this override. The fix is to honor timer IRQ overrides
    from ACPI when HPET is detected on an NVIDIA platform.

    Signed-off-by: Andy Currid
    Cc: "Brown, Len"
    Cc: "Yu, Luming"
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Currid
     
  • ….6 into upstream-fixes

    Jeff Garzik
     
  • …inville/wireless-2.6 into upstream-fixes

    Jeff Garzik
     
  • It was brought to our attention that the prefetches break e1000 traffic
    on xscale/arm architectures. Remove them for now. We'll let them
    stay in mm for a while, or find a better solution to enable.

    Signed-off-by: Jesse Brandeburg
    Signed-off-by: Auke Kok

    Auke Kok
     
  • New code added in 2.6.17 caused setup_irq to print a warning when
    running ethtool -t eth0 offline.

    This test marks the request_irq call made by this test as a "probe"
    to see if the interrupt is shared or not.

    Signed-off-by: Jesse Brandeburg
    Signed-off-by: Auke Kok

    Auke Kok
     

06 Jun, 2006

10 commits

  • Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
    [BRIDGE]: fix locking and memory leak in br_add_bridge
    [IRDA]: Missing allocation result check in irlap_change_speed().
    [PPPOE]: Missing result check in __pppoe_xmit().
    [NET]: Eliminate unused /proc/sys/net/ethernet
    [NETCONSOLE]: Clean up initcall warning.
    [TCP]: Avoid skb_pull if possible when trimming head

    Linus Torvalds
     
  • There are several bugs in error handling in br_add_bridge:
    - when dev_alloc_name fails, allocated net_device is not freed
    - unregister_netdev is called when rtnl lock is held
    - free_netdev is called before netdev_run_todo has a chance to be run after
    unregistering net_device

    Signed-off-by: Jiri Benc
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Jiri Benc
     
  • * master.kernel.org:/home/rmk/linux-2.6-serial:
    [SERIAL] typo: buad -> baud

    Linus Torvalds
     
  • * master.kernel.org:/home/rmk/linux-2.6-mmc:
    [MMC] Prevent au1xmmc.c breakage on non-Au1200 Alchemy
    [MMC] Add maintainers entry for MMC subsystem

    Linus Torvalds
     
  • * master.kernel.org:/home/rmk/linux-2.6-arm:
    [ARM] 3543/1: [Fwd: PXA270 bootparams address not set]
    [ARM] Trivial typo fixes

    Linus Torvalds
     
  • Move memory_present() in arch/mips/kernel/setup.c. When using sparsemem
    extreme, this function does an allocate for bootmem. This would always
    fail since init_bootmem hasn't been called yet.

    Move memory_present after free_bootmem. This only marks actual memory
    ranges as present instead of the entire address space.

    Signed-off-by: Chad Reese
    Signed-off-by: Ralf Baechle

    Chad Reese
     
  • Fix following warnings:
    linux/arch/mips/kernel/setup.c:432: warning: field width is not type int (arg 2)
    linux/arch/mips/kernel/setup.c:432: warning: field width is not type int (arg 4)
    linux/arch/mips/kernel/syscall.c:279: warning: unused variable `len'
    linux/arch/mips/kernel/syscall.c:280: warning: unused variable `name'
    linux/arch/mips/math-emu/dp_fint.c:32: warning: unused variable `xc'
    linux/arch/mips/math-emu/dp_flong.c:32: warning: unused variable `xc'
    linux/arch/mips/math-emu/sp_fint.c:32: warning: unused variable `xc'
    linux/arch/mips/math-emu/sp_flong.c:32: warning: unused variable `xc'

    (original patch by Atsushi, slight changes to the setup.c part by me.)

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Ralf Baechle

    Atsushi Nemoto
     
  • Fix following warnings:
    linux/arch/mips/kernel/setup.c:249:12: warning: constant 0xffffffff00000000 is so big it is unsigned long
    linux/arch/mips/kernel/cpu-bugs64.c:209:10: warning: constant 0xffffffffffffdb9a is so big it is unsigned long
    linux/arch/mips/kernel/cpu-bugs64.c:227:10: warning: constant 0xffffffffffffdb9a is so big it is unsigned long
    linux/arch/mips/kernel/cpu-bugs64.c:283:10: warning: constant 0xffffffffffffdb9a is so big it is unsigned long
    linux/arch/mips/kernel/cpu-bugs64.c:299:10: warning: constant 0xffffffffffffdb9a is so big it is unsigned long

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Ralf Baechle

    Atsushi Nemoto
     
  • RM7000 has 40-bit virtual / 36-bit physical address space.

    Signed-off-by: Ralf Baechle

    Ralf Baechle