1. 19 Jun, 2015 3 commits
  2. 04 Jun, 2015 7 commits
    • Chuck Lever's avatar
      rpcrdma: Merge svcrdma and xprtrdma modules into one · ffe1f0df
      Chuck Lever authored
      Bi-directional RPC support means code in svcrdma.ko invokes a bit of
      code in xprtrdma.ko, and vice versa. To avoid loader/linker loops,
      merge the server and client side modules together into a single
      module.
      
      When backchannel capabilities are added, the combined module will
      register all needed transport capabilities so that Upper Layer
      consumers automatically have everything needed to create a
      bi-directional transport connection.
      
      Module aliases are added for backwards compatibility with user
      space, which still may expect svcrdma.ko or xprtrdma.ko to be
      present.
      
      This commit reverts commit 2e8c12e1 ("xprtrdma: add separate
      Kconfig options for NFSoRDMA client and server support") and
      provides a single CONFIG option for enabling the new module.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      ffe1f0df
    • Chuck Lever's avatar
      svcrdma: Add a separate "max data segs macro for svcrdma · 0380a3f3
      Chuck Lever authored
      The server and client maximum are architecturally independent.
      Allow changing one without affecting the other.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      0380a3f3
    • Chuck Lever's avatar
      svcrdma: Replace GFP_KERNEL in a loop with GFP_NOFAIL · b7e0b9a9
      Chuck Lever authored
      At the 2015 LSF/MM, it was requested that memory allocation
      call sites that request GFP_KERNEL allocations in a loop should be
      annotated with __GFP_NOFAIL.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      b7e0b9a9
    • Chuck Lever's avatar
      svcrdma: Keep rpcrdma_msg fields in network byte-order · 30b7e246
      Chuck Lever authored
      Fields in struct rpcrdma_msg are __be32. Don't byte-swap these
      fields when decoding RPC calls and then swap them back for the
      reply. For the most part, they can be left alone.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      30b7e246
    • Chuck Lever's avatar
      svcrdma: Fix byte-swapping in svc_rdma_sendto.c · 70747c25
      Chuck Lever authored
      In send_write_chunks(), we have:
      
      	for (xdr_off = rqstp->rq_res.head[0].iov_len, chunk_no = 0;
      	     xfer_len && chunk_no < arg_ary->wc_nchunks;
      	     chunk_no++) {
      		 . . .
      	}
      
      Note that arg_ary->wc_nchunk is in network byte-order. For the
      comparison to work correctly, both have to be in native byte-order.
      
      In send_reply_chunks, we have:
      
      	write_len = min(xfer_len, htonl(ch->rs_length));
      
      xfer_len is in native byte-order, and ch->rs_length is in
      network byte-order. be32_to_cpu() is the correct byte swap
      for ch->rs_length.
      
      As an additional clean up, replace ntohl() with be32_to_cpu() in
      a few other places.
      
      This appears to address a problem with large rsize hangs while
      using PHYSICAL memory registration. I suspect that is the only
      registration mode that uses more than one chunk element.
      
      BugLink: https://bugzilla.linux-nfs.org/show_bug.cgi?id=248Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      70747c25
    • Kinglong Mee's avatar
      nfsd: Update callback sequnce id only CB_SEQUENCE success · 276f03e3
      Kinglong Mee authored
      When testing pnfs layout, nfsd got error NFS4ERR_SEQ_MISORDERED.
      It is caused by nfs return NFS4ERR_DELAY before validate_seqid(),
      don't update the sequnce id, but nfsd updates the sequnce id !!!
      
      According to RFC5661 20.9.3,
      " If CB_SEQUENCE returns an error, then the state of the slot
      (sequence ID, cached reply) MUST NOT change. "
      Signed-off-by: default avatarKinglong Mee <kinglongmee@gmail.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      276f03e3
    • Kinglong Mee's avatar
      nfsd: Reset cb_status in nfsd4_cb_prepare() at retrying · 4399396e
      Kinglong Mee authored
      nfsd enters a infinite loop and prints message every 10 seconds:
      
      May 31 18:33:52 test-server kernel: Error sending entire callback!
      May 31 18:34:01 test-server kernel: Error sending entire callback!
      
      This is caused by a cb_layoutreturn getting error -10008
      (NFS4ERR_DELAY), the client crashing, and then nfsd entering the
      infinite loop:
      
        bc_sendto --> call_timeout --> nfsd4_cb_done --> nfsd4_cb_layout_done
        with error -10008 --> rpc_delay(task, HZ/100) --> bc_sendto ...
      
      Reproduced using xfstests 074 with nfs client's kdump on,
      CONFIG_DEFAULT_HUNG_TASK_TIMEOUT set, and client's blkmapd down:
      
      1. nfs client's write operation will get the layout of file,
         and then send getdeviceinfo,
      2. but layout segment is not recorded by client because blkmapd is down,
      3. client writes data by sending WRITE to server,
      4. nfs server recalls the layout of the file before WRITE,
      5. network error causes the client reset the session and return NFS4ERR_DELAY,
      6. so client's WRITE operation is waiting the reply.
         If the task hangs 120s, the client will crash.
      7. so that, the next bc_sendto will fail with TIMEOUT,
         and cb_status is NFS4ERR_DELAY.
      Signed-off-by: default avatarKinglong Mee <kinglongmee@gmail.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      4399396e
  3. 03 Jun, 2015 2 commits
  4. 01 Jun, 2015 1 commit
  5. 29 May, 2015 4 commits
  6. 07 May, 2015 1 commit
  7. 04 May, 2015 12 commits
  8. 03 May, 2015 8 commits
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2015-04-30' of git://anongit.freedesktop.org/drm-intel into drm-fixes · 71aee819
      Dave Airlie authored
      Just a single intel fix
      * tag 'drm-intel-fixes-2015-04-30' of git://anongit.freedesktop.org/drm-intel:
        drm/i915/chv: Implement WaDisableShadowRegForCpd
      71aee819
    • Dave Airlie's avatar
      Merge branch 'drm-next0420' of https://github.com/markyzq/kernel-drm-rockchip into drm-fixes · df9ebeb2
      Dave Airlie authored
      one fix and maintainers update
      * 'drm-next0420' of https://github.com/markyzq/kernel-drm-rockchip:
        drm/rockchip: fix error check when getting irq
        MAINTAINERS: add entry for Rockchip drm drivers
      df9ebeb2
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 61f06db0
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "This is three logical fixes (as 5 patches).
      
        The 3ware class of drivers were causing an oops with multiqueue by
        tearing down the command mappings after completing the command (where
        the variables in the command used to tear down the mapping were
        no-longer valid).  There's also a fix for the qnap iscsi target which
        was choking on us sending it commands that were too long and a fix for
        the reworked aha1542 allocating GFP_KERNEL under a lock"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        3w-9xxx: fix command completion race
        3w-xxxx: fix command completion race
        3w-sas: fix command completion race
        aha1542: Allocate memory before taking a lock
        SCSI: add 1024 max sectors black list flag
      61f06db0
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma · 33332224
      Linus Torvalds authored
      Pull slave dmaengine fixes from Vinod Koul:
       "Here are the fixes in dmaengine subsystem for rc2:
      
         - privatecnt fix for slave dma request API by Christopher
      
         - warn fix for PM ifdef in usb-dmac by Geert
      
         - fix hardware dependency for xgene by Jean"
      
      * 'next' of git://git.infradead.org/users/vkoul/slave-dma:
        dmaengine: increment privatecnt when using dma_get_any_slave_channel
        dmaengine: xgene: Set hardware dependency
        dmaengine: usb-dmac: Protect PM-only functions to kill warning
      33332224
    • Linus Torvalds's avatar
      Merge tag 'powerpc-4.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux · 180d89f6
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
       - build fix for SMP=n in book3s_xics.c
       - fix for Daniel's pci_controller_ops on powernv.
       - revert the TM syscall abort patch for now.
       - CPU affinity fix from Nathan.
       - two EEH fixes from Gavin.
       - fix for CR corruption from Sam.
       - selftest build fix.
      
      * tag 'powerpc-4.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux:
        powerpc/powernv: Restore non-volatile CRs after nap
        powerpc/eeh: Delay probing EEH device during hotplug
        powerpc/eeh: Fix race condition in pcibios_set_pcie_reset_state()
        powerpc/pseries: Correct cpu affinity for dlpar added cpus
        selftests/powerpc: Fix the pmu install rule
        Revert "powerpc/tm: Abort syscalls in active transactions"
        powerpc/powernv: Fix early pci_controller_ops loading.
        powerpc/kvm: Fix SMP=n build error in book3s_xics.c
      180d89f6
    • Jan Kara's avatar
      ext4: fix growing of tiny filesystems · 2c869b26
      Jan Kara authored
      The estimate of necessary transaction credits in ext4_flex_group_add()
      is too pessimistic. It reserves credit for sb, resize inode, and resize
      inode dindirect block for each group added in a flex group although they
      are always the same block and thus it is enough to account them only
      once. Also the number of modified GDT block is overestimated since we
      fit EXT4_DESC_PER_BLOCK(sb) descriptors in one block.
      
      Make the estimation more precise. That reduces number of requested
      credits enough that we can grow 20 MB filesystem (which has 1 MB
      journal, 79 reserved GDT blocks, and flex group size 16 by default).
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
      Reviewed-by: default avatarEric Sandeen <sandeen@redhat.com>
      2c869b26
    • Davide Italiano's avatar
      ext4: move check under lock scope to close a race. · 280227a7
      Davide Italiano authored
      fallocate() checks that the file is extent-based and returns
      EOPNOTSUPP in case is not. Other tasks can convert from and to
      indirect and extent so it's safe to check only after grabbing
      the inode mutex.
      Signed-off-by: default avatarDavide Italiano <dccitaliano@gmail.com>
      Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
      Cc: stable@vger.kernel.org
      280227a7
    • Lukas Czerner's avatar
      ext4: fix data corruption caused by unwritten and delayed extents · d2dc317d
      Lukas Czerner authored
      Currently it is possible to lose whole file system block worth of data
      when we hit the specific interaction with unwritten and delayed extents
      in status extent tree.
      
      The problem is that when we insert delayed extent into extent status
      tree the only way to get rid of it is when we write out delayed buffer.
      However there is a limitation in the extent status tree implementation
      so that when inserting unwritten extent should there be even a single
      delayed block the whole unwritten extent would be marked as delayed.
      
      At this point, there is no way to get rid of the delayed extents,
      because there are no delayed buffers to write out. So when a we write
      into said unwritten extent we will convert it to written, but it still
      remains delayed.
      
      When we try to write into that block later ext4_da_map_blocks() will set
      the buffer new and delayed and map it to invalid block which causes
      the rest of the block to be zeroed loosing already written data.
      
      For now we can fix this by simply not allowing to set delayed status on
      written extent in the extent status tree. Also add WARN_ON() to make
      sure that we notice if this happens in the future.
      
      This problem can be easily reproduced by running the following xfs_io.
      
      xfs_io -f -c "pwrite -S 0xaa 4096 2048" \
                -c "falloc 0 131072" \
                -c "pwrite -S 0xbb 65536 2048" \
                -c "fsync" /mnt/test/fff
      
      echo 3 > /proc/sys/vm/drop_caches
      xfs_io -c "pwrite -S 0xdd 67584 2048" /mnt/test/fff
      
      This can be theoretically also reproduced by at random by running fsx,
      but it's not very reliable, though on machines with bigger page size
      (like ppc) this can be seen more often (especially xfstest generic/127)
      Signed-off-by: default avatarLukas Czerner <lczerner@redhat.com>
      Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
      Cc: stable@vger.kernel.org
      d2dc317d
  9. 02 May, 2015 2 commits