Merge tag 'for-5.11/drivers-2020-12-14' of git://git.kernel.dk/linux-block
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Dec 2020 21:09:32 +0000 (13:09 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Dec 2020 21:09:32 +0000 (13:09 -0800)
Pull block driver updates from Jens Axboe:
 "Nothing major in here:

   - NVMe pull request from Christoph:
        - nvmet passthrough improvements (Chaitanya Kulkarni)
        - fcloop error injection support (James Smart)
        - read-only support for zoned namespaces without Zone Append
          (Javier González)
        - improve some error message (Minwoo Im)
        - reject I/O to offline fabrics namespaces (Victor Gladkov)
        - PCI queue allocation cleanups (Niklas Schnelle)
        - remove an unused allocation in nvmet (Amit Engel)
        - a Kconfig spelling fix (Colin Ian King)
        - nvme_req_qid simplication (Baolin Wang)

   - MD pull request from Song:
        - Fix race condition in md_ioctl() (Dae R. Jeong)
        - Initialize read_slot properly for raid10 (Kevin Vigor)
        - Code cleanup (Pankaj Gupta)
        - md-cluster resync/reshape fix (Zhao Heming)

   - Move null_blk into its own directory (Damien Le Moal)

   - null_blk zone and discard improvements (Damien Le Moal)

   - bcache race fix (Dongsheng Yang)

   - Set of rnbd fixes/improvements (Gioh Kim, Guoqing Jiang, Jack Wang,
     Lutz Pogrell, Md Haris Iqbal)

   - lightnvm NULL pointer deref fix (tangzhenhao)

   - sr in_interrupt() removal (Sebastian Andrzej Siewior)

   - FC endpoint security support for s390/dasd (Jan Höppner, Sebastian
     Ott, Vineeth Vijayan). From the s390 arch guys, arch bits included
     as it made it easier for them to funnel the feature through the
     block driver tree.

   - Follow up fixes (Colin Ian King)"

* tag 'for-5.11/drivers-2020-12-14' of git://git.kernel.dk/linux-block: (64 commits)
  block: drop dead assignments in loop_init()
  sr: Remove in_interrupt() usage in sr_init_command().
  sr: Switch the sector size back to 2048 if sr_read_sector() changed it.
  cdrom: Reset sector_size back it is not 2048.
  drivers/lightnvm: fix a null-ptr-deref bug in pblk-core.c
  null_blk: Move driver into its own directory
  null_blk: Allow controlling max_hw_sectors limit
  null_blk: discard zones on reset
  null_blk: cleanup discard handling
  null_blk: Improve implicit zone close
  null_blk: improve zone locking
  block: Align max_hw_sectors to logical blocksize
  null_blk: Fail zone append to conventional zones
  null_blk: Fix zone size initialization
  bcache: fix race between setting bdev state to none and new write request direct to backing
  block/rnbd: fix a null pointer dereference on dev->blk_symlink_name
  block/rnbd-clt: Dynamically alloc buffer for pathname & blk_symlink_name
  block/rnbd: call kobject_put in the failure path
  Documentation/ABI/rnbd-srv: add document for force_close
  block/rnbd-srv: close a mapped device from server side.
  ...

22 files changed:
1  2 
arch/s390/include/asm/ccwdev.h
arch/s390/include/asm/cio.h
block/blk-settings.c
block/blk.h
drivers/block/loop.c
drivers/block/rnbd/rnbd-clt.c
drivers/md/bcache/super.c
drivers/md/md-cluster.c
drivers/md/md.c
drivers/md/md.h
drivers/md/raid10.c
drivers/nvme/host/core.c
drivers/nvme/host/multipath.c
drivers/nvme/host/nvme.h
drivers/nvme/host/pci.c
drivers/nvme/target/loop.c
drivers/s390/block/dasd.c
drivers/s390/block/dasd_eckd.c
drivers/s390/block/dasd_fba.c
drivers/s390/block/dasd_int.h
drivers/s390/cio/device.c
include/linux/blk-mq.h

Simple merge
Simple merge
Simple merge
diff --cc block/blk.h
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc drivers/md/md.c
Simple merge
diff --cc drivers/md/md.h
Simple merge
@@@ -1491,7 -1508,8 +1491,8 @@@ static void __make_request(struct mdde
        r10_bio->mddev = mddev;
        r10_bio->sector = bio->bi_iter.bi_sector;
        r10_bio->state = 0;
 -      memset(r10_bio->devs, 0, sizeof(r10_bio->devs[0]) * conf->geo.raid_disks);
+       r10_bio->read_slot = -1;
 +      memset(r10_bio->devs, 0, sizeof(r10_bio->devs[0]) * conf->copies);
  
        if (bio_data_dir(bio) == READ)
                raid10_read_request(mddev, bio, r10_bio);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -2084,19 -2107,25 +2084,24 @@@ static void __dasd_device_start_head(st
  
  static void __dasd_device_check_path_events(struct dasd_device *device)
  {
+       __u8 tbvpm, fcsecpm;
        int rc;
  
-       if (!dasd_path_get_tbvpm(device))
+       tbvpm = dasd_path_get_tbvpm(device);
+       fcsecpm = dasd_path_get_fcsecpm(device);
+       if (!tbvpm && !fcsecpm)
                return;
  
 -      if (device->stopped &
 -          ~(DASD_STOPPED_DC_WAIT | DASD_UNRESUMED_PM))
 +      if (device->stopped & ~(DASD_STOPPED_DC_WAIT))
                return;
-       rc = device->discipline->verify_path(device,
-                                            dasd_path_get_tbvpm(device));
-       if (rc)
+       rc = device->discipline->pe_handler(device, tbvpm, fcsecpm);
+       if (rc) {
                dasd_device_set_timer(device, 50);
-       else
+       } else {
                dasd_path_clear_all_verify(device);
+               dasd_path_clear_all_fcsec(device);
+       }
  };
  
  /*
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -594,8 -593,18 +594,20 @@@ static inline void blk_mq_cleanup_rq(st
                rq->q->mq_ops->cleanup_rq(rq);
  }
  
+ static inline void blk_rq_bio_prep(struct request *rq, struct bio *bio,
+               unsigned int nr_segs)
+ {
+       rq->nr_phys_segments = nr_segs;
+       rq->__data_len = bio->bi_iter.bi_size;
+       rq->bio = rq->biotail = bio;
+       rq->ioprio = bio_prio(bio);
+       if (bio->bi_disk)
+               rq->rq_disk = bio->bi_disk;
+ }
  blk_qc_t blk_mq_submit_bio(struct bio *bio);
 +void blk_mq_hctx_set_fq_lock_class(struct blk_mq_hw_ctx *hctx,
 +              struct lock_class_key *key);
  
  #endif