1. 01 Sep, 2007 15 commits
    • Trond Myklebust's avatar
      NFS: Fix a write request leak in nfs_invalidate_page() · 1b3b4a1a
      Trond Myklebust authored
      Ryusuke Konishi says:
      
      The recent truncate_complete_page() clears the dirty flag from a page
      before calling a_ops->invalidatepage(),
      ^^^^^^
      static void
      truncate_complete_page(struct address_space *mapping, struct page *page)
      {
              ...
              cancel_dirty_page(page, PAGE_CACHE_SIZE);  <--- Inserted here at
      kernel 2.6.20
      
              if (PagePrivate(page))
                      do_invalidatepage(page, 0);   ---> will call
      a_ops->invalidatepage()
              ...
      }
      
      and this is disturbing nfs_wb_page_priority() from calling 
      nfs_writepage_locked() that is expected to handle the pending
      request (=nfs_page) associated with the page.
      
      int nfs_wb_page_priority(struct inode *inode, struct page *page, int how)
      {
              ...
              if (clear_page_dirty_for_io(page)) {
                      ret = nfs_writepage_locked(page, &wbc);
                      if (ret < 0)
                              goto out;
              }
              ...
      }
      
      Since truncate_complete_page() will get rid of the page after
      a_ops->invalidatepage() returns, the request (=nfs_page) associated
      with the page becomes a garbage in nfs_inode->nfs_page_tree.
      ------------------------
      
      Fix this by ensuring that nfs_wb_page_priority() recognises that it may
      also need to clear out non-dirty pages that have an nfs_page associated
      with them.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      1b3b4a1a
    • Chuck Lever's avatar
      NFS: change NFS mount error return when hostname/pathname too long · 7d1cca72
      Chuck Lever authored
      According to the mount(2) man page, the proper error return code for the
      mount(2) system call when the special device name or the mounted-on
      directory name is too long is ENAMETOOLONG.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      7d1cca72
    • Chuck Lever's avatar
      NFS: Off-by-one length error in string handling · 350c73af
      Chuck Lever authored
      The hostname was getting truncated in the new text-based NFS mount API.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      350c73af
    • Chuck Lever's avatar
      NFS: Return a real error code from mount(2) · fdc6e2c8
      Chuck Lever authored
      Don't filter the return code from the in-kernel rpcbind or NFS mount
      clients.  Return the real error code so that callers of the new NFS
      text-based mount API can apply a useful retry strategy.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      fdc6e2c8
    • Chuck Lever's avatar
      NFS: mount option parser chokes on proto= · fdb66ff4
      Chuck Lever authored
      The new text-based NFS mount option parsing logic doesn't recognize any
      valid transport protocols due to a silly mistake in the protocol token
      matching logic.  This prevents basic mount requests such as:
      
         mount.nfs server:/export /mnt -o proto=tcp
      
      from working with the new text-based NFS mount API.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      fdb66ff4
    • Trond Myklebust's avatar
      NFSv4: Ensure that we pass the correct dentry to nfs4_intent_set_file · deee9369
      Trond Myklebust authored
      This patch fixes an Oops that was reported by Gabriel Barazer.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      deee9369
    • Trond Myklebust's avatar
      NFSv4: Fix a typo in _nfs4_do_open_reclaim · 65bbf6bd
      Trond Myklebust authored
      This should fix the following Oops reported by Jeff Garzik:
      
      kernel BUG at fs/nfs/nfs4xdr.c:1040!
      invalid opcode: 0000 [1] SMP 
      CPU 0 
      Modules linked in: nfs lockd sunrpc af_packet
      ipv6 cpufreq_ondemand acpi_cpufreq battery floppy nvram sg snd_hda_intel
      ata_generic snd_pcm_oss snd_mixer_oss snd_pcm i2c_i801 snd_page_alloc e1000
      firewire_ohci ata_piix i2c_core sr_mod cdrom sata_sil ahci libata sd_mod
      scsi_mod ext3 jbd ehci_hcd uhci_hcd
      Pid: 16353, comm: 10.10.10.1-recl Not tainted 2.6.23-rc3 #1
      RIP: 0010:[<ffffffff88240980>] [<ffffffff88240980>] :nfs:encode_open+0x1c0/0x330
      RSP: 0018:ffff8100467c5c60  EFLAGS: 00010202
      RAX: ffff81000f89b8b8 RBX: 00000000697a6f6d RCX: ffff81000f89b8b8
      RDX: 0000000000000004 RSI: 0000000000000004 RDI: ffff8100467c5c80
      RBP: ffff8100467c5c80 R08: ffff81000f89bc30 R09: ffff81000f89b83f
      R10: 0000000000000001 R11: ffffffff881e79e0 R12: ffff81003cbd1808
      R13: ffff81000f89b860 R14: ffff81005fc984e0 R15: ffffffff88240af0
      FS:  0000000000000000(0000) GS:ffffffff8052a000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
      CR2: 00002adb9e51a030 CR3: 000000007ea7e000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process 10.10.10.1-recl (pid: 16353, threadinfo ffff8100467c4000, task ffff8100038ce780)
      Stack:  ffff81004aeb6a40 ffff81003cbd1808 ffff81003cbd1808 ffffffff88240b5d
       ffff81000f89b8bc ffff81005fc984e8 ffff81000f89bc30 ffff81005fc984e8
       0000000300000000 0000000000000000 0000000000000000 ffff81003cbd1800
      Call Trace:
       [<ffffffff88240b5d>] :nfs:nfs4_xdr_enc_open_noattr+0x6d/0x90
       [<ffffffff881e74b7>] :sunrpc:rpcauth_wrap_req+0x97/0xf0
       [<ffffffff88240af0>] :nfs:nfs4_xdr_enc_open_noattr+0x0/0x90
       [<ffffffff881df57a>] :sunrpc:call_transmit+0x18a/0x290
       [<ffffffff881e5e7b>] :sunrpc:__rpc_execute+0x6b/0x290
       [<ffffffff881dff76>] :sunrpc:rpc_do_run_task+0x76/0xd0
       [<ffffffff882373f6>] :nfs:_nfs4_proc_open+0x76/0x230
       [<ffffffff88237a2e>] :nfs:nfs4_open_recover_helper+0x5e/0xc0
       [<ffffffff88237b74>] :nfs:nfs4_open_recover+0xe4/0x120
       [<ffffffff88238e14>] :nfs:nfs4_open_reclaim+0xa4/0xf0
       [<ffffffff882413c5>] :nfs:nfs4_reclaim_open_state+0x55/0x1b0
       [<ffffffff882417ea>] :nfs:reclaimer+0x2ca/0x390
       [<ffffffff88241520>] :nfs:reclaimer+0x0/0x390
       [<ffffffff8024e59b>] kthread+0x4b/0x80
       [<ffffffff8020cad8>] child_rip+0xa/0x12
       [<ffffffff8024e550>] kthread+0x0/0x80
       [<ffffffff8020cace>] child_rip+0x0/0x12
      
      
      Code: 0f 0b eb fe 48 89 ef c7 00 00 00 00 02 be 08 00 00 00 e8 79 
      RIP  [<ffffffff88240980>] :nfs:encode_open+0x1c0/0x330
       RSP <ffff8100467c5c60>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      65bbf6bd
    • Trond Myklebust's avatar
      NFS: Fix use of cancel_delayed_work_sync in nfs_release_automount_timer · 560aef74
      Trond Myklebust authored
      Doh! We can't use cancel_delayed_work_sync because we may have been called
      from an unmount that was being performed by nfs_automount_task.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      560aef74
    • Linus Torvalds's avatar
      Linux 2.6.23-rc5 · 40ffbfad
      Linus Torvalds authored
      40ffbfad
    • Linus Torvalds's avatar
      2f81eccb
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 6db602d4
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        IB/ehca: SRQ fixes to enable IPoIB CM
        IB/ehca: Fix Small QP regressions
      6db602d4
    • Trond Myklebust's avatar
      NFS: Fix the mount regression · e89a5a43
      Trond Myklebust authored
      This avoids the recent NFS mount regression (returning EBUSY when
      mounting the same filesystem twice with different parameters).
      
      The best I can do given the constraints appears to be to have the kernel
      first look for a superblock that matches both the fsid and the
      user-specified mount options, and then spawn off a new superblock if
      that search fails.
      
      Note that this is not the same as specifying nosharecache everywhere
      since nosharecache will never attempt to match an existing superblock.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Tested-by: default avatarHua Zhong <hzhong@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e89a5a43
    • Linus Torvalds's avatar
      x86: be even more careful about checking the stack frame on dumping · 36ad4885
      Linus Torvalds authored
      lguest didn't initialize the kernel stack the way a real i386 kernel
      does, and ended up triggering a corner-case in the stack frame checking
      that doesn't happen on naive i386, and that the stack dumping didn't
      handle quite right.
      
      This makes the frame handling more correct, and tries to clarify the
      code at the same time so that it's a bit more obvious what is going on.
      
      Thanks to Rusty Russell for debugging the lguest failure-
      
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      36ad4885
    • Linus Torvalds's avatar
      Do not use the ia64 clocksource on non-ia64 architectures · 3b2b64fd
      Linus Torvalds authored
      The HPET clocksource in drivers/char/hpet.c was written as generic code
      for ia64, but it is not yet ready to replace the native HPET clocksource
      implementations that the i386/x86-64 architectures use.
      
      On x86[-64], trying to register this clocksource results in potentially
      multiple hpet-based clocksources being registered, and if the ia64 one
      is chosen on x86_64 some users have experienced hangs.
      
      Eventually all three architectures may end up using the same code, but
      that is not the case right now.
      
      Cc: John Stultz <johnstul@us.ibm.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Paolo Ornati <ornati@fastwebnet.it>
      Cc: Bob Picco <bob.picco@hp.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3b2b64fd
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 · 618a821d
      Linus Torvalds authored
      * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
        - cxgb3 engine microcode load
        cxgb3 - Fix dev->priv usage
        qeth: Drop ARP packages on HiperSockets interface with NOARP attribute.
        qeth: provide specific message for OSA-adapters exclusively used
        qeth: crash during reboot after failing online setting
        qeth: Announce tx checksumming for qeth devices in TSO/EDDP mode
        qeth: dont return the return values of void functions.
        qeth: enforce a rate limit for inbound scatter gather messages
        qeth: ungrouping a device must not be interruptible
        netxen: fix crashes during module unload
        netxen: Avoid firmware load in PCI probe
        PS3: fix the bug that 'ifconfig down' would hang
        IOC3: Program UART predividers.
      618a821d
  2. 31 Aug, 2007 25 commits