1. 24 Apr, 2017 25 commits
  2. 23 Apr, 2017 6 commits
  3. 21 Apr, 2017 9 commits
    • Dan Carpenter's avatar
      lightnvm: don't print a warning for ADDR_EMPTY · 659226eb
      Dan Carpenter authored
      Reading from ADDR_EMPTY is out of bounds.  The current code generates a
      static checker warning because we check for out of bounds "lba" before
      we check for ADDR_EMPTY, so the second check is always false.  It looks
      like we intended ADDR_EMPTY to be a no-op without printing a warning.
      
      Fixes: a4bd217b ("lightnvm: physical block device (pblk) target")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: default avatarJavier González <javier@cnexlabs.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      659226eb
    • Dan Carpenter's avatar
      lightnvm: potential underflow in pblk_read_rq() · 5bf1e1ee
      Dan Carpenter authored
      This is a static checker fix, and perhaps not a real bug.  The static
      checker thinks that nr_secs could be negative.  It would result in
      zeroing more memory than intended.  Anyway, even if it's not a bug,
      changing this variable to unsigned makes the code easier to audit.
      
      Fixes: a4bd217b ("lightnvm: physical block device (pblk) target")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: default avatarJavier González <javier@cnexlabs.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      5bf1e1ee
    • Ilya Dryomov's avatar
      block: get rid of blk_integrity_revalidate() · 19b7ccf8
      Ilya Dryomov authored
      Commit 25520d55 ("block: Inline blk_integrity in struct gendisk")
      introduced blk_integrity_revalidate(), which seems to assume ownership
      of the stable pages flag and unilaterally clears it if no blk_integrity
      profile is registered:
      
          if (bi->profile)
                  disk->queue->backing_dev_info->capabilities |=
                          BDI_CAP_STABLE_WRITES;
          else
                  disk->queue->backing_dev_info->capabilities &=
                          ~BDI_CAP_STABLE_WRITES;
      
      It's called from revalidate_disk() and rescan_partitions(), making it
      impossible to enable stable pages for drivers that support partitions
      and don't use blk_integrity: while the call in revalidate_disk() can be
      trivially worked around (see zram, which doesn't support partitions and
      hence gets away with zram_revalidate_disk()), rescan_partitions() can
      be triggered from userspace at any time.  This breaks rbd, where the
      ceph messenger is responsible for generating/verifying CRCs.
      
      Since blk_integrity_{un,}register() "must" be used for (un)registering
      the integrity profile with the block layer, move BDI_CAP_STABLE_WRITES
      setting there.  This way drivers that call blk_integrity_register() and
      use integrity infrastructure won't interfere with drivers that don't
      but still want stable pages.
      
      Fixes: 25520d55 ("block: Inline blk_integrity in struct gendisk")
      Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Mike Snitzer <snitzer@redhat.com>
      Cc: stable@vger.kernel.org # 4.4+, needs backporting
      Tested-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      19b7ccf8
    • Rakesh Pandit's avatar
      lightnvm: propagate pblk_init return to userspace · 8d77bb82
      Rakesh Pandit authored
      From userspace calling ioctl(NVM_DEV_CREATE) was returning ENOMEM for
      invalid arguments even though pblk (pblk_init) was returning correctly
      -EINVAL to nvm_create_tgt inside core.  This patch propagates the
      correct return value to userspace.
      
      Because pblk was introduced recently this only needs to go in 4.12.
      
      Fixes: a4bd217b ("lightnvm: physical block device (pblk) target")
      Signed-off-by: default avatarRakesh Pandit <rakesh@tuxera.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      8d77bb82
    • Bart Van Assche's avatar
      blk-mq: Fix preempt count imbalance · abc25a69
      Bart Van Assche authored
      Avoid that the following kernel bug gets triggered:
      
      BUG: sleeping function called from invalid context at ./include/linux/buffer_head.h:349
      in_atomic(): 1, irqs_disabled(): 0, pid: 8019, name: find
      CPU: 10 PID: 8019 Comm: find Tainted: G        W I     4.11.0-rc4-dbg+ #2
      Call Trace:
       dump_stack+0x68/0x93
       ___might_sleep+0x16e/0x230
       __might_sleep+0x4a/0x80
       __ext4_get_inode_loc+0x1e0/0x4e0
       ext4_iget+0x70/0xbc0
       ext4_iget_normal+0x2f/0x40
       ext4_lookup+0xb6/0x1f0
       lookup_slow+0x104/0x1e0
       walk_component+0x19a/0x330
       path_lookupat+0x4b/0x100
       filename_lookup+0x9a/0x110
       user_path_at_empty+0x36/0x40
       vfs_statx+0x67/0xc0
       SYSC_newfstatat+0x20/0x40
       SyS_newfstatat+0xe/0x10
       entry_SYSCALL_64_fastpath+0x18/0xad
      
      This happens since the big if/else in blk_mq_make_request() doesn't
      have final else section that also drops the ctx. Add that.
      
      Fixes: b00c53e8 ("blk-mq: fix schedule-while-atomic with scheduler attached")
      Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
      Cc: Omar Sandoval <osandov@fb.com>
      
      Added a bit more to the commit log.
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      abc25a69
    • Jens Axboe's avatar
      Merge branch 'nvme-4.12' of git://git.infradead.org/nvme into for-4.12/block · f8a05a1d
      Jens Axboe authored
      Christoph writes:
      
      This is the current NVMe pile: virtualization extensions, lots of FC
      updates and various misc bits.  There are a few more FC bits that didn't
      make the cut, but we'd like to get this request out before the merge
      window for sure.
      f8a05a1d
    • Jens Axboe's avatar
      mtip32xx: fix dereference of stack garbage · 95c55ff4
      Jens Axboe authored
      We need to get the command payload from the request before
      we attempt to dereference it.
      
      Fixes: 4dda4735 ("mtip32xx: add a status field to struct mtip_cmd")
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      95c55ff4
    • Junxiong Guan's avatar
      nvme: let dm-mpath distinguish nvme error codes · e02ab023
      Junxiong Guan authored
      Currently most IOs which return the nvme error codes are retried on
      the other path if those IOs returns EIO from NVMe driver. This
      patch let Multipath distinguish nvme media error codes and some
      generic or cmd-specific nvme error codes so that multipath will
      not retry those kinds of IO, to save bandwidth.
      Signed-off-by: default avatarJunxiong Guan <guanjunxiong@huawei.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      e02ab023
    • Keith Busch's avatar
      nvme/pci: Poll CQ on timeout · 7776db1c
      Keith Busch authored
      If an IO timeout occurs, it's helpful to know if the controller did not
      post a completion or the driver missed an interrupt. While we never expect
      the latter, this patch will make it possible to tell the difference so
      we don't have to guess.
      Signed-off-by: default avatarKeith Busch <keith.busch@intel.com>
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Tested-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
      Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
      7776db1c