Re: [PATCH 8/9] sd: Implement support for ZBC devices

2016-09-19 Thread Shaun Tancheff
On Mon, Sep 19, 2016 at 4:27 PM, Damien Le Moal  wrote:
> From: Hannes Reinecke 
>
> Implement ZBC support functions to setup zoned disks and fill the
> block device zone information tree during the device scan. The
> zone information tree is also always updated on disk revalidation.
> This adds support for the REQ_OP_ZONE* operations and also implements
> the new RESET_WP provisioning mode so that discard requests can be
> mapped to the RESET WRITE POINTER command for devices with a constant
> zone size.
>
> The capacity read of the device triggers the zone information read
> for zoned block devices. As this needs the device zone model, the
> the call to sd_read_capacity is moved after the call to
> sd_read_block_characteristics so that host-aware devices are
> properlly initialized. The call to sd_zbc_read_zones in
> sd_read_capacity may change the device capacity obtained with
> the sd_read_capacity_16 function for devices reporting only the
> capacity of conventional zones at the beginning of the LBA range
> (i.e. devices with rc_basis et to 0).
>
> Signed-off-by: Hannes Reinecke 
> Signed-off-by: Damien Le Moal 
> ---
>  drivers/scsi/Makefile |1 +
>  drivers/scsi/sd.c |  147 --
>  drivers/scsi/sd.h |   68 +++
>  drivers/scsi/sd_zbc.c | 1097 
> +
>  include/scsi/scsi_proto.h |   17 +
>  5 files changed, 1304 insertions(+), 26 deletions(-)
>  create mode 100644 drivers/scsi/sd_zbc.c
>
> diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
> index d539798..fabcb6d 100644
> --- a/drivers/scsi/Makefile
> +++ b/drivers/scsi/Makefile
> @@ -179,6 +179,7 @@ hv_storvsc-y:= storvsc_drv.o
>
>  sd_mod-objs:= sd.o
>  sd_mod-$(CONFIG_BLK_DEV_INTEGRITY) += sd_dif.o
> +sd_mod-$(CONFIG_BLK_DEV_ZONED) += sd_zbc.o
>
>  sr_mod-objs:= sr.o sr_ioctl.o sr_vendor.o
>  ncr53c8xx-flags-$(CONFIG_SCSI_ZALON) \
> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
> index d3e852a..46b8b78 100644
> --- a/drivers/scsi/sd.c
> +++ b/drivers/scsi/sd.c
> @@ -92,6 +92,7 @@ MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK15_MAJOR);
>  MODULE_ALIAS_SCSI_DEVICE(TYPE_DISK);
>  MODULE_ALIAS_SCSI_DEVICE(TYPE_MOD);
>  MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
> +MODULE_ALIAS_SCSI_DEVICE(TYPE_ZBC);
>
>  #if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT)
>  #define SD_MINORS  16
> @@ -99,7 +100,6 @@ MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
>  #define SD_MINORS  0
>  #endif
>
> -static void sd_config_discard(struct scsi_disk *, unsigned int);
>  static void sd_config_write_same(struct scsi_disk *);
>  static int  sd_revalidate_disk(struct gendisk *);
>  static void sd_unlock_native_capacity(struct gendisk *disk);
> @@ -162,7 +162,7 @@ cache_type_store(struct device *dev, struct 
> device_attribute *attr,
> static const char temp[] = "temporary ";
> int len;
>
> -   if (sdp->type != TYPE_DISK)
> +   if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
> /* no cache control on RBC devices; theoretically they
>  * can do it, but there's probably so many exceptions
>  * it's not worth the risk */
> @@ -261,7 +261,7 @@ allow_restart_store(struct device *dev, struct 
> device_attribute *attr,
> if (!capable(CAP_SYS_ADMIN))
> return -EACCES;
>
> -   if (sdp->type != TYPE_DISK)
> +   if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
> return -EINVAL;
>
> sdp->allow_restart = simple_strtoul(buf, NULL, 10);
> @@ -369,6 +369,7 @@ static const char *lbp_mode[] = {
> [SD_LBP_WS16]   = "writesame_16",
> [SD_LBP_WS10]   = "writesame_10",
> [SD_LBP_ZERO]   = "writesame_zero",
> +   [SD_ZBC_RESET_WP]   = "reset_wp",
> [SD_LBP_DISABLE]= "disabled",
>  };
>
> @@ -391,6 +392,13 @@ provisioning_mode_store(struct device *dev, struct 
> device_attribute *attr,
> if (!capable(CAP_SYS_ADMIN))
> return -EACCES;
>
> +   if (sdkp->zoned == 1 || sdp->type == TYPE_ZBC) {
> +   if (!strncmp(buf, lbp_mode[SD_ZBC_RESET_WP], 20)) {
> +   sd_config_discard(sdkp, SD_ZBC_RESET_WP);
> +   return count;
> +   }
> +   return -EINVAL;
> +   }
> if (sdp->type != TYPE_DISK)
> return -EINVAL;
>
> @@ -458,7 +466,7 @@ max_write_same_blocks_store(struct device *dev, struct 
> device_attribute *attr,
> if (!capable(CAP_SYS_ADMIN))
> return -EACCES;
>
> -   if (sdp->type != TYPE_DISK)
> +   if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
> return -EINVAL;
>
> err = kstrtoul(buf, 10, );
> @@ -631,7 +639,7 @@ static unsigned char sd_setup_protect_cmnd(struct 
> scsi_cmnd *scmd,
> return protect;
>  }
>
> -static void 

Re: [PATCH 1/9] block: Add 'zoned' queue limit

2016-09-19 Thread Bart Van Assche

On 09/19/16 14:27, Damien Le Moal wrote:

+/*
+ * Zoned block device models (zoned limit).
+ */
+enum blk_zoned_model {
+   BLK_ZONED_NONE, /* Regular block device */
+   BLK_ZONED_HA,   /* Host-aware zoned block device */
+   BLK_ZONED_HM,   /* Host-managed zoned block device */
+};


[ ... ]


+static inline unsigned int blk_queue_zoned(struct request_queue *q)
+{
+   return q->limits.zoned;
+}
+
 /*
  * We regard a request as sync, if either a read or a sync write
  */
@@ -1354,6 +1369,16 @@ static inline unsigned int bdev_write_same(struct 
block_device *bdev)
return 0;
 }

+static inline unsigned int bdev_zoned(struct block_device *bdev)
+{
+   struct request_queue *q = bdev_get_queue(bdev);
+
+   if (q)
+   return blk_queue_zoned(q);
+
+   return 0;
+}


Hello Damien,

Please consider changing the return type of the above two functions into 
"enum blk_zoned_model" to make it clear that both return one of the 
BLK_ZONED_* constants.


Thanks,

Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 5/9] block: Implement support for zoned block devices

2016-09-19 Thread Bart Van Assche

On 09/19/16 14:27, Damien Le Moal wrote:

+   /*
+* Make sure bi_size does not overflow because
+* of some weird very large zone size.
+*/
+   if (nr_sects && (unsigned long long)nr_sects << 9 > UINT_MAX)
+   return -EINVAL;
+
+   bio = bio_alloc(gfp_mask, 1);
+   if (!bio)
+   return -ENOMEM;
+
+   bio->bi_iter.bi_sector = sector;
+   bio->bi_iter.bi_size = nr_sects << 9;
+   bio->bi_vcnt = 0;
+   bio->bi_bdev = bdev;
+   bio_set_op_attrs(bio, op, 0);


Hello Damien and Hannes,

nr_sects is cast to unsigned long long for the overflow test but not 
when assigning bi_size. To me this looks like an inconsistency. Please 
make both expressions consistent.


Thanks,

Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/9] block: Define zoned block device operations

2016-09-19 Thread Bart Van Assche

On 09/19/16 14:27, Damien Le Moal wrote:

diff --git a/block/blk-core.c b/block/blk-core.c
index 36c7ac3..4a7f7ba 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1941,6 +1941,13 @@ generic_make_request_checks(struct bio *bio)
case REQ_OP_WRITE_SAME:
if (!bdev_write_same(bio->bi_bdev))
goto not_supported;
+   case REQ_OP_ZONE_REPORT:
+   case REQ_OP_ZONE_RESET:
+   case REQ_OP_ZONE_OPEN:
+   case REQ_OP_ZONE_CLOSE:
+   case REQ_OP_ZONE_FINISH:
+   if (!bdev_zoned(bio->bi_bdev))
+   goto not_supported;


In patch 1/9 the BLK_ZONED_* constants have been introduced. The above 
code compares the bdev_zoned() return value against 0. That means that 
the above code will break if the numeric value of the BLK_ZONED_* 
constants would be changed. Please change the above code such that it 
compares the bdev_zoned() return value against a BLK_ZONED_* constant.



+ * Operation:
+ * REQ_OP_ZONE_REPORT: Request information for all zones or for a single zone.
+ * REQ_OP_ZONE_RESET: Reset the write pointer of all zones or of a single zone.
+ * REQ_OP_ZONE_OPEN: Explicitely open the maximum allowed number of zones or
+ *   a single zone. For the former case, the zones that will
+ *   actually be open are chosen by the disk.
+ * REQ_OP_ZONE_CLOSE: Close all implicitely or explicitely open zones or
+ *a single zone.
+ * REQ_OP_ZONE_FINISH: Transition one or all open and closed zones to the full
+ * condition.


Please change *plicitely into *plicitly.

Thanks,

Bart.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 9/9] blk-zoned: Add ioctl interface for zone operations

2016-09-19 Thread kbuild test robot
Hi Shaun,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.8-rc7]
[cannot apply to block/for-next next-20160919]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]
[Suggest to use git(>=2.9.0) format-patch --base= (or --base=auto for 
convenience) to record what (public, well-known) commit your patch series was 
built on]
[Check https://git-scm.com/docs/git-format-patch for more information]

url:
https://github.com/0day-ci/linux/commits/Damien-Le-Moal/ZBC-Zoned-block-device-support/20160920-062608
config: blackfin-allyesconfig (attached as .config)
compiler: bfin-uclinux-gcc (GCC) 6.2.0
reproduce:
wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=blackfin 

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/linkage.h:4:0,
from include/linux/kernel.h:6,
from block/blk-zoned.c:11:
   In function 'blkdev_zone_action_ioctl',
   inlined from 'blkdev_zone_ioctl' at block/blk-zoned.c:445:7:
>> include/linux/compiler.h:491:38: error: call to '__compiletime_assert_382' 
>> declared with attribute error: BUILD_BUG_ON failed: ptr_size >= 8
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^
   include/linux/compiler.h:474:4: note: in definition of macro 
'__compiletime_assert'
   prefix ## suffix();\
   ^~
   include/linux/compiler.h:491:2: note: in expansion of macro 
'_compiletime_assert'
 _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
 ^~~
   include/linux/bug.h:51:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~
   include/linux/bug.h:75:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
 BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
 ^~~~
>> arch/blackfin/include/asm/uaccess.h:136:3: note: in expansion of macro 
>> 'BUILD_BUG_ON'
  BUILD_BUG_ON(ptr_size >= 8);   \
  ^~~~
>> block/blk-zoned.c:382:6: note: in expansion of macro 'get_user'
 if (get_user(sector, (u64 __user *)argp))
 ^~~~

vim +/get_user +382 block/blk-zoned.c

   366  z.reset = zone->reset;
   367  
   368  blk_unlock_zone(zone);
   369  
   370  if (copy_to_user(argp, , sizeof(struct blkzone)))
   371  return -EFAULT;
   372  
   373  return 0;
   374  }
   375  
   376  static int blkdev_zone_action_ioctl(struct block_device *bdev,
   377  unsigned cmd, void __user *argp)
   378  {
   379  unsigned int op;
   380  u64 sector;
   381  
 > 382  if (get_user(sector, (u64 __user *)argp))
   383  return -EFAULT;
   384  
   385  switch (cmd) {
   386  case BLKRESETZONE:
   387  op = REQ_OP_ZONE_RESET;
   388  break;
   389  case BLKOPENZONE:
   390  op = REQ_OP_ZONE_OPEN;

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip


Re: [PATCH 5/7] pas16: remove from tree

2016-09-19 Thread Finn Thain

On Mon, 19 Sep 2016, Christoph Hellwig wrote:

> The driver has not seen any maintainer activity or other work that 
> wasn't tree wide conversion or clenaups in the entire history of the git 
> tree.

That could indicate mature code, absent maintainer etc. It doesn't justify 
or explain code removal.

In this case, no-one seems to have the hardware needed to test the code, 
and no-one appears willing to do the conversion to the scsi_host_alloc() 
API. I think this justification should appear in the commit message.

On that basis, I would remove these drivers along with scsi_register() 
itself. Is there some reason to remove them earlier? It messes up my patch 
queue.

Either way, you may add my
Acked-by: Finn Thain 
for the pas16, t128 and dtc patches if you like.

-- 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 8/9] sd: Implement support for ZBC devices

2016-09-19 Thread kbuild test robot
Hi Hannes,

[auto build test WARNING on linus/master]
[also build test WARNING on v4.8-rc7]
[cannot apply to block/for-next next-20160919]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]
[Suggest to use git(>=2.9.0) format-patch --base= (or --base=auto for 
convenience) to record what (public, well-known) commit your patch series was 
built on]
[Check https://git-scm.com/docs/git-format-patch for more information]

url:
https://github.com/0day-ci/linux/commits/Damien-Le-Moal/ZBC-Zoned-block-device-support/20160920-062608
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
# save the attached .config to linux build tree
make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from include/linux/kernel.h:13:0,
from include/linux/sched.h:17,
from include/linux/blkdev.h:4,
from drivers/scsi/sd_zbc.c:24:
   drivers/scsi/sd_zbc.c: In function 'sd_zbc_report_zones':
>> drivers/scsi/sd_zbc.c:61:11: warning: format '%zu' expects argument of type 
>> 'size_t', but argument 6 has type 'sector_t {aka long long unsigned int}' 
>> [-Wformat=]
 pr_debug("%s %s [%s]: " fmt,\
  ^
   include/linux/printk.h:260:21: note: in definition of macro 'pr_fmt'
#define pr_fmt(fmt) fmt
^~~
   include/linux/printk.h:308:2: note: in expansion of macro 'dynamic_pr_debug'
 dynamic_pr_debug(fmt, ##__VA_ARGS__)
 ^~~~
>> drivers/scsi/sd_zbc.c:61:2: note: in expansion of macro 'pr_debug'
 pr_debug("%s %s [%s]: " fmt,\
 ^~~~
>> drivers/scsi/sd_zbc.c:221:2: note: in expansion of macro 'sd_zbc_debug'
 sd_zbc_debug(sdkp, "REPORT ZONES lba %zu len %d\n",
 ^~~~
   In file included from include/linux/printk.h:6:0,
from include/linux/kernel.h:13,
from include/linux/sched.h:17,
from include/linux/blkdev.h:4,
from drivers/scsi/sd_zbc.c:24:
>> include/linux/kern_levels.h:4:18: warning: format '%zu' expects argument of 
>> type 'size_t', but argument 5 has type 'sector_t {aka long long unsigned 
>> int}' [-Wformat=]
#define KERN_SOH "\001"  /* ASCII Start Of Header */
 ^
   include/linux/kern_levels.h:10:18: note: in expansion of macro 'KERN_SOH'
#define KERN_ERR KERN_SOH "3" /* error conditions */
 ^~~~
   include/linux/printk.h:276:9: note: in expansion of macro 'KERN_ERR'
 printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
^~~~
>> drivers/scsi/sd_zbc.c:73:2: note: in expansion of macro 'pr_err'
 pr_err("%s %s [%s]: " fmt,\
 ^~
>> drivers/scsi/sd_zbc.c:237:3: note: in expansion of macro 'sd_zbc_err'
  sd_zbc_err(sdkp,
  ^~
   In file included from include/linux/kernel.h:13:0,
from include/linux/sched.h:17,
from include/linux/blkdev.h:4,
from drivers/scsi/sd_zbc.c:24:
   drivers/scsi/sd_zbc.c: In function 'sd_zbc_setup_reset_cmnd':
>> drivers/scsi/sd_zbc.c:61:11: warning: format '%zu' expects argument of type 
>> 'size_t', but argument 6 has type 'sector_t {aka long long unsigned int}' 
>> [-Wformat=]
 pr_debug("%s %s [%s]: " fmt,\
  ^
   include/linux/printk.h:260:21: note: in definition of macro 'pr_fmt'
#define pr_fmt(fmt) fmt
^~~
   include/linux/printk.h:308:2: note: in expansion of macro 'dynamic_pr_debug'
 dynamic_pr_debug(fmt, ##__VA_ARGS__)
 ^~~~
>> drivers/scsi/sd_zbc.c:61:2: note: in expansion of macro 'pr_debug'
 pr_debug("%s %s [%s]: " fmt,\
 ^~~~
   drivers/scsi/sd_zbc.c:489:4: note: in expansion of macro 'sd_zbc_debug'
   sd_zbc_debug(sdkp,
   ^~~~
   In file included from drivers/scsi/sd_zbc.c:37:0:
   drivers/scsi/sd_zbc.c:517:7: warning: format '%zu' expects argument of type 
'size_t', but argument 5 has type 'sector_t {aka long long unsigned int}' 
[-Wformat=]
  "Unaligned reset wp request, start %zu/%zu"
  ^
   drivers/scsi/sd.h:116:31: note: in definition of macro 'sd_printk'
 (sdsk)->disk->disk_name, fmt, ##a) : \
  ^~~
   drivers/scsi/sd_zbc.c:517:7: warning: format '%zu' expects argument of type 
'size_t', but argument 6 has type 'sector_t {aka long long unsigned int}' 
[-Wformat=]
  "Unaligned reset wp request, start %zu/%zu"
  ^
   drivers/scsi/sd.h:116:31: note: in definition of macro 'sd_printk'
 (sdsk)->disk->disk_name, fmt, ##a) : \
  ^~~
   drivers/scsi/sd_zbc.c:517:7: warnin

Re: [PATCH 1/1] ibmvfc: Fix I/O hang when port is not mapped

2016-09-19 Thread Martin K. Petersen
> "Tyrel" == Tyrel Datwyler  writes:

Tyrel> In retrospect this probably should have been queued up for stable
Tyrel> as well.

Tag added.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 8/9] sd: Implement support for ZBC devices

2016-09-19 Thread Damien Le Moal
From: Hannes Reinecke 

Implement ZBC support functions to setup zoned disks and fill the
block device zone information tree during the device scan. The
zone information tree is also always updated on disk revalidation.
This adds support for the REQ_OP_ZONE* operations and also implements
the new RESET_WP provisioning mode so that discard requests can be
mapped to the RESET WRITE POINTER command for devices with a constant
zone size.

The capacity read of the device triggers the zone information read
for zoned block devices. As this needs the device zone model, the
the call to sd_read_capacity is moved after the call to
sd_read_block_characteristics so that host-aware devices are
properlly initialized. The call to sd_zbc_read_zones in
sd_read_capacity may change the device capacity obtained with
the sd_read_capacity_16 function for devices reporting only the
capacity of conventional zones at the beginning of the LBA range
(i.e. devices with rc_basis et to 0).

Signed-off-by: Hannes Reinecke 
Signed-off-by: Damien Le Moal 
---
 drivers/scsi/Makefile |1 +
 drivers/scsi/sd.c |  147 --
 drivers/scsi/sd.h |   68 +++
 drivers/scsi/sd_zbc.c | 1097 +
 include/scsi/scsi_proto.h |   17 +
 5 files changed, 1304 insertions(+), 26 deletions(-)
 create mode 100644 drivers/scsi/sd_zbc.c

diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index d539798..fabcb6d 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -179,6 +179,7 @@ hv_storvsc-y:= storvsc_drv.o
 
 sd_mod-objs:= sd.o
 sd_mod-$(CONFIG_BLK_DEV_INTEGRITY) += sd_dif.o
+sd_mod-$(CONFIG_BLK_DEV_ZONED) += sd_zbc.o
 
 sr_mod-objs:= sr.o sr_ioctl.o sr_vendor.o
 ncr53c8xx-flags-$(CONFIG_SCSI_ZALON) \
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index d3e852a..46b8b78 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -92,6 +92,7 @@ MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_DISK15_MAJOR);
 MODULE_ALIAS_SCSI_DEVICE(TYPE_DISK);
 MODULE_ALIAS_SCSI_DEVICE(TYPE_MOD);
 MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
+MODULE_ALIAS_SCSI_DEVICE(TYPE_ZBC);
 
 #if !defined(CONFIG_DEBUG_BLOCK_EXT_DEVT)
 #define SD_MINORS  16
@@ -99,7 +100,6 @@ MODULE_ALIAS_SCSI_DEVICE(TYPE_RBC);
 #define SD_MINORS  0
 #endif
 
-static void sd_config_discard(struct scsi_disk *, unsigned int);
 static void sd_config_write_same(struct scsi_disk *);
 static int  sd_revalidate_disk(struct gendisk *);
 static void sd_unlock_native_capacity(struct gendisk *disk);
@@ -162,7 +162,7 @@ cache_type_store(struct device *dev, struct 
device_attribute *attr,
static const char temp[] = "temporary ";
int len;
 
-   if (sdp->type != TYPE_DISK)
+   if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
/* no cache control on RBC devices; theoretically they
 * can do it, but there's probably so many exceptions
 * it's not worth the risk */
@@ -261,7 +261,7 @@ allow_restart_store(struct device *dev, struct 
device_attribute *attr,
if (!capable(CAP_SYS_ADMIN))
return -EACCES;
 
-   if (sdp->type != TYPE_DISK)
+   if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
return -EINVAL;
 
sdp->allow_restart = simple_strtoul(buf, NULL, 10);
@@ -369,6 +369,7 @@ static const char *lbp_mode[] = {
[SD_LBP_WS16]   = "writesame_16",
[SD_LBP_WS10]   = "writesame_10",
[SD_LBP_ZERO]   = "writesame_zero",
+   [SD_ZBC_RESET_WP]   = "reset_wp",
[SD_LBP_DISABLE]= "disabled",
 };
 
@@ -391,6 +392,13 @@ provisioning_mode_store(struct device *dev, struct 
device_attribute *attr,
if (!capable(CAP_SYS_ADMIN))
return -EACCES;
 
+   if (sdkp->zoned == 1 || sdp->type == TYPE_ZBC) {
+   if (!strncmp(buf, lbp_mode[SD_ZBC_RESET_WP], 20)) {
+   sd_config_discard(sdkp, SD_ZBC_RESET_WP);
+   return count;
+   }
+   return -EINVAL;
+   }
if (sdp->type != TYPE_DISK)
return -EINVAL;
 
@@ -458,7 +466,7 @@ max_write_same_blocks_store(struct device *dev, struct 
device_attribute *attr,
if (!capable(CAP_SYS_ADMIN))
return -EACCES;
 
-   if (sdp->type != TYPE_DISK)
+   if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
return -EINVAL;
 
err = kstrtoul(buf, 10, );
@@ -631,7 +639,7 @@ static unsigned char sd_setup_protect_cmnd(struct scsi_cmnd 
*scmd,
return protect;
 }
 
-static void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode)
+void sd_config_discard(struct scsi_disk *sdkp, unsigned int mode)
 {
struct request_queue *q = sdkp->disk->queue;
unsigned int logical_block_size = sdkp->device->sector_size;
@@ -683,6 +691,11 @@ static void sd_config_discard(struct 

[PATCH 6/9] block: Add 'BLKPREP_DONE' return value

2016-09-19 Thread Damien Le Moal
From: Hannes Reinecke 

Add a new blkprep return code BLKPREP_DONE to signal completion
without I/O error.

Signed-off-by: Hannes Reinecke 

Changelog (Damien):
Rewrite adding blk_prep_end_request as suggested by Christoph Hellwig

Suggested-by: Christoph Hellwig 
Signed-off-by: Damien Le Moal 
---
 block/blk-core.c| 42 ++
 drivers/scsi/scsi_lib.c |  1 +
 include/linux/blkdev.h  |  1 +
 3 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/block/blk-core.c b/block/blk-core.c
index 2c5d069d..8dbbb1a 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -2341,6 +2341,17 @@ void blk_account_io_start(struct request *rq, bool 
new_io)
part_stat_unlock();
 }
 
+static void blk_prep_end_request(struct request *rq, int error)
+{
+   /*
+* Mark this request as started so we don't trigger
+* any debug logic in the end I/O path.
+*/
+rq->cmd_flags |= REQ_QUIET;
+blk_start_request(rq);
+__blk_end_request_all(rq, error);
+}
+
 /**
  * blk_peek_request - peek at the top of a request queue
  * @q: request queue to peek at
@@ -2408,9 +2419,10 @@ struct request *blk_peek_request(struct request_queue *q)
break;
 
ret = q->prep_rq_fn(q, rq);
-   if (ret == BLKPREP_OK) {
-   break;
-   } else if (ret == BLKPREP_DEFER) {
+   switch(ret) {
+   case BLKPREP_OK:
+   goto out;
+   case BLKPREP_DEFER:
/*
 * the request may have been (partially) prepped.
 * we need to keep this request in the front to
@@ -2425,25 +2437,23 @@ struct request *blk_peek_request(struct request_queue 
*q)
 */
--rq->nr_phys_segments;
}
-
rq = NULL;
+   goto out;
+   case BLKPREP_KILL:
+   blk_prep_end_request(rq, -EIO);
break;
-   } else if (ret == BLKPREP_KILL || ret == BLKPREP_INVALID) {
-   int err = (ret == BLKPREP_INVALID) ? -EREMOTEIO : -EIO;
-
-   rq->cmd_flags |= REQ_QUIET;
-   /*
-* Mark this request as started so we don't trigger
-* any debug logic in the end I/O path.
-*/
-   blk_start_request(rq);
-   __blk_end_request_all(rq, err);
-   } else {
+   case BLKPREP_INVALID:
+   blk_prep_end_request(rq, -EREMOTEIO);
+   break;
+   case BLKPREP_DONE:
+   blk_prep_end_request(rq, 0);
+   break;
+   default:
printk(KERN_ERR "%s: bad return=%d\n", __func__, ret);
break;
}
}
-
+out:
return rq;
 }
 EXPORT_SYMBOL(blk_peek_request);
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index c71344a..f99504d 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1260,6 +1260,7 @@ scsi_prep_return(struct request_queue *q, struct request 
*req, int ret)
case BLKPREP_KILL:
case BLKPREP_INVALID:
req->errors = DID_NO_CONNECT << 16;
+   case BLKPREP_DONE:
/* release the command and kill it */
if (req->special) {
struct scsi_cmnd *cmd = req->special;
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 1165594..a85f95b 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -819,6 +819,7 @@ enum {
BLKPREP_KILL,   /* fatal error, kill, return -EIO */
BLKPREP_DEFER,  /* leave on queue */
BLKPREP_INVALID,/* invalid command, kill, return -EREMOTEIO */
+   BLKPREP_DONE,   /* complete w/o error */
 };
 
 extern unsigned long blk_max_low_pfn, blk_max_pfn;
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 9/9] blk-zoned: Add ioctl interface for zone operations

2016-09-19 Thread Damien Le Moal
From: Shaun Tancheff 

Adds the new BLKUPDATEZONES, BLKREPORTZONE, BLKRESETZONE,
BLKOPENZONE, BLKCLOSEZONE and BLKFINISHZONE ioctls.

BLKREPORTZONE implementation uses the device queue zone RB-tree by
default and no actual command is issued to the device. If the
application needs access to the untracked zone attributes (non-seq
flag or reset recommended flag, offline or read-only zone condition,
etc), BLKUPDATEZONES must be issued first to force an update of the
cached zone information.

Changelog (Damien):
* Simplified blkzone descriptor (removed bit-fields and use CPU
  endianness)
* Changed report ioctl to operate on single zone instead of an
  array of blkzone structures.

Signed-off-by: Shaun Tancheff 
Signed-off-by: Damien Le Moal 
---
 block/blk-zoned.c | 115 ++
 block/ioctl.c |   8 +++
 include/linux/blkdev.h|   7 +++
 include/uapi/linux/Kbuild |   1 +
 include/uapi/linux/blkzoned.h |  91 +
 include/uapi/linux/fs.h   |   1 +
 6 files changed, 223 insertions(+)
 create mode 100644 include/uapi/linux/blkzoned.h

diff --git a/block/blk-zoned.c b/block/blk-zoned.c
index a107940..71205c8 100644
--- a/block/blk-zoned.c
+++ b/block/blk-zoned.c
@@ -12,6 +12,7 @@
 #include 
 #include 
 #include 
+#include 
 
 void blk_init_zones(struct request_queue *q)
 {
@@ -336,3 +337,117 @@ int blkdev_finish_zone(struct block_device *bdev,
return blkdev_issue_zone_action(bdev, sector, REQ_OP_ZONE_FINISH,
gfp_mask);
 }
+
+static int blkdev_report_zone_ioctl(struct block_device *bdev,
+   void __user *argp)
+{
+   struct blk_zone *zone;
+   struct blkzone z;
+
+   if (copy_from_user(, argp, sizeof(struct blkzone)))
+   return -EFAULT;
+
+   zone = blk_lookup_zone(bdev_get_queue(bdev), z.start);
+   if (!zone)
+   return -EINVAL;
+
+   memset(, 0, sizeof(struct blkzone));
+
+   blk_lock_zone(zone);
+
+   blk_wait_for_zone_update(zone);
+
+   z.len = zone->len;
+   z.start = zone->start;
+   z.wp = zone->wp;
+   z.type = zone->type;
+   z.cond = zone->cond;
+   z.non_seq = zone->non_seq;
+   z.reset = zone->reset;
+
+   blk_unlock_zone(zone);
+
+   if (copy_to_user(argp, , sizeof(struct blkzone)))
+   return -EFAULT;
+
+   return 0;
+}
+
+static int blkdev_zone_action_ioctl(struct block_device *bdev,
+   unsigned cmd, void __user *argp)
+{
+   unsigned int op;
+   u64 sector;
+
+   if (get_user(sector, (u64 __user *)argp))
+   return -EFAULT;
+
+   switch (cmd) {
+   case BLKRESETZONE:
+   op = REQ_OP_ZONE_RESET;
+   break;
+   case BLKOPENZONE:
+   op = REQ_OP_ZONE_OPEN;
+   break;
+   case BLKCLOSEZONE:
+   op = REQ_OP_ZONE_CLOSE;
+   break;
+   case BLKFINISHZONE:
+   op = REQ_OP_ZONE_FINISH;
+   break;
+   }
+
+   return blkdev_issue_zone_action(bdev, sector, op, GFP_KERNEL);
+}
+
+/**
+ * Called from blkdev_ioctl.
+ */
+int blkdev_zone_ioctl(struct block_device *bdev, fmode_t mode,
+ unsigned cmd, unsigned long arg)
+{
+   void __user *argp = (void __user *)arg;
+   struct request_queue *q;
+   int ret;
+
+   if (!argp)
+   return -EINVAL;
+
+   q = bdev_get_queue(bdev);
+   if (!q)
+   return -ENXIO;
+
+   if (!blk_queue_zoned(q))
+   return -ENOTTY;
+
+   if (!capable(CAP_SYS_ADMIN))
+   return -EACCES;
+
+   switch (cmd) {
+   case BLKREPORTZONE:
+   ret = blkdev_report_zone_ioctl(bdev, argp);
+   break;
+   case BLKUPDATEZONES:
+   if (!(mode & FMODE_WRITE)) {
+   ret = -EBADF;
+   break;
+   }
+   ret = blkdev_update_zones(bdev, GFP_KERNEL);
+   break;
+   case BLKRESETZONE:
+   case BLKOPENZONE:
+   case BLKCLOSEZONE:
+   case BLKFINISHZONE:
+   if (!(mode & FMODE_WRITE)) {
+   ret = -EBADF;
+   break;
+   }
+   ret = blkdev_zone_action_ioctl(bdev, cmd, argp);
+   break;
+   default:
+   ret = -ENOTTY;
+   break;
+   }
+
+   return ret;
+}
diff --git a/block/ioctl.c b/block/ioctl.c
index ed2397f..f09679a 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -3,6 +3,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -513,6 +514,13 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, 
unsigned cmd,
BLKDEV_DISCARD_SECURE);
case 

[PATCH 3/9] block: update chunk_sectors in blk_stack_limits()

2016-09-19 Thread Damien Le Moal
From: Hannes Reinecke 

Signed-off-by: Hannes Reinecke 
Signed-off-by: Damien Le Moal 
---
 block/blk-settings.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/block/blk-settings.c b/block/blk-settings.c
index b1d5b7f..55369a6 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -631,6 +631,10 @@ int blk_stack_limits(struct queue_limits *t, struct 
queue_limits *b,
t->discard_granularity;
}
 
+   if (b->chunk_sectors)
+   t->chunk_sectors = min_not_zero(t->chunk_sectors,
+   b->chunk_sectors);
+
return ret;
 }
 EXPORT_SYMBOL(blk_stack_limits);
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 5/9] block: Implement support for zoned block devices

2016-09-19 Thread Damien Le Moal
From: Hannes Reinecke 

Implement a RB-Tree holding a zoned block device zone information
(struct blk_zone) and add support functions for maintaining the
RB-Tree and manipulating zone structs. The block layer support does
not differentiate between host-aware and host-managed devices. The
different constraints for these different zone models are handled
by the generic SCSI layer sd driver down the stack.

Signed-off-by: Hannes Reinecke 

Changelog (Damien):
* Changed struct blk_zone to be more compact (64B)
* Changed zone locking to use bit_spin_lock in place of a regular
  spinlock
* Request zone operations to the underlying block device driver
  through BIO operations with the operation codes REQ_OP_ZONE_*.

Signed-off-by: Damien Le Moal 
---
 block/Kconfig  |   8 ++
 block/Makefile |   1 +
 block/blk-core.c   |   4 +
 block/blk-zoned.c  | 338 +
 include/linux/blkdev.h | 113 +
 5 files changed, 464 insertions(+)
 create mode 100644 block/blk-zoned.c

diff --git a/block/Kconfig b/block/Kconfig
index 161491d..c3a18f0 100644
--- a/block/Kconfig
+++ b/block/Kconfig
@@ -88,6 +88,14 @@ config BLK_DEV_INTEGRITY
T10/SCSI Data Integrity Field or the T13/ATA External Path
Protection.  If in doubt, say N.
 
+config BLK_DEV_ZONED
+   bool "Zoned block device support"
+   ---help---
+   Block layer zoned block device support. This option enables
+   support for ZAC/ZBC host-managed and host-aware zoned block devices.
+
+   Say yes here if you have a ZAC or ZBC storage device.
+
 config BLK_DEV_THROTTLING
bool "Block layer bio throttling support"
depends on BLK_CGROUP=y
diff --git a/block/Makefile b/block/Makefile
index 9eda232..aee67fa 100644
--- a/block/Makefile
+++ b/block/Makefile
@@ -22,4 +22,5 @@ obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched.o
 obj-$(CONFIG_BLOCK_COMPAT) += compat_ioctl.o
 obj-$(CONFIG_BLK_CMDLINE_PARSER)   += cmdline-parser.o
 obj-$(CONFIG_BLK_DEV_INTEGRITY) += bio-integrity.o blk-integrity.o t10-pi.o
+obj-$(CONFIG_BLK_DEV_ZONED)+= blk-zoned.o
 
diff --git a/block/blk-core.c b/block/blk-core.c
index 4a7f7ba..2c5d069d 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -590,6 +590,8 @@ void blk_cleanup_queue(struct request_queue *q)
blk_mq_free_queue(q);
percpu_ref_exit(>q_usage_counter);
 
+   blk_drop_zones(q);
+
spin_lock_irq(lock);
if (q->queue_lock != >__queue_lock)
q->queue_lock = >__queue_lock;
@@ -728,6 +730,8 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, 
int node_id)
 #endif
INIT_DELAYED_WORK(>delay_work, blk_delay_work);
 
+   blk_init_zones(q);
+
kobject_init(>kobj, _queue_ktype);
 
mutex_init(>sysfs_lock);
diff --git a/block/blk-zoned.c b/block/blk-zoned.c
new file mode 100644
index 000..a107940
--- /dev/null
+++ b/block/blk-zoned.c
@@ -0,0 +1,338 @@
+/*
+ * Zoned block device handling
+ *
+ * Copyright (c) 2015, Hannes Reinecke
+ * Copyright (c) 2015, SUSE Linux GmbH
+ *
+ * Copyright (c) 2016, Damien Le Moal
+ * Copyright (c) 2016, Western Digital
+ */
+
+#include 
+#include 
+#include 
+#include 
+
+void blk_init_zones(struct request_queue *q)
+{
+   spin_lock_init(>zones_lock);
+   q->zones = RB_ROOT;
+}
+
+/**
+ * blk_drop_zones - Empty a zoned device zone tree.
+ * @q: queue of the zoned device to operate on
+ *
+ * Free all zone descriptors added to the queue zone tree.
+ */
+void blk_drop_zones(struct request_queue *q)
+{
+   struct rb_root *root = >zones;
+   struct blk_zone *zone, *next;
+
+   rbtree_postorder_for_each_entry_safe(zone, next, root, node)
+   kfree(zone);
+   q->zones = RB_ROOT;
+}
+EXPORT_SYMBOL_GPL(blk_drop_zones);
+
+/**
+ * blk_insert_zone - Add a new zone struct to the queue RB-tree.
+ * @q: queue of the zoned device to operate on
+ * @new_zone: The zone struct to add
+ *
+ * If @new_zone is not already added to the zone tree, add it.
+ * Otherwise, return the existing entry.
+ */
+struct blk_zone *blk_insert_zone(struct request_queue *q,
+struct blk_zone *new_zone)
+{
+   struct rb_root *root = >zones;
+   struct rb_node **new = &(root->rb_node), *parent = NULL;
+   struct blk_zone *zone = NULL;
+   unsigned long flags;
+
+   spin_lock_irqsave(>zones_lock, flags);
+
+   /* Figure out where to put new node */
+   while (*new) {
+   zone = container_of(*new, struct blk_zone, node);
+   parent = *new;
+   if (new_zone->start + new_zone->len <= zone->start)
+   new = &((*new)->rb_left);
+   else if (new_zone->start >= zone->start + zone->len)
+   new = &((*new)->rb_right);
+   else
+   /* Return existing zone */
+   

[PATCH 2/9] blk-sysfs: Add 'chunk_sectors' to sysfs attributes

2016-09-19 Thread Damien Le Moal
From: Hannes Reinecke 

The queue limits already have a 'chunk_sectors' setting, so
we should be presenting it via sysfs.

Signed-off-by: Hannes Reinecke 
Signed-off-by: Damien Le Moal 
---
 block/blk-sysfs.c | 11 +++
 1 file changed, 11 insertions(+)

diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index 31ecff9..15e5baf 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -130,6 +130,11 @@ static ssize_t queue_physical_block_size_show(struct 
request_queue *q, char *pag
return queue_var_show(queue_physical_block_size(q), page);
 }
 
+static ssize_t queue_chunk_sectors_show(struct request_queue *q, char *page)
+{
+   return queue_var_show(q->limits.chunk_sectors, page);
+}
+
 static ssize_t queue_io_min_show(struct request_queue *q, char *page)
 {
return queue_var_show(queue_io_min(q), page);
@@ -455,6 +460,11 @@ static struct queue_sysfs_entry 
queue_physical_block_size_entry = {
.show = queue_physical_block_size_show,
 };
 
+static struct queue_sysfs_entry queue_chunk_sectors_entry = {
+   .attr = {.name = "chunk_sectors", .mode = S_IRUGO },
+   .show = queue_chunk_sectors_show,
+};
+
 static struct queue_sysfs_entry queue_io_min_entry = {
.attr = {.name = "minimum_io_size", .mode = S_IRUGO },
.show = queue_io_min_show,
@@ -555,6 +565,7 @@ static struct attribute *default_attrs[] = {
_hw_sector_size_entry.attr,
_logical_block_size_entry.attr,
_physical_block_size_entry.attr,
+   _chunk_sectors_entry.attr,
_io_min_entry.attr,
_io_opt_entry.attr,
_discard_granularity_entry.attr,
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 7/9] block: Add 'BLK_MQ_RQ_QUEUE_DONE' return value

2016-09-19 Thread Damien Le Moal
From: Hannes Reinecke 

Add a return value BLK_MQ_RQ_QUEUE_DONE to terminate a request
without error.

Signed-off-by: Hannes Reinecke 
Signed-off-by: Damien Le Moal 
---
 block/blk-mq.c  | 1 +
 drivers/scsi/scsi_lib.c | 3 +++
 include/linux/blk-mq.h  | 1 +
 3 files changed, 5 insertions(+)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 13f5a6c..6300629 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -851,6 +851,7 @@ static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx 
*hctx)
pr_err("blk-mq: bad return on queue: %d\n", ret);
case BLK_MQ_RQ_QUEUE_ERROR:
rq->errors = -EIO;
+   case BLK_MQ_RQ_QUEUE_DONE:
blk_mq_end_request(rq, rq->errors);
break;
}
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index f99504d..793b791 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1805,6 +1805,8 @@ static inline int prep_to_mq(int ret)
return 0;
case BLKPREP_DEFER:
return BLK_MQ_RQ_QUEUE_BUSY;
+   case BLKPREP_DONE:
+   return BLK_MQ_RQ_QUEUE_DONE;
default:
return BLK_MQ_RQ_QUEUE_ERROR;
}
@@ -1948,6 +1950,7 @@ out:
blk_mq_delay_queue(hctx, SCSI_QUEUE_DELAY);
break;
case BLK_MQ_RQ_QUEUE_ERROR:
+   case BLK_MQ_RQ_QUEUE_DONE:
/*
 * Make sure to release all allocated ressources when
 * we hit an error, as we will never see this command
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index e43bbff..07b4888 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -153,6 +153,7 @@ enum {
BLK_MQ_RQ_QUEUE_OK  = 0,/* queued fine */
BLK_MQ_RQ_QUEUE_BUSY= 1,/* requeue IO for later */
BLK_MQ_RQ_QUEUE_ERROR   = 2,/* end IO with error */
+   BLK_MQ_RQ_QUEUE_DONE= 3,/* end IO w/o error */
 
BLK_MQ_F_SHOULD_MERGE   = 1 << 0,
BLK_MQ_F_TAG_SHARED = 1 << 1,
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 4/9] block: Define zoned block device operations

2016-09-19 Thread Damien Le Moal
From: Shaun Tancheff 

Define REQ_OP_ZONE_REPORT, REQ_OP_ZONE_RESET, REQ_OP_ZONE_OPEN,
REQ_OP_ZONE_CLOSE and REQ_OP_ZONE_FINISH for handling zones of
zoned block devices (host-managed and host-aware). With with these
new commands, the total number of operations defined reaches 11 and
requires increasing REQ_OP_BITS from 3 to 4.

Signed-off-by: Shaun Tancheff 

Changelog (Damien):
All requests have no payload and may operate on all zones of the
device (when the BIO sector and size are 0) or on a single zone
(when the BIO sector and size are aigned on a zone).

REQ_OP_ZONE_REPORT is not sent directly to the device
and is processed in sd_zbc.c using the device zone work
in order to parse the report reply and manage changes to
the zone information cache of the device.

Signed-off-by: Damien Le Moal 
---
 block/blk-core.c  |  7 +++
 block/blk-merge.c | 31 +++
 include/linux/bio.h   | 36 +++-
 include/linux/blk_types.h | 27 ++-
 4 files changed, 87 insertions(+), 14 deletions(-)

diff --git a/block/blk-core.c b/block/blk-core.c
index 36c7ac3..4a7f7ba 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1941,6 +1941,13 @@ generic_make_request_checks(struct bio *bio)
case REQ_OP_WRITE_SAME:
if (!bdev_write_same(bio->bi_bdev))
goto not_supported;
+   case REQ_OP_ZONE_REPORT:
+   case REQ_OP_ZONE_RESET:
+   case REQ_OP_ZONE_OPEN:
+   case REQ_OP_ZONE_CLOSE:
+   case REQ_OP_ZONE_FINISH:
+   if (!bdev_zoned(bio->bi_bdev))
+   goto not_supported;
break;
default:
break;
diff --git a/block/blk-merge.c b/block/blk-merge.c
index 2642e5f..f9299df 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -202,6 +202,21 @@ void blk_queue_split(struct request_queue *q, struct bio 
**bio,
case REQ_OP_WRITE_SAME:
split = blk_bio_write_same_split(q, *bio, bs, );
break;
+   case REQ_OP_ZONE_REPORT:
+   case REQ_OP_ZONE_RESET:
+   case REQ_OP_ZONE_OPEN:
+   case REQ_OP_ZONE_CLOSE:
+   case REQ_OP_ZONE_FINISH:
+   /*
+* For these commands, bi_size is either 0 to specify
+* operation on the entire block device sector range,
+* or a zone size for operation on a single zone.
+* Since a zone size may be much bigger than the maximum
+* allowed BIO size, we cannot use blk_bio_segment_split.
+*/
+   split = NULL;
+   nsegs = 0;
+   break;
default:
split = blk_bio_segment_split(q, *bio, q->bio_split, );
break;
@@ -241,11 +256,19 @@ static unsigned int __blk_recalc_rq_segments(struct 
request_queue *q,
 * This should probably be returning 0, but blk_add_request_payload()
 * (Christoph)
 */
-   if (bio_op(bio) == REQ_OP_DISCARD || bio_op(bio) == REQ_OP_SECURE_ERASE)
-   return 1;
-
-   if (bio_op(bio) == REQ_OP_WRITE_SAME)
+   switch(bio_op(bio)) {
+   case REQ_OP_DISCARD:
+   case REQ_OP_SECURE_ERASE:
+   case REQ_OP_WRITE_SAME:
+   case REQ_OP_ZONE_REPORT:
+   case REQ_OP_ZONE_RESET:
+   case REQ_OP_ZONE_OPEN:
+   case REQ_OP_ZONE_CLOSE:
+   case REQ_OP_ZONE_FINISH:
return 1;
+   default:
+   break;
+   }
 
fbio = bio;
cluster = blk_queue_cluster(q);
diff --git a/include/linux/bio.h b/include/linux/bio.h
index 23ddf4b..d9c2e21 100644
--- a/include/linux/bio.h
+++ b/include/linux/bio.h
@@ -69,20 +69,38 @@
  */
 static inline bool bio_has_data(struct bio *bio)
 {
-   if (bio &&
-   bio->bi_iter.bi_size &&
-   bio_op(bio) != REQ_OP_DISCARD &&
-   bio_op(bio) != REQ_OP_SECURE_ERASE)
-   return true;
+   if (!bio || !bio->bi_iter.bi_size)
+   return false;
 
-   return false;
+   switch (bio_op(bio)) {
+   case REQ_OP_DISCARD:
+   case REQ_OP_SECURE_ERASE:
+   case REQ_OP_ZONE_REPORT:
+   case REQ_OP_ZONE_RESET:
+   case REQ_OP_ZONE_OPEN:
+   case REQ_OP_ZONE_CLOSE:
+   case REQ_OP_ZONE_FINISH:
+   return false;
+   default:
+   return true;
+   }
 }
 
 static inline bool bio_no_advance_iter(struct bio *bio)
 {
-   return bio_op(bio) == REQ_OP_DISCARD ||
-  bio_op(bio) == REQ_OP_SECURE_ERASE ||
-  bio_op(bio) == REQ_OP_WRITE_SAME;
+   switch (bio_op(bio)) {
+   case REQ_OP_DISCARD:
+   case REQ_OP_SECURE_ERASE:
+   case REQ_OP_WRITE_SAME:
+   case REQ_OP_ZONE_REPORT:
+   case REQ_OP_ZONE_RESET:
+   case REQ_OP_ZONE_OPEN:
+   case REQ_OP_ZONE_CLOSE:
+   case 

[PATCH 0/9] ZBC / Zoned block device support

2016-09-19 Thread Damien Le Moal
This series introduces support for ZBC zoned block devices. It integrates
earlier submissions by Hannes Reinecke and Shaun Tancheff and includes
rewrites and corrections suggested by Christoph Hellwig.

For zoned block devices, a zone information cache implemented as an RB-tree
is attached to the device request queue and maintained from the SCSI disk
driver layer. The cache is used to check read and write commands alignement
to zone position and to the write pointer position within zones.
The generic block layer API defines functions for obtaining zone information
and manipulating zones. Operation on zones are defined as request operations
which triger zone cache changes when processed in the sd driver.

Most of the ZBC specific code is kept out of sd.c and implemented in the
new file sd_zbc.c. Similarly, at the block layer, most of the zoned block
device code is implemented in the new blk-zoned.c.

For host-managed zoned block devices, the sequential write constraint of
write pointer zones is exposed to the user. Users of the disk (applications,
file systems or device mappers) must sequentially write to zones. This means
that for raw block device accesses from applications, buffered writes are
unreliable and direct I/Os must be used (or buffered writes with O_SYNC).
At the SCSI layer, write ordering is maintained at dispatch time for both
the simple queue model and scsi-mq model using a zone write lock. This lock,
implemented as a flag in zone information, prevents issuing multiple writes
to a single zone, in effect, resulting in write queue depth of 1 per zone
while allowing the drive to be operated at high queue depth overall.

Access to zone manipulation operations is also provided to applications
through a set of new ioctls. This allows applications operating on raw
block devices (e.g. mkfs.xxx) to discover a device zone layout and
manipulate zone state.

Damien Le Moal (1):
  block: Add 'zoned' queue limit

Hannes Reinecke (6):
  blk-sysfs: Add 'chunk_sectors' to sysfs attributes
  block: update chunk_sectors in blk_stack_limits()
  block: Implement support for zoned block devices
  block: Add 'BLKPREP_DONE' return value
  block: Add 'BLK_MQ_RQ_QUEUE_DONE' return value
  sd: Implement support for ZBC devices

Shaun Tancheff (2):
  block: Define zoned block device operations
  blk-zoned: Add ioctl interface for zone operations

 block/Kconfig |8 +
 block/Makefile|1 +
 block/blk-core.c  |   53 +-
 block/blk-merge.c |   31 +-
 block/blk-mq.c|1 +
 block/blk-settings.c  |5 +
 block/blk-sysfs.c |   29 ++
 block/blk-zoned.c |  453 +
 block/ioctl.c |8 +
 drivers/scsi/Makefile |1 +
 drivers/scsi/scsi_lib.c   |4 +
 drivers/scsi/sd.c |  147 +-
 drivers/scsi/sd.h |   68 +++
 drivers/scsi/sd_zbc.c | 1097 +
 include/linux/bio.h   |   36 +-
 include/linux/blk-mq.h|1 +
 include/linux/blk_types.h |   27 +-
 include/linux/blkdev.h|  146 ++
 include/scsi/scsi_proto.h |   17 +
 include/uapi/linux/Kbuild |1 +
 include/uapi/linux/blkzoned.h |   91 
 include/uapi/linux/fs.h   |1 +
 22 files changed, 2170 insertions(+), 56 deletions(-)
 create mode 100644 block/blk-zoned.c
 create mode 100644 drivers/scsi/sd_zbc.c
 create mode 100644 include/uapi/linux/blkzoned.h

-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/9] block: Add 'zoned' queue limit

2016-09-19 Thread Damien Le Moal
Add the zoned queue limit to indicate the zoning model of a block
device. Defined values are 0 (BLK_ZONED_NONE) for regular block
devices, 1 (BLK_ZONED_HA) for host-aware zone block devices and 2
(BLK_ZONED_HM) for host-managed zone block devices. The drive managed
model is not defined here since these block devices do not provide any
command for accessing zone information. The helper functions
blk_queue_zoned and bdev_zoned return the zoned limit which can in turn
be used as a boolean to test if a block device is zoned.

The zoned attribute is also exported as a string to applications via
sysfs. BLK_ZONED_NONE shows as "none", BLK_ZONED_HA as "host-aware" and
BLK_ZONED_HM as "host-managed".

Signed-off-by: Damien Le Moal 
---
 block/blk-settings.c   |  1 +
 block/blk-sysfs.c  | 18 ++
 include/linux/blkdev.h | 25 +
 3 files changed, 44 insertions(+)

diff --git a/block/blk-settings.c b/block/blk-settings.c
index f679ae1..b1d5b7f 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -107,6 +107,7 @@ void blk_set_default_limits(struct queue_limits *lim)
lim->io_opt = 0;
lim->misaligned = 0;
lim->cluster = 1;
+   lim->zoned = BLK_ZONED_NONE;
 }
 EXPORT_SYMBOL(blk_set_default_limits);
 
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index f87a7e7..31ecff9 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -257,6 +257,18 @@ QUEUE_SYSFS_BIT_FNS(random, ADD_RANDOM, 0);
 QUEUE_SYSFS_BIT_FNS(iostats, IO_STAT, 0);
 #undef QUEUE_SYSFS_BIT_FNS
 
+static ssize_t queue_zoned_show(struct request_queue *q, char *page)
+{
+   switch (blk_queue_zoned(q)) {
+   case BLK_ZONED_HA:
+   return sprintf(page, "host-aware\n");
+   case BLK_ZONED_HM:
+   return sprintf(page, "host-managed\n");
+   default:
+   return sprintf(page, "none\n");
+   }
+}
+
 static ssize_t queue_nomerges_show(struct request_queue *q, char *page)
 {
return queue_var_show((blk_queue_nomerges(q) << 1) |
@@ -485,6 +497,11 @@ static struct queue_sysfs_entry queue_nonrot_entry = {
.store = queue_store_nonrot,
 };
 
+static struct queue_sysfs_entry queue_zoned_entry = {
+   .attr = {.name = "zoned", .mode = S_IRUGO },
+   .show = queue_zoned_show,
+};
+
 static struct queue_sysfs_entry queue_nomerges_entry = {
.attr = {.name = "nomerges", .mode = S_IRUGO | S_IWUSR },
.show = queue_nomerges_show,
@@ -546,6 +563,7 @@ static struct attribute *default_attrs[] = {
_discard_zeroes_data_entry.attr,
_write_same_max_entry.attr,
_nonrot_entry.attr,
+   _zoned_entry.attr,
_nomerges_entry.attr,
_rq_affinity_entry.attr,
_iostats_entry.attr,
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index e79055c..1c74b19 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -261,6 +261,15 @@ struct blk_queue_tag {
 #define BLK_SCSI_MAX_CMDS  (256)
 #define BLK_SCSI_CMD_PER_LONG  (BLK_SCSI_MAX_CMDS / (sizeof(long) * 8))
 
+/*
+ * Zoned block device models (zoned limit).
+ */
+enum blk_zoned_model {
+   BLK_ZONED_NONE, /* Regular block device */
+   BLK_ZONED_HA,   /* Host-aware zoned block device */
+   BLK_ZONED_HM,   /* Host-managed zoned block device */
+};
+
 struct queue_limits {
unsigned long   bounce_pfn;
unsigned long   seg_boundary_mask;
@@ -290,6 +299,7 @@ struct queue_limits {
unsigned char   cluster;
unsigned char   discard_zeroes_data;
unsigned char   raid_partial_stripes_expensive;
+   unsigned char   zoned;
 };
 
 struct request_queue {
@@ -627,6 +637,11 @@ static inline unsigned int blk_queue_cluster(struct 
request_queue *q)
return q->limits.cluster;
 }
 
+static inline unsigned int blk_queue_zoned(struct request_queue *q)
+{
+   return q->limits.zoned;
+}
+
 /*
  * We regard a request as sync, if either a read or a sync write
  */
@@ -1354,6 +1369,16 @@ static inline unsigned int bdev_write_same(struct 
block_device *bdev)
return 0;
 }
 
+static inline unsigned int bdev_zoned(struct block_device *bdev)
+{
+   struct request_queue *q = bdev_get_queue(bdev);
+
+   if (q)
+   return blk_queue_zoned(q);
+
+   return 0;
+}
+
 static inline int queue_dma_alignment(struct request_queue *q)
 {
return q ? q->dma_alignment : 511;
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/1] ibmvfc: Fix I/O hang when port is not mapped

2016-09-19 Thread Tyrel Datwyler
On 09/19/2016 06:59 AM, Brian King wrote:
> If a VFC port gets unmapped in the VIOS, it may not respond with a CRQ init
> complete following H_REG_CRQ. If this occurs, we can end up having called
> scsi_block_requests and not a resulting unblock until the init complete
> happens, which may never occur, and we end up hanging I/O requests.
> This patch ensures the host action stay set to IBMVFC_HOST_ACTION_TGT_DEL so
> we move all rports into devloss state and unblock unless we receive an
> init complete. 
> 
> Signed-off-by: Brian King 

In retrospect this probably should have been queued up for stable as well.

-Tyrel

> ---
> 
>  drivers/scsi/ibmvscsi/ibmvfc.c |1 -
>  1 file changed, 1 deletion(-)
> 
> diff -puN drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_unmap_hang_fix 
> drivers/scsi/ibmvscsi/ibmvfc.c
> --- linux-2.6.git/drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_unmap_hang_fix
> 2016-09-09 15:46:36.452011778 -0500
> +++ linux-2.6.git-bjking1/drivers/scsi/ibmvscsi/ibmvfc.c  2016-09-09 
> 15:47:07.026632886 -0500
> @@ -717,7 +717,6 @@ static int ibmvfc_reset_crq(struct ibmvf
>   spin_lock_irqsave(vhost->host->host_lock, flags);
>   vhost->state = IBMVFC_NO_CRQ;
>   vhost->logged_in = 0;
> - ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_NONE);
>  
>   /* Clean out the queue */
>   memset(crq->msgs, 0, PAGE_SIZE);
> _
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/1] ibmvfc: Fix I/O hang when port is not mapped

2016-09-19 Thread Martin K. Petersen
> "Brian" == Brian King  writes:

Brian> If a VFC port gets unmapped in the VIOS, it may not respond with
Brian> a CRQ init complete following H_REG_CRQ. If this occurs, we can
Brian> end up having called scsi_block_requests and not a resulting
Brian> unblock until the init complete happens, which may never occur,
Brian> and we end up hanging I/O requests.  This patch ensures the host
Brian> action stay set to IBMVFC_HOST_ACTION_TGT_DEL so we move all
Brian> rports into devloss state and unblock unless we receive an init
Brian> complete.

Applied to 4.9/scsi-queue.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/6] ipr: use pci_irq_allocate_vectors

2016-09-19 Thread Martin K. Petersen
> "Christoph" == Christoph Hellwig  writes:

Christoph> Switch the ipr driver to use pci_alloc_irq_vectors.  We need
Christoph> to two calls to pci_alloc_irq_vectors as ipr only supports
Christoph> multiple MSI-X vectors, but not multiple MSI vectors.

Christoph> Otherwise this cleans up a lot of cruft and allows to use a
Christoph> common request_irq loop for irq types, which happens to only
Christoph> iterate over a single line in the non MSI-X case.

Brian, Gabriel: Please test and review. Thanks!

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/6] arcmsr: use pci_alloc_irq_vectors

2016-09-19 Thread Martin K. Petersen
> "Christoph" == Christoph Hellwig  writes:

Christoph> Switch the arcmsr driver to use pci_alloc_irq_vectors.  We
Christoph> need to two calls to pci_alloc_irq_vectors as arcmsr only
Christoph> supports multiple MSI-X vectors, but not multiple MSI
Christoph> vectors.

Christoph> Otherwise this cleans up a lot of cruft and allows to use a
Christoph> common request_irq loop for irq types, which happens to only
Christoph> iterate over a single line in the non MSI-X case.

Ching: Please test and review. Thanks!

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RESEND] [PATCH 1/1] ses: Retry UNIT ATTENTION for receive diagnostics

2016-09-19 Thread Ewan D. Milne
On Mon, 2016-09-19 at 09:20 -0700, James Bottomley wrote:
> On Mon, 2016-09-19 at 11:57 -0400, Martin K. Petersen wrote:
> > > > > > > "Brian" == Brian King  writes:
> > 
> > Brian> If the ses driver receives a UNIT ATTENTION when issuing a
> > Brian> receive diagnostics while probing a SES device, it fails to
> > Brian> attach with messages such as:
> > 
> > Brian> scsi 1:0:7:0: Failed to get diagnostic page 0x802 scsi
> > Brian> 1:0:7:0: Failed to bind enclosure -19
> > 
> > Brian> Fix this by eating unit attentions for these commands.
> > 
> > James?
> 
> It seems to me that UA handling should be a part of scsi_execute_req
> (and scsi_execute) ... that is unless anyone can find a caller that
> would actually be interested.  I've been looking but haven't found one
> so far.
> 
> James

Since UNIT ATTENTION is usually reporting a condition unrelated to
the command that was sent (I'm not sure 29 00 qualifies as unrelated
since it indicates loss of device state), we probably shouldn't
require every caller to retry on it.  Could we handle this internally,
(maybe unless it persists for N attempts), before returning?

We should still be going through the scsi_check_sense() path and
the device handlers need to see the sense.

(removed cc: stable from reply)

-Ewan


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RESEND] [PATCH 1/1] ses: Retry UNIT ATTENTION for receive diagnostics

2016-09-19 Thread James Bottomley
On Mon, 2016-09-19 at 11:57 -0400, Martin K. Petersen wrote:
> > > > > > "Brian" == Brian King  writes:
> 
> Brian> If the ses driver receives a UNIT ATTENTION when issuing a
> Brian> receive diagnostics while probing a SES device, it fails to
> Brian> attach with messages such as:
> 
> Brian> scsi 1:0:7:0: Failed to get diagnostic page 0x802 scsi
> Brian> 1:0:7:0: Failed to bind enclosure -19
> 
> Brian> Fix this by eating unit attentions for these commands.
> 
> James?

It seems to me that UA handling should be a part of scsi_execute_req
(and scsi_execute) ... that is unless anyone can find a caller that
would actually be interested.  I've been looking but haven't found one
so far.

James

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/1] ibmvfc: Fix I/O hang when port is not mapped

2016-09-19 Thread Tyrel Datwyler
On 09/19/2016 06:59 AM, Brian King wrote:
> If a VFC port gets unmapped in the VIOS, it may not respond with a CRQ init
> complete following H_REG_CRQ. If this occurs, we can end up having called
> scsi_block_requests and not a resulting unblock until the init complete
> happens, which may never occur, and we end up hanging I/O requests.
> This patch ensures the host action stay set to IBMVFC_HOST_ACTION_TGT_DEL so
> we move all rports into devloss state and unblock unless we receive an
> init complete. 
> 
> Signed-off-by: Brian King 

Acked-by: Tyrel Datwyler 

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V1] smartpqi: raid bypass lba calculation fix

2016-09-19 Thread Martin K. Petersen
> "Don" == Don Brace  writes:

Don> From: kevin Barnett  In the ioaccel
Don> path, the calculation of the starting LBA for READ(6)/WRITE(6) SCSI
Don> commands does not take into account the most significant 5 bits of
Don> the LBA: it only uses the least significant 16 bits of the starting
Don> LBA.

Applied to 4.9/scsi-queue.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] megaraid_sas: clean function declarations in megaraid_sas_base.c up

2016-09-19 Thread Martin K. Petersen
> "Baoyou" == Baoyou Xie  writes:

Baoyou> We get a few warnings when building kernel with W=1:
Baoyou> drivers/scsi/megaraid/megaraid_sas_fusion.c:281:1: warning: no
Baoyou> previous prototype for 'megasas_free_cmds_fusion'
Baoyou> [-Wmissing-prototypes]
Baoyou> drivers/scsi/megaraid/megaraid_sas_fusion.c:714:1: warning: no
Baoyou> previous prototype for 'megasas_ioc_init_fusion'
Baoyou> [-Wmissing-prototypes] 

Baoyou> In fact, these functions are declared in
Baoyou> drivers/scsi/megaraid/megaraid_sas_base.c, but should be
Baoyou> declared in a header file, thus can be recognized in other file.

Baoyou> So this patch adds the declarations into
Baoyou> drivers/scsi/megaraid/megaraid_sas_fusion.h.

Applied to 4.9/scsi-queue.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 2/2] ipr: Remove redundant messages at adapter init time

2016-09-19 Thread Martin K. Petersen
> "Brian" == Brian King  writes:

Brian> Whenever multiple HRRQs are enabled, which is the default setting
Brian> now, we end up seeing the following message logged prior to
Brian> initialization of each HRRQ:

Brian> Starting IOA initialization sequence

Brian> This results in 16 of these messages on most adapters, which
Brian> serves little purpose. Change to just log this once.

Applied to 4.9/scsi-queue.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] ipr: Don't log unnecessary 9084 error details

2016-09-19 Thread Martin K. Petersen
> "Brian" == Brian King  writes:

Brian> A 9084 error gets logged by the ipr adapter when adapter raw mode
Brian> gets enabled. A bunch of unformatted hex data also gets logged
Brian> for this error, which is of little use, so let's avoid logging it
Brian> by default in order to avoid the log getting polluted with
Brian> useless data.

Applied to 4.9/scsi-queue.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RESEND] [PATCH 1/1] ses: Retry UNIT ATTENTION for receive diagnostics

2016-09-19 Thread Martin K. Petersen
> "Brian" == Brian King  writes:

Brian> If the ses driver receives a UNIT ATTENTION when issuing a
Brian> receive diagnostics while probing a SES device, it fails to
Brian> attach with messages such as:

Brian> scsi 1:0:7:0: Failed to get diagnostic page 0x802 scsi
Brian> 1:0:7:0: Failed to bind enclosure -19

Brian> Fix this by eating unit attentions for these commands.

James?

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] hpsa: correct scsi 6byte lba calculation

2016-09-19 Thread Martin K. Petersen
> "Don" == Don Brace  writes:

Don> From: Mahesh Rajashekhara 
Don> Missing 5 bits of byte 1 in the LBA issued by SML

Applied to 4.9/scsi-queue.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v1] Ibmvscsis: Fixed unused variable

2016-09-19 Thread Martin K. Petersen
> "Bryant" == Bryant G Ly  writes:

Applied to 4.9/scsi-queue.

-- 
Martin K. Petersen  Oracle Linux Engineering
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 6/7] t128: remove from tree

2016-09-19 Thread Christoph Hellwig
The driver has not seen any maintainer activity or other work that
wasn't tree wide conversion or clenaups in the entire history of
the git tree.

Signed-off-by: Christoph Hellwig 
---
 Documentation/scsi/scsi-parameters.txt |   3 -
 MAINTAINERS|   1 -
 drivers/scsi/Kconfig   |  17 --
 drivers/scsi/Makefile  |   1 -
 drivers/scsi/t128.c| 407 -
 drivers/scsi/t128.h|  97 
 6 files changed, 526 deletions(-)
 delete mode 100644 drivers/scsi/t128.c
 delete mode 100644 drivers/scsi/t128.h

diff --git a/Documentation/scsi/scsi-parameters.txt 
b/Documentation/scsi/scsi-parameters.txt
index fe77b5a..00a03c0 100644
--- a/Documentation/scsi/scsi-parameters.txt
+++ b/Documentation/scsi/scsi-parameters.txt
@@ -113,9 +113,6 @@ parameters may be changed at runtime by the command
sym53c416=  [HW,SCSI]
See header of drivers/scsi/sym53c416.c.
 
-   t128=   [HW,SCSI]
-   See header of drivers/scsi/t128.c.
-
tmscsim=[HW,SCSI]
See comment before function dc390_setup() in
drivers/scsi/tmscsim.c.
diff --git a/MAINTAINERS b/MAINTAINERS
index 2a0c056..e4ec1b8 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8054,7 +8054,6 @@ F:drivers/scsi/g_NCR5380_mmio.c
 F: drivers/scsi/mac_scsi.*
 F: drivers/scsi/sun3_scsi.*
 F: drivers/scsi/sun3_scsi_vme.c
-F: drivers/scsi/t128.*
 
 NCR DUAL 700 SCSI DRIVER (MICROCHANNEL)
 M: "James E.J. Bottomley" 
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index ee83d95..a38e37c 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -1345,23 +1345,6 @@ config SCSI_AM53C974
  To compile this driver as a module, choose M here: the
  module will be called am53c974.
 
-config SCSI_T128
-   tristate "Trantor T128/T128F/T228 SCSI support"
-   depends on ISA && SCSI
-   select SCSI_SPI_ATTRS
-   select CHECK_SIGNATURE
-   ---help---
- This is support for a SCSI host adapter. It is explained in section
- 3.11 of the SCSI-HOWTO, available from
- .  If it doesn't work out
- of the box, you may have to change some settings in
- .  Note that Trantor was purchased by
- Adaptec, and some former Trantor products are being sold under the
- Adaptec name.
-
- To compile this driver as a module, choose M here: the
- module will be called t128.
-
 config SCSI_NSP32
tristate "Workbit NinjaSCSI-32Bi/UDE support"
depends on PCI && SCSI && !64BIT
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index be3108c..392609a 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -87,7 +87,6 @@ obj-$(CONFIG_SCSI_QLA_ISCSI)  += libiscsi.o qla4xxx/
 obj-$(CONFIG_SCSI_LPFC)+= lpfc/
 obj-$(CONFIG_SCSI_BFA_FC)  += bfa/
 obj-$(CONFIG_SCSI_CHELSIO_FCOE)+= csiostor/
-obj-$(CONFIG_SCSI_T128)+= t128.o
 obj-$(CONFIG_SCSI_DMX3191D)+= dmx3191d.o
 obj-$(CONFIG_SCSI_HPSA)+= hpsa.o
 obj-$(CONFIG_SCSI_SMARTPQI)+= smartpqi/
diff --git a/drivers/scsi/t128.c b/drivers/scsi/t128.c
deleted file mode 100644
index 8a8608a..000
--- a/drivers/scsi/t128.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * Trantor T128/T128F/T228 driver
- * Note : architecturally, the T100 and T130 are different and won't 
- * work
- *
- * Copyright 1993, Drew Eckhardt
- * Visionary Computing
- * (Unix and Linux consulting and custom programming)
- * d...@colorado.edu
- *  +1 (303) 440-4894
- *
- * For more information, please consult 
- *
- * Trantor Systems, Ltd.
- * T128/T128F/T228 SCSI Host Adapter
- * Hardware Specifications
- * 
- * Trantor Systems, Ltd. 
- * 5415 Randall Place
- * Fremont, CA 94538
- * 1+ (415) 770-1400, FAX 1+ (415) 770-9910
- */
-
-/*
- * The card is detected and initialized in one of several ways : 
- * 1.  Autoprobe (default) - since the board is memory mapped, 
- * a BIOS signature is scanned for to locate the registers.
- * An interrupt is triggered to autoprobe for the interrupt
- * line.
- *
- * 2.  With command line overrides - t128=address,irq may be 
- * used on the LILO command line to override the defaults.
- *
- * 3.  With the T128_OVERRIDE compile time define.  This is 
- * specified as an array of address, irq tuples.  Ie, for
- * one board at the default 0xcc000 address, IRQ5, I could say 
- * -DT128_OVERRIDE={{0xcc000, 5}}
- * 
- * Note that if the override methods are used, place holders must
- * be specified for other boards in the system.
- * 
- * T128/T128F jumper/dipswitch settings (note : on my sample, the switches 
- * were epoxy'd shut, meaning I couldn't change the 

[PATCH 7/7] dtc: remove from tree

2016-09-19 Thread Christoph Hellwig
The driver has not seen any maintainer activity or other work that
wasn't tree wide conversion or clenaups in the entire history of
the git tree.

Signed-off-by: Christoph Hellwig 
---
 Documentation/scsi/dtc3x80.txt |  43 
 Documentation/scsi/scsi-parameters.txt |   3 -
 MAINTAINERS|   2 -
 drivers/scsi/Kconfig   |  14 --
 drivers/scsi/Makefile  |   1 -
 drivers/scsi/dtc.c | 447 -
 drivers/scsi/dtc.h |  42 
 7 files changed, 552 deletions(-)
 delete mode 100644 Documentation/scsi/dtc3x80.txt
 delete mode 100644 drivers/scsi/dtc.c
 delete mode 100644 drivers/scsi/dtc.h

diff --git a/Documentation/scsi/dtc3x80.txt b/Documentation/scsi/dtc3x80.txt
deleted file mode 100644
index 1d7af9f..000
--- a/Documentation/scsi/dtc3x80.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-README file for the Linux DTC3180/3280 scsi driver.
-by Ray Van Tassle (ra...@comm.mot.com)  March 1996
-Based on the generic & core NCR5380 code by Drew Eckhard
-
-SCSI device driver for the DTC 3180/3280.
-Data Technology Corp---a division of Qume.
-
-The 3280 has a standard floppy interface.
-
-The 3180 does not.  Otherwise, they are identical.
-
-The DTC3x80 does not support DMA but it does have Pseudo-DMA which is
-supported by the driver.
-
-Its DTC406 scsi chip is supposedly compatible with the NCR 53C400.
-It is memory mapped, uses an IRQ, but no dma or io-port.  There is
-internal DMA, between SCSI bus and an on-chip 128-byte buffer.  Double
-buffering is done automagically by the chip.  Data is transferred
-between the on-chip buffer and CPU/RAM via memory moves.
-
-The driver detects the possible memory addresses (jumper selectable):
-   CC00, DC00, C800, and D800
-The possible IRQ's (jumper selectable) are:
-   IRQ 10, 11, 12, 15
-Parity is supported by the chip, but not by this driver.
-Information can be obtained from /proc/scsi/dtc3c80/N.
-
-Note on interrupts:
-
-The documentation says that it can be set to interrupt whenever the
-on-chip buffer needs CPU attention.  I couldn't get this to work.  So
-the driver polls for data-ready in the pseudo-DMA transfer routine.
-The interrupt support routines in the NCR3280.c core modules handle
-scsi disconnect/reconnect, and this (mostly) works.  However.  I
-have tested it with 4 totally different hard drives (both SCSI-1 and
-SCSI-2), and one CDROM drive.  Interrupts works great for all but one
-specific hard drive.  For this one, the driver will eventually hang in
-the transfer state.  I have tested with: "dd bs=4k count=2k
-of=/dev/null if=/dev/sdb".  It reads ok for a while, then hangs.
-After beating my head against this for a couple of weeks, getting
-nowhere, I give up.  So.This driver does NOT use interrupts, even
-if you have the card jumpered to an IRQ.  Probably nobody will ever
-care.
diff --git a/Documentation/scsi/scsi-parameters.txt 
b/Documentation/scsi/scsi-parameters.txt
index 00a03c0..8e66daf 100644
--- a/Documentation/scsi/scsi-parameters.txt
+++ b/Documentation/scsi/scsi-parameters.txt
@@ -34,9 +34,6 @@ parameters may be changed at runtime by the command
See drivers/scsi/BusLogic.c, comment before function
BusLogic_ParseDriverOptions().
 
-   dtc3181e=   [HW,SCSI]
-   See Documentation/scsi/g_NCR5380.txt.
-
eata=   [HW,SCSI]
 
fdomain=[HW,SCSI]
diff --git a/MAINTAINERS b/MAINTAINERS
index e4ec1b8..48f2b48 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8042,13 +8042,11 @@ M:  Michael Schmitz 
 L: linux-scsi@vger.kernel.org
 S: Maintained
 F: Documentation/scsi/g_NCR5380.txt
-F: Documentation/scsi/dtc3x80.txt
 F: drivers/scsi/NCR5380.*
 F: drivers/scsi/arm/cumana_1.c
 F: drivers/scsi/arm/oak.c
 F: drivers/scsi/atari_scsi.*
 F: drivers/scsi/dmx3191d.c
-F: drivers/scsi/dtc.*
 F: drivers/scsi/g_NCR5380.*
 F: drivers/scsi/g_NCR5380_mmio.c
 F: drivers/scsi/mac_scsi.*
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index a38e37c..3e2bdb9 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -637,20 +637,6 @@ config SCSI_DMX3191D
  To compile this driver as a module, choose M here: the
  module will be called dmx3191d.
 
-config SCSI_DTC3280
-   tristate "DTC3180/3280 SCSI support"
-   depends on ISA && SCSI
-   select SCSI_SPI_ATTRS
-   select CHECK_SIGNATURE
-   help
- This is support for DTC 3180/3280 SCSI Host Adapters.  Please read
- the SCSI-HOWTO, available from
- , and the file
- .
-
- To compile this driver as a module, choose M here: the
- module will be called dtc.
-
 config SCSI_EATA
tristate "EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) 
support"
   

[PATCH 5/7] pas16: remove from tree

2016-09-19 Thread Christoph Hellwig
The driver has not seen any maintainer activity or other work that
wasn't tree wide conversion or clenaups in the entire history of
the git tree.

Signed-off-by: Christoph Hellwig 
---
 Documentation/scsi/scsi-parameters.txt |   3 -
 MAINTAINERS|   1 -
 drivers/scsi/Kconfig   |  14 -
 drivers/scsi/Makefile  |   1 -
 drivers/scsi/pas16.c   | 565 -
 drivers/scsi/pas16.h   | 121 ---
 6 files changed, 705 deletions(-)
 delete mode 100644 drivers/scsi/pas16.c
 delete mode 100644 drivers/scsi/pas16.h

diff --git a/Documentation/scsi/scsi-parameters.txt 
b/Documentation/scsi/scsi-parameters.txt
index 083bd93..fe77b5a 100644
--- a/Documentation/scsi/scsi-parameters.txt
+++ b/Documentation/scsi/scsi-parameters.txt
@@ -80,9 +80,6 @@ parameters may be changed at runtime by the command
Format: ,
See also Documentation/scsi/st.txt.
 
-   pas16=  [HW,SCSI]
-   See header of drivers/scsi/pas16.c.
-
scsi_debug_*=   [SCSI]
See drivers/scsi/scsi_debug.c.
 
diff --git a/MAINTAINERS b/MAINTAINERS
index 6ca763f..2a0c056 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8052,7 +8052,6 @@ F:drivers/scsi/dtc.*
 F: drivers/scsi/g_NCR5380.*
 F: drivers/scsi/g_NCR5380_mmio.c
 F: drivers/scsi/mac_scsi.*
-F: drivers/scsi/pas16.*
 F: drivers/scsi/sun3_scsi.*
 F: drivers/scsi/sun3_scsi_vme.c
 F: drivers/scsi/t128.*
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 6978531..ee83d95 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -1225,20 +1225,6 @@ config SCSI_NCR53C8XX_NO_DISCONNECT
  not allow targets to disconnect is not reasonable if there is more
  than 1 device on a SCSI bus. The normal answer therefore is N.
 
-config SCSI_PAS16
-   tristate "PAS16 SCSI support"
-   depends on ISA && SCSI
-   select SCSI_SPI_ATTRS
-   ---help---
- This is support for a SCSI host adapter.  It is explained in section
- 3.10 of the SCSI-HOWTO, available from
- .  If it doesn't work out
- of the box, you may have to change some settings in
- .
-
- To compile this driver as a module, choose M here: the
- module will be called pas16.
-
 config SCSI_QLOGIC_FAS
tristate "Qlogic FAS SCSI support"
depends on ISA && SCSI
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 921cf07..be3108c 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -87,7 +87,6 @@ obj-$(CONFIG_SCSI_QLA_ISCSI)  += libiscsi.o qla4xxx/
 obj-$(CONFIG_SCSI_LPFC)+= lpfc/
 obj-$(CONFIG_SCSI_BFA_FC)  += bfa/
 obj-$(CONFIG_SCSI_CHELSIO_FCOE)+= csiostor/
-obj-$(CONFIG_SCSI_PAS16)   += pas16.o
 obj-$(CONFIG_SCSI_T128)+= t128.o
 obj-$(CONFIG_SCSI_DMX3191D)+= dmx3191d.o
 obj-$(CONFIG_SCSI_HPSA)+= hpsa.o
diff --git a/drivers/scsi/pas16.c b/drivers/scsi/pas16.c
deleted file mode 100644
index 2f689ae..000
--- a/drivers/scsi/pas16.c
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
- * This driver adapted from Drew Eckhardt's Trantor T128 driver
- *
- * Copyright 1993, Drew Eckhardt
- * Visionary Computing
- * (Unix and Linux consulting and custom programming)
- * d...@colorado.edu
- *  +1 (303) 666-5836
- *
- *  ( Based on T128 - DISTRIBUTION RELEASE 3. ) 
- *
- * Modified to work with the Pro Audio Spectrum/Studio 16
- * by John Weidman.
- *
- *
- * For more information, please consult 
- *
- * Media Vision
- * (510) 770-8600
- * (800) 348-7116
- */
-
-/*
- * The card is detected and initialized in one of several ways : 
- * 1.  Autoprobe (default) - There are many different models of
- * the Pro Audio Spectrum/Studio 16, and I only have one of
- * them, so this may require a little tweaking.  An interrupt
- * is triggered to autoprobe for the interrupt line.  Note:
- * with the newer model boards, the interrupt is set via
- * software after reset using the default_irq for the
- * current board number.
- *
- * 2.  With command line overrides - pas16=port,irq may be 
- * used on the LILO command line to override the defaults.
- *
- * 3.  With the PAS16_OVERRIDE compile time define.  This is 
- * specified as an array of address, irq tuples.  Ie, for
- * one board at the default 0x388 address, IRQ10, I could say 
- * -DPAS16_OVERRIDE={{0x388, 10}}
- * NOTE:  Untested.
- * 
- * 4.  When included as a module, with arguments passed on the command line:
- * pas16_irq=xxthe interrupt
- * pas16_addr=xx   the port
- * e.g. "modprobe pas16 pas16_addr=0x388 pas16_irq=5"
- *
- * Note that if the override methods are used, place holders must
- * be specified for other 

[PATCH 4/7] u14-34f: remove from tree

2016-09-19 Thread Christoph Hellwig
The driver has not seen any maintainer activity or other work that
wasn't tree wide conversion or clenaups in the entire history of
the git tree.

Signed-off-by: Christoph Hellwig 
---
 Documentation/scsi/scsi-parameters.txt |3 -
 MAINTAINERS|6 -
 drivers/scsi/Kconfig   |   49 -
 drivers/scsi/Makefile  |1 -
 drivers/scsi/u14-34f.c | 1971 
 5 files changed, 2030 deletions(-)
 delete mode 100644 drivers/scsi/u14-34f.c

diff --git a/Documentation/scsi/scsi-parameters.txt 
b/Documentation/scsi/scsi-parameters.txt
index 2135ff4..083bd93 100644
--- a/Documentation/scsi/scsi-parameters.txt
+++ b/Documentation/scsi/scsi-parameters.txt
@@ -123,8 +123,5 @@ parameters may be changed at runtime by the command
See comment before function dc390_setup() in
drivers/scsi/tmscsim.c.
 
-   u14-34f=[HW,SCSI] UltraStor 14F/34F SCSI host adapter
-   See header of drivers/scsi/u14-34f.c.
-
wd33c93=[HW,SCSI]
See header of drivers/scsi/wd33c93.c.
diff --git a/MAINTAINERS b/MAINTAINERS
index fdcce6b..6ca763f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -11967,12 +11967,6 @@ S: Maintained
 F: drivers/tc/
 F: include/linux/tc.h
 
-U14-34F SCSI DRIVER
-M: Dario Ballabio 
-L: linux-scsi@vger.kernel.org
-S: Maintained
-F: drivers/scsi/u14-34f.c
-
 UBI FILE SYSTEM (UBIFS)
 M: Richard Weinberger 
 M: Artem Bityutskiy 
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 57cf77f..6978531 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -1376,55 +1376,6 @@ config SCSI_T128
  To compile this driver as a module, choose M here: the
  module will be called t128.
 
-config SCSI_U14_34F
-   tristate "UltraStor 14F/34F support"
-   depends on ISA && SCSI && ISA_DMA_API
-   ---help---
- This is support for the UltraStor 14F and 34F SCSI-2 host adapters.
- The source at  contains some
- information about this hardware.  If the driver doesn't work out of
- the box, you may have to change some settings in
- .  Read the SCSI-HOWTO, available from
- .  Note that there is also
- another driver for the same hardware: "UltraStor SCSI support",
- below.  You should say Y to both only if you want 24F support as
- well.
-
- To compile this driver as a module, choose M here: the
- module will be called u14-34f.
-
-config SCSI_U14_34F_TAGGED_QUEUE
-   bool "enable tagged command queueing"
-   depends on SCSI_U14_34F
-   help
- This is a feature of SCSI-2 which improves performance: the host
- adapter can send several SCSI commands to a device's queue even if
- previous commands haven't finished yet.
- This is equivalent to the "u14-34f=tc:y" boot option.
-
-config SCSI_U14_34F_LINKED_COMMANDS
-   bool "enable elevator sorting"
-   depends on SCSI_U14_34F
-   help
- This option enables elevator sorting for all probed SCSI disks and
- CD-ROMs. It definitely reduces the average seek distance when doing
- random seeks, but this does not necessarily result in a noticeable
- performance improvement: your mileage may vary...
- This is equivalent to the "u14-34f=lc:y" boot option.
-
-config SCSI_U14_34F_MAX_TAGS
-   int "maximum number of queued commands"
-   depends on SCSI_U14_34F
-   default "8"
-   help
- This specifies how many SCSI commands can be maximally queued for
- each probed SCSI device. You should reduce the default value of 8
- only if you have disks with buggy or limited tagged command support.
- Minimum is 2 and maximum is 14. This value is also the window size
- used by the elevator sorting option above. The effective value used
- by the driver for each probed SCSI device is reported at boot time.
- This is equivalent to the "u14-34f=mq:8" boot option.
-
 config SCSI_NSP32
tristate "Workbit NinjaSCSI-32Bi/UDE support"
depends on PCI && SCSI && !64BIT
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 2e7d9ef..921cf07 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -61,7 +61,6 @@ obj-$(CONFIG_SCSI_SIM710) += 53c700.o sim710.o
 obj-$(CONFIG_SCSI_ADVANSYS)+= advansys.o
 obj-$(CONFIG_SCSI_BUSLOGIC)+= BusLogic.o
 obj-$(CONFIG_SCSI_DPT_I2O) += dpt_i2o.o
-obj-$(CONFIG_SCSI_U14_34F) += u14-34f.o
 obj-$(CONFIG_SCSI_ARCMSR)  += arcmsr/
 obj-$(CONFIG_SCSI_AHA152X) += aha152x.o
 obj-$(CONFIG_SCSI_AHA1542) += aha1542.o
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c
deleted file mode 

[PATCH 3/7] ultrastor: remove from tree

2016-09-19 Thread Christoph Hellwig
The driver has not seen any maintainer activity or other work that
wasn't tree wide conversion or clenaups in the entire history of
the git tree.

Signed-off-by: Christoph Hellwig 
---
 drivers/scsi/Kconfig |   17 -
 drivers/scsi/Makefile|1 -
 drivers/scsi/ultrastor.c | 1210 --
 drivers/scsi/ultrastor.h |   80 ---
 4 files changed, 1308 deletions(-)
 delete mode 100644 drivers/scsi/ultrastor.c
 delete mode 100644 drivers/scsi/ultrastor.h

diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 543005b..57cf77f 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -1425,23 +1425,6 @@ config SCSI_U14_34F_MAX_TAGS
  by the driver for each probed SCSI device is reported at boot time.
  This is equivalent to the "u14-34f=mq:8" boot option.
 
-config SCSI_ULTRASTOR
-   tristate "UltraStor SCSI support"
-   depends on X86 && ISA && SCSI && ISA_DMA_API
-   ---help---
- This is support for the UltraStor 14F, 24F and 34F SCSI-2 host
- adapter family.  This driver is explained in section 3.12 of the
- SCSI-HOWTO, available from
- .  If it doesn't work out
- of the box, you may have to change some settings in
- .
-
- Note that there is also another driver for the same hardware:
- "UltraStor 14F/34F support", above.
-
- To compile this driver as a module, choose M here: the
- module will be called ultrastor.
-
 config SCSI_NSP32
tristate "Workbit NinjaSCSI-32Bi/UDE support"
depends on PCI && SCSI && !64BIT
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index 07bf799..2e7d9ef 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -63,7 +63,6 @@ obj-$(CONFIG_SCSI_BUSLOGIC)   += BusLogic.o
 obj-$(CONFIG_SCSI_DPT_I2O) += dpt_i2o.o
 obj-$(CONFIG_SCSI_U14_34F) += u14-34f.o
 obj-$(CONFIG_SCSI_ARCMSR)  += arcmsr/
-obj-$(CONFIG_SCSI_ULTRASTOR)   += ultrastor.o
 obj-$(CONFIG_SCSI_AHA152X) += aha152x.o
 obj-$(CONFIG_SCSI_AHA1542) += aha1542.o
 obj-$(CONFIG_SCSI_AHA1740) += aha1740.o
diff --git a/drivers/scsi/ultrastor.c b/drivers/scsi/ultrastor.c
deleted file mode 100644
index 14e0c40..000
--- a/drivers/scsi/ultrastor.c
+++ /dev/null
@@ -1,1210 +0,0 @@
-/*
- * ultrastor.c Copyright (C) 1992 David B. Gentzel
- * Low-level SCSI driver for UltraStor 14F, 24F, and 34F
- * by David B. Gentzel, Whitfield Software Services, Carnegie, PA
- * (gent...@nova.enet.dec.com)
- *  scatter/gather added by Scott Taylor (n21...@tamuts.tamu.edu)
- *  24F and multiple command support by John F. Carr (j...@athena.mit.edu)
- *John's work modified by Caleb Epstein (c...@jpmorgan.com) and 
- *Eric Youngdale (er...@cais.com).
- * Thanks to UltraStor for providing the necessary documentation
- *
- *  This is an old driver, for the 14F and 34F you should be using the
- *  u14-34f driver instead.
- */
-
-/*
- * TODO:
- * 1. Find out why scatter/gather is limited to 16 requests per command.
- * This is fixed, at least on the 24F, as of version 1.12 - CAE.
- * 2. Look at command linking (mscp.command_link and
- *mscp.command_link_id).  (Does not work with many disks, 
- * and no performance increase.  ERY).
- * 3. Allow multiple adapters.
- */
-
-/*
- * NOTES:
- *The UltraStor 14F, 24F, and 34F are a family of intelligent, high
- *performance SCSI-2 host adapters.  They all support command queueing
- *and scatter/gather I/O.  Some of them can also emulate the standard
- *WD1003 interface for use with OS's which don't support SCSI.  Here
- *is the scoop on the various models:
- * 14F - ISA first-party DMA HA with floppy support and WD1003 emulation.
- * 14N - ISA HA with floppy support.  I think that this is a non-DMA
- *   HA.  Nothing further known.
- * 24F - EISA Bus Master HA with floppy support and WD1003 emulation.
- * 34F - VL-Bus Bus Master HA with floppy support (no WD1003 emulation).
- *
- *The 14F, 24F, and 34F are supported by this driver.
- *
- *Places flagged with a triple question-mark are things which are either
- *unfinished, questionable, or wrong.
- */
-
-/* Changes from version 1.11 alpha to 1.12
- *
- * Increased the size of the scatter-gather list to 33 entries for
- * the 24F adapter (it was 16).  I don't have the specs for the 14F
- * or the 34F, so they may support larger s-g lists as well.
- *
- * Caleb Epstein 
- */
-
-/* Changes from version 1.9 to 1.11
- *
- * Patches to bring this driver up to speed with the default kernel
- * driver which supports only the 14F and 34F adapters.  This version
- * should compile cleanly into 0.99.13, 0.99.12 and probably 0.99.11.
- *
- * Fixes from Eric Youngdale to fix a few possible race conditions and
- * several problems with bit testing 

[PATCH 1/7] wd7000: remove from tree

2016-09-19 Thread Christoph Hellwig
The driver has not seen any maintainer activity or other work that
wasn't tree wide conversion or clenaups in the entire history of
the git tree.

Signed-off-by: Christoph Hellwig 
---
 Documentation/scsi/scsi-parameters.txt |3 -
 MAINTAINERS|6 -
 drivers/scsi/Kconfig   |   12 -
 drivers/scsi/Makefile  |1 -
 drivers/scsi/wd7000.c  | 1657 
 5 files changed, 1679 deletions(-)
 delete mode 100644 drivers/scsi/wd7000.c

diff --git a/Documentation/scsi/scsi-parameters.txt 
b/Documentation/scsi/scsi-parameters.txt
index d5ae6ce..5a5c608 100644
--- a/Documentation/scsi/scsi-parameters.txt
+++ b/Documentation/scsi/scsi-parameters.txt
@@ -131,6 +131,3 @@ parameters may be changed at runtime by the command
 
wd33c93=[HW,SCSI]
See header of drivers/scsi/wd33c93.c.
-
-   wd7000= [HW,SCSI]
-   See header of drivers/scsi/wd7000.c.
diff --git a/MAINTAINERS b/MAINTAINERS
index dd4966d..fdcce6b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12699,12 +12699,6 @@ F: drivers/watchdog/
 F: include/linux/watchdog.h
 F: include/uapi/linux/watchdog.h
 
-WD7000 SCSI DRIVER
-M: Miroslav Zagorac 
-L: linux-scsi@vger.kernel.org
-S: Maintained
-F: drivers/scsi/wd7000.c
-
 WIIMOTE HID DRIVER
 M: David Herrmann 
 L: linux-in...@vger.kernel.org
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index 75de1dc..15c6e9f 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -396,18 +396,6 @@ config SCSI_3W_SAS
  Please read the comments at the top of
  .
 
-config SCSI_7000FASST
-   tristate "7000FASST SCSI support"
-   depends on ISA && SCSI && ISA_DMA_API
-   select CHECK_SIGNATURE
-   help
- This driver supports the Western Digital 7000 SCSI host adapter
- family.  Some information is in the source:
- .
-
- To compile this driver as a module, choose M here: the
- module will be called wd7000.
-
 config SCSI_ACARD
tristate "ACARD SCSI support"
depends on PCI && SCSI
diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile
index fc0d9b8..d870cc5 100644
--- a/drivers/scsi/Makefile
+++ b/drivers/scsi/Makefile
@@ -99,7 +99,6 @@ obj-$(CONFIG_SCSI_DTC3280)+= dtc.o
 obj-$(CONFIG_SCSI_SYM53C8XX_2) += sym53c8xx_2/
 obj-$(CONFIG_SCSI_ZALON)   += zalon7xx.o
 obj-$(CONFIG_SCSI_EATA_PIO)+= eata_pio.o
-obj-$(CONFIG_SCSI_7000FASST)   += wd7000.o
 obj-$(CONFIG_SCSI_EATA)+= eata.o
 obj-$(CONFIG_SCSI_DC395x)  += dc395x.o
 obj-$(CONFIG_SCSI_AM53C974)+= esp_scsi.o   am53c974.o
diff --git a/drivers/scsi/wd7000.c b/drivers/scsi/wd7000.c
deleted file mode 100644
index 409f959..000
--- a/drivers/scsi/wd7000.c
+++ /dev/null
@@ -1,1657 +0,0 @@
-/* $Id: $
- *  linux/drivers/scsi/wd7000.c
- *
- *  Copyright (C) 1992  Thomas Wuensche
- * closely related to the aha1542 driver from Tommy Thorn
- * ( as close as different hardware allows on a lowlevel-driver :-) )
- *
- *  Revised (and renamed) by John Boyd  to
- *  accommodate Eric Youngdale's modifications to scsi.c.  Nov 1992.
- *
- *  Additional changes to support scatter/gather.  Dec. 1992.  tw/jb
- *
- *  No longer tries to reset SCSI bus at boot (it wasn't working anyway).
- *  Rewritten to support multiple host adapters.
- *  Miscellaneous cleanup.
- *  So far, still doesn't do reset or abort correctly, since I have no idea
- *  how to do them with this board (8^(.  Jan 1994 jb
- *
- * This driver now supports both of the two standard configurations (per
- * the 3.36 Owner's Manual, my latest reference) by the same method as
- * before; namely, by looking for a BIOS signature.  Thus, the location of
- * the BIOS signature determines the board configuration.  Until I have
- * time to do something more flexible, users should stick to one of the
- * following:
- *
- * Standard configuration for single-adapter systems:
- *- BIOS at CE00h
- *- I/O base address 350h
- *- IRQ level 15
- *- DMA channel 6
- * Standard configuration for a second adapter in a system:
- *- BIOS at C800h
- *- I/O base address 330h
- *- IRQ level 11
- *- DMA channel 5
- *
- * Anyone who can recompile the kernel is welcome to add others as need
- * arises, but unpredictable results may occur if there are conflicts.
- * In any event, if there are multiple adapters in a system, they MUST
- * use different I/O bases, IRQ levels, and DMA channels, since they will be
- * indistinguishable (and in direct conflict) otherwise.
- *
- *   As a point of information, the NO_OP command toggles the CMD_RDY bit
- * of the status port, and this fact could be used as a test for the I/O
- * base address (or more generally, board detection).  There is 

remove old and unmaintained ISA driver

2016-09-19 Thread Christoph Hellwig
Per discussion in last year and last week there are a few old ISA SCSI
drivers that haven't seen any work since the dawn of git, and most likely
no users.  Drop them to speed up killing off the scsi_module.c
infrastruture.

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/7] in2000: remove from tree

2016-09-19 Thread Christoph Hellwig
The driver has not seen any maintainer activity or other work that
wasn't tree wide conversion or clenaups in the entire history of
the git tree.

Signed-off-by: Christoph Hellwig 
---
 Documentation/scsi/00-INDEX|2 -
 Documentation/scsi/in2000.txt  |  202 ---
 Documentation/scsi/scsi-parameters.txt |3 -
 drivers/scsi/Kconfig   |   12 -
 drivers/scsi/Makefile  |1 -
 drivers/scsi/in2000.c  | 2302 
 drivers/scsi/in2000.h  |  412 --
 7 files changed, 2934 deletions(-)
 delete mode 100644 Documentation/scsi/in2000.txt
 delete mode 100644 drivers/scsi/in2000.c
 delete mode 100644 drivers/scsi/in2000.h

diff --git a/Documentation/scsi/00-INDEX b/Documentation/scsi/00-INDEX
index c4b978a..bb4a76f 100644
--- a/Documentation/scsi/00-INDEX
+++ b/Documentation/scsi/00-INDEX
@@ -64,8 +64,6 @@ hpsa.txt
- HP Smart Array Controller SCSI driver.
 hptiop.txt
- HIGHPOINT ROCKETRAID 3xxx RAID DRIVER
-in2000.txt
-   - info on in2000 driver
 libsas.txt
- Serial Attached SCSI management layer.
 link_power_management_policy.txt
diff --git a/Documentation/scsi/in2000.txt b/Documentation/scsi/in2000.txt
deleted file mode 100644
index c3e2a90..000
--- a/Documentation/scsi/in2000.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-UPDATE NEWS: version 1.33 - 26 Aug 98
-
-   Interrupt management in this driver has become, over
-   time, increasingly odd and difficult to explain - this
-   has been mostly due to my own mental inadequacies. In
-   recent kernels, it has failed to function at all when
-   compiled for SMP. I've fixed that problem, and after
-   taking a fresh look at interrupts in general, greatly
-   reduced the number of places where they're fiddled
-   with. Done some heavy testing and it looks very good.
-   The driver now makes use of the __initfunc() and
-   __initdata macros to save about 4k of kernel memory.
-   Once again, the same code works for both 2.0.xx and
-   2.1.xx kernels.
-
-UPDATE NEWS: version 1.32 - 28 Mar 98
-
-   Removed the check for legal IN2000 hardware versions:
-   It appears that the driver works fine with serial
-   EPROMs (the 8-pin chip that defines hardware rev) as
-   old as 2.1, so we'll assume that all cards are OK.
-
-UPDATE NEWS: version 1.31 - 6 Jul 97
-
-   Fixed a bug that caused incorrect SCSI status bytes to be
-   returned from commands sent to LUNs greater than 0. This
-   means that CDROM changers work now! Fixed a bug in the
-   handling of command-line arguments when loaded as a module.
-   Also put all the header data in in2000.h where it belongs.
-   There are no longer any differences between this driver in
-   the 2.1.xx source tree and the 2.0.xx tree, as of 2.0.31
-   and 2.1.45 (or is it .46?) - this makes things much easier
-   for me...
-
-UPDATE NEWS: version 1.30 - 14 Oct 96
-
-   Fixed a bug in the code that sets the transfer direction
-   bit (DESTID_DPD in the WD_DESTINATION_ID register). There
-   are quite a few SCSI commands that do a write-to-device;
-   now we deal with all of them correctly. Thanks to Joerg
-   Dorchain for catching this one.
-
-UPDATE NEWS: version 1.29 - 24 Sep 96
-
-   The memory-mapped hardware on the card is now accessed via
-   the 'readb()' and 'readl()' macros - required by the new
-   memory management scheme in the 2.1.x kernel series.
-   As suggested by Andries Brouwer, 'bios_param()' no longer
-   forces an artificial 1023 track limit on drives. Also
-   removed some kludge-code left over from struggles with
-   older (buggy) compilers.
-
-UPDATE NEWS: version 1.28 - 07 May 96
-
-   Tightened up the "interrupts enabled/disabled" discipline
-   in 'in2000_queuecommand()' and maybe 1 or 2 other places.
-   I _think_ it may have been a little too lax, causing an
-   occasional crash during full moon. A fully functional
-   /proc interface is now in place - if you want to play
-   with it, start by doing 'cat /proc/scsi/in2000/0'. You
-   can also use it to change a few run-time parameters on
-   the fly, but it's mostly for debugging. The curious
-   should take a good look at 'in2000_proc_info()' in the
-   in2000.c file to get an understanding of what it's all
-   about; I figure that people who are really into it will
-   want to add features suited to their own needs...
-   Also, sync is now DISABLED by default.
-
-UPDATE NEWS: version 1.27 - 10 Apr 96
-
-   Fixed a well-hidden bug in the adaptive-disconnect code
-   that would show up every now and then during extreme
-   heavy loads involving 2 or more simultaneously active
-   devices. Thanks to Joe Mack for keeping my nose to the
-   grindstone on this one.
-
-UPDATE NEWS: version 1.26 - 07 Mar 96
-
-   1.25 had a nasty bug that bit people with swap partitions
-   and tape drives. Also, in my attempt to guess my way
-   through Intel assembly language, I made an error in the
-   inline code for IO writes. 

[PATCH 1/1] ibmvfc: Fix I/O hang when port is not mapped

2016-09-19 Thread Brian King

If a VFC port gets unmapped in the VIOS, it may not respond with a CRQ init
complete following H_REG_CRQ. If this occurs, we can end up having called
scsi_block_requests and not a resulting unblock until the init complete
happens, which may never occur, and we end up hanging I/O requests.
This patch ensures the host action stay set to IBMVFC_HOST_ACTION_TGT_DEL so
we move all rports into devloss state and unblock unless we receive an
init complete. 

Signed-off-by: Brian King 
---

 drivers/scsi/ibmvscsi/ibmvfc.c |1 -
 1 file changed, 1 deletion(-)

diff -puN drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_unmap_hang_fix 
drivers/scsi/ibmvscsi/ibmvfc.c
--- linux-2.6.git/drivers/scsi/ibmvscsi/ibmvfc.c~ibmvfc_unmap_hang_fix  
2016-09-09 15:46:36.452011778 -0500
+++ linux-2.6.git-bjking1/drivers/scsi/ibmvscsi/ibmvfc.c2016-09-09 
15:47:07.026632886 -0500
@@ -717,7 +717,6 @@ static int ibmvfc_reset_crq(struct ibmvf
spin_lock_irqsave(vhost->host->host_lock, flags);
vhost->state = IBMVFC_NO_CRQ;
vhost->logged_in = 0;
-   ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_NONE);
 
/* Clean out the queue */
memset(crq->msgs, 0, PAGE_SIZE);
_

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] megaraid_sas: clean function declarations in megaraid_sas_base.c up

2016-09-19 Thread Sumit Saxena
>-Original Message-
>From: Baoyou Xie [mailto:baoyou@linaro.org]
>Sent: Sunday, September 18, 2016 5:38 PM
>To: kashyap.de...@avagotech.com; sumit.sax...@avagotech.com;
>uday.ling...@avagotech.com; j...@linux.vnet.ibm.com;
>martin.peter...@oracle.com
>Cc: megaraidlinux@avagotech.com; linux-scsi@vger.kernel.org; linux-
>ker...@vger.kernel.org; a...@arndb.de; baoyou@linaro.org;
>xie.bao...@zte.com.cn
>Subject: [PATCH] megaraid_sas: clean function declarations in
>megaraid_sas_base.c up
>
>We get a few warnings when building kernel with W=1:
>drivers/scsi/megaraid/megaraid_sas_fusion.c:281:1: warning: no previous
>prototype for 'megasas_free_cmds_fusion' [-Wmissing-prototypes]
>drivers/scsi/megaraid/megaraid_sas_fusion.c:714:1: warning: no previous
>prototype for 'megasas_ioc_init_fusion' [-Wmissing-prototypes] 
>
>In fact, these functions are declared in
>drivers/scsi/megaraid/megaraid_sas_base.c, but should be declared in a
header
>file, thus can be recognized in other file.
>
>So this patch adds the declarations into
>drivers/scsi/megaraid/megaraid_sas_fusion.h.
>
>Signed-off-by: Baoyou Xie 
>---
> drivers/scsi/megaraid/megaraid_sas_base.c   | 13 -
> drivers/scsi/megaraid/megaraid_sas_fusion.h |  9 +
> 2 files changed, 9 insertions(+), 13 deletions(-)
>
>diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c
>b/drivers/scsi/megaraid/megaraid_sas_base.c
>index 2d62d71..b73b6f3 100644
>--- a/drivers/scsi/megaraid/megaraid_sas_base.c
>+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
>@@ -189,25 +189,12 @@ u32
> megasas_build_and_issue_cmd(struct megasas_instance *instance,
>   struct scsi_cmnd *scmd);
> static void megasas_complete_cmd_dpc(unsigned long instance_addr); -void
-
>megasas_release_fusion(struct megasas_instance *instance); -int -
>megasas_ioc_init_fusion(struct megasas_instance *instance); -void -
>megasas_free_cmds_fusion(struct megasas_instance *instance);
>-u8
>-megasas_get_map_info(struct megasas_instance *instance); -int -
>megasas_sync_map_info(struct megasas_instance *instance);  int
>wait_and_poll(struct megasas_instance *instance, struct megasas_cmd *cmd,
>   int seconds);
>-void megasas_reset_reply_desc(struct megasas_instance *instance);  void
>megasas_fusion_ocr_wq(struct work_struct *work);  static int
>megasas_get_ld_vf_affiliation(struct megasas_instance *instance,
>int initial);
>-int megasas_check_mpio_paths(struct megasas_instance *instance,
>-   struct scsi_cmnd *scmd);
>
> int
> megasas_issue_dcmd(struct megasas_instance *instance, struct megasas_cmd
>*cmd) diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.h
>b/drivers/scsi/megaraid/megaraid_sas_fusion.h
>index 80eaee2..3fe730a 100644
>--- a/drivers/scsi/megaraid/megaraid_sas_fusion.h
>+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.h
>@@ -991,5 +991,14 @@ union desc_value {
>   } u;
> };
>
>+void megasas_free_cmds_fusion(struct megasas_instance *instance); int
>+megasas_ioc_init_fusion(struct megasas_instance *instance);
>+u8 megasas_get_map_info(struct megasas_instance *instance); int
>+megasas_sync_map_info(struct megasas_instance *instance); void
>+megasas_release_fusion(struct megasas_instance *instance); void
>+megasas_reset_reply_desc(struct megasas_instance *instance); int
>+megasas_check_mpio_paths(struct megasas_instance *instance,
>+struct scsi_cmnd *scmd);
>+void megasas_fusion_ocr_wq(struct work_struct *work);
>
> #endif /* _MEGARAID_SAS_FUSION_H_ */
Acked-by: Sumit Saxena 

>--
>2.7.4
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: TRIM/UNMAP/DISCARD via ATA Passthrough

2016-09-19 Thread Austin S. Hemmelgarn

On 2016-09-17 01:14, James Bottomley wrote:

On Fri, 2016-09-16 at 13:06 -0400, Austin S. Hemmelgarn wrote:

On 2016-09-16 12:21, James Bottomley wrote:

On Fri, 2016-09-16 at 11:53 -0400, Austin S. Hemmelgarn wrote:

On 2016-09-16 07:16, Hannes Reinecke wrote:

On 09/15/2016 10:52 PM, Jason A. Donenfeld wrote:

Hi Martin,

On Thu, Sep 15, 2016 at 6:07 PM, Martin K. Petersen

But how do they signal that ATA passthrough is possible? Is
there an ATA Information VPD page? Is REPORT SUPPORTED
OPERATION CODES supported?

We need really solid discovery data before we can entertain
enabling something like this.


`sg_opcodes` said invalid request, so I think there isn't REPORT
SUPPORTED OPERATION CODES, and `sg_vpd -p ai` came up illegal
too.

However, sg_sat_identify worked reliably, which means a solid way
of probing this would be to send IDENTIFY DEVICE ATA via
SG_ATA_16 or SG_ATA_12.

Let me know and I can give you access to the hardware if you're
curious.


Sadly, that's not sufficient.
linux is not the only provider of an SATL (mpt3sas being the most
prominent other one).
And while they might support ATA_12/ATA_16, there is no indication
that you can pass DSM TRIM that way.

So it's better to not support it at all than to support it on
hardware we can reliably identify?

I get that having feature parity is a good thing, but the discussion
isn't about providing support for all SATL devices, it's specifically
about UAS connected SATL devices.  Last I checked, mpt3sas doesn't do
anything with UAS, which means it's kind of irrelevant WRT supporting
this for UAS devices.


We're getting a bit off topic on mptsas and it's eccentric SATL.

The point is, you're asking for UAS devices which each have an internal
SATL which you say potentially doesn't support discard.  The three
problems we have are

   1. How do we identify if the UAS SATL doesn't support discard.  If it
  does, we really don't want to cause further SATL related issues by
  bypassing it, so we need a way of telling this.
   2. If the SATL doesn't support discard, will it reliably support the
  ATA_12 or ATA_16 pass through (and which one) .. we need a way of
  checking this because there are known SATLs that don't do pass
  through.
   3. How do we actually configure it?  Presumably if the SATL doesn't
  support discard, it also doesn't give us the useful mode page
  indications we use to configure TRIM, so we're going to have to do
  some pass through discovery as well.

I assume by 'discard' here you're referring to SCSI UNMAP, as
anything that supports ATA_12 or ATA_16 pass through correctly will
support ATA TRIM/DISCARD on drives that support it.


discard is the block layer terminology it's mapped per transport to
UNMAP or WRITE SAME on SCSI and TRIM on ATA.
I actually didn't know this.  I'm not quite as knowledgeable about the 
block layer as I probably should be, and definitely not as up-to-date as 
I could be on the ATA and SCSI specs.



  If that's the case, then:
1. If SCSI UNMAP fails, it doesn't support UNMAP.  This is of course
non-trivial to verify safely (we pretty much have to assume it is
supported if we have no clear indication it isn't, and then switch
based on what happens the first time we try to use it).


It's not quite that simple: to get us to configure discard in the first
place, you have to indicate support in READ CAPACITY (16): the LBPME
bit.  The chances are your UAS SATL isn't setting this.
OK, that makes sense.  Given that though, is it known how something like 
that may react if you tried to issue an UNMAP or WRITE SAME command when 
it's not supported?



2. Unless there are SATL's out there that write garbage to the device
or die when sent an ATA_12 or ATA_16 pass through command



Yes, there are; the problems with USB devices that fail to speak
standard versions of SCSI are legion.





encapsulating an ATA DEVICE IDENTIFY command, this isn't an issue.
 Even if such SATL's exist, they can easily be blacklisted.
3. This isn't hard, a SATL which actually supports ATA pass through
will almost always pass through the mode page unmodified.


You mean the ATA Information VPD page?  Yes, that's feasible because we
already queried the supported VPD pages, so we can tell if this one's
there.
I kind of got my terminology confused here, and didn't proof-read 
properly.  I'm not sure exactly what I was trying to refer to 
originally, but what I meant was that pretty much all UAS SATL's I've 
seen that support ATA pass through either have a proper ATA Information 
VPD page, or properly pass through ATA DEVICE IDENTIFY and related commands.



On the note of UAS SATL's, all of them that I've seen fall into one
of four categories:
1. Supports one or both of ATA_12 or ATA_16 pass through, and
supports passing through ATA TRIM/DISCARD, but not SCSI UNMAP.
2. Supports one of ATA_12 or ATA_16 pass through, and does not
support passing through ATA TRIM/DISCARD or translating SCSI UNMAP.
 All 

Re: [PATCH] scsi:Prevent deletion of SCSI block device in use

2016-09-19 Thread James Bottomley
On Mon, 2016-09-19 at 09:11 +, Gurunath, Vasundhara (STSD) wrote:
> James Bottomley  wrote: 
> 
> > > From: "Gurunath, Vasundhara" 
> > > 
> > > SCSI block device can be removed, using write to sysfs delete
> > > file as
> > > below:
> > > echo 1 > /sys/block/sdX/device/delete If the device is in use by 
> > > applications, or part of system configuration such as boot
> > > device, 
> > > removal can result in application disruptions or system down
> > > time.
> > > 
> > > An additional write option ? is added to SCSI sysfs interface as 
> > > below, in order to prevent accidental deletion of devices in use.
> > > echo ? > /sys/block/sdX/device/delete
> > > 
> > > In the absence of any usage, this option proceeds with device 
> > > deletion.  If the device is open, deletion is prevented, and
> > > active 
> > > Open and IO counts at the time of deletion is logged. Information
> > > logged during latest delete attempt can be obtained by issuing a
> > > read 
> > > to the delete file as below:
> > > cat  /sys/block/sdX/device/delete
> 
> > OK, so I'm not too keen on this because our entire system is
> > (finally) designed to be hot plug, so echoing 1 to delete simulates
> > a hotplug event, and they >can come in at any time.
> 
> > Can you elaborate on why this is necessary?  Right at the moment,
> > only 
> > root is allowed to write to this file and cause a deletion ... plus
> > the file is pretty >hard to find, buried as it is in sysfs;  So I
> > would have thought it was pretty safe from accidental misuse; why
> > does it need additional protection?
> 
> Some of the requests we got for such checks were from use cases on
> large system configurations with several LUNs.

People ask for a lot of strange stuff, but unpeel this one further and
tell us why they're asking ... what's the use case they're running into
that makes them need something like this?

> The new changes do not disturb existing interfaces. Writes to the
> "delete" sysfs file such as a "1", as advertised in some
> distributions like RedHat today, will continue to delete the LUN.
> However we thought an option to check usages during delete can
> complement existing interfaces. 
>  
> The new changes get activated only when one wants to receive alerts
> on any lingering usages, and writes a "?" to delete the LUN.
> A delete script can write "?" to sysfs delete files in bulk, while
> most LUNs get removed in the first attempt, the usages can be
> investigated if any LUNs remain with active usage counts. 
> 
> Hopefully overhead of these changes is minimal, it is few additional
> checks on usage counts and the log.
> New changes get active only in delete context and doesn't get into 
> I/O paths.

But that's effectively "because we can".  We can do a lot of stuff that
adds what you call minimal overhead (although the cumulative addition
would be significant), so the rule is we do stuff which is necessary or
useful, which is why the question about use cases.

James


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH v6 0/9] Replay Protected Memory Block (RPMB) subsystem

2016-09-19 Thread Winkler, Tomas
\
> Subject: [PATCH v6 0/9] Replay Protected Memory Block (RPMB) subsystem
> 
> 
> Few storage technologies such is EMMC, UFS, and NVMe support RPMB
> hardware partition with common protocol and frame layout.
> The RPMB partition cannot be accessed via standard block layer, but by a set
> of specific commands: WRITE, READ, GET_WRITE_COUNTER, and
> PROGRAM_KEY.
> Such a partition provides authenticated and replay protected access, hence
> suitable as a secure storage.
> 
> The RPMB layer aims to provide in-kernel API for Trusted Execution
> Environment (TEE) devices that are capable to securely compute block frame
> signature. In case a TEE device wish to store a replay protected data, it
> creates an RPMB frame with requested data and computes HMAC of the
> frame, then it requests the storage device via RPMB layer to store the data.
> 
> The layer provides two APIs, for rpmb_req_cmd() for issuing one of RPMB
> specific commands and rpmb_seq_cmd() for issuing of raw RPMB protocol
> frames,  which is close to the functionality provided by emmc multi ioctl
> interface.
> 
> A TEE driver can claim the RPMB interface, for example, via
> class_interface_register ().
> 
> A storage device registers its RPMB hardware (eMMC) partition or RPMB W-
> LUN (UFS) with the RPMB layer providing an implementation for
> rpmb_seq_cmd() handler. The interface enables sending sequence of RPMB
> standard frames.
> 
> A parallel user space API is provided via /dev/rpmbX character device with
> two IOCTL commands.
> Simplified one, RPMB_IOC_REQ_CMD, were read result cycles is performed
> by the framework on behalf the user and second, RPMB_IOC_SEQ_CMD
> where the whole RPMB sequence, including RESULT_READ is supplied by the
> caller.
> The latter is intended for easier adjusting of the applications that use
> MMC_IOC_MULTI_CMD ioctl, such as
> https://android.googlesource.com/trusty/app/storage/
> 
> There is a also sample tool under tools/rpmb/ directory that exercises these
> interfaces and a simulation device that implements the device part.
> 
> The code is also available from:
> 
> https://github.com/tomasbw/linux-mei.git rpmb
> 

Greg, can you please check if this series has addressed all your comments. 
Are there are any more items that preventing it from merging?

Thanks
Tomas

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] scsi:Prevent deletion of SCSI block device in use

2016-09-19 Thread Gurunath, Vasundhara (STSD)

James Bottomley  wrote: 

>> From: "Gurunath, Vasundhara" 
>>
>> SCSI block device can be removed, using write to sysfs delete file as
>> below:
>> echo 1 > /sys/block/sdX/device/delete If the device is in use by 
>> applications, or part of system configuration such as boot device, 
>> removal can result in application disruptions or system down time.
> >
>> An additional write option ? is added to SCSI sysfs interface as 
>> below, in order to prevent accidental deletion of devices in use.
>> echo ? > /sys/block/sdX/device/delete
>>
>> In the absence of any usage, this option proceeds with device 
>> deletion.  If the device is open, deletion is prevented, and active 
>> Open and IO counts at the time of deletion is logged. Information 
>> logged during latest delete attempt can be obtained by issuing a read 
>> to the delete file as below:
>> cat  /sys/block/sdX/device/delete

>OK, so I'm not too keen on this because our entire system is (finally) 
>designed to be hot plug, so echoing 1 to delete simulates a hotplug event, and 
>they >can come in at any time.

>Can you elaborate on why this is necessary?  Right at the moment, only 
>root is allowed to write to this file and cause a deletion ... plus the file 
>is pretty >hard to find, buried as it is in sysfs;  So I would have thought it 
>was pretty safe from accidental misuse; why does it need additional protection?

Some of the requests we got for such checks were from use cases on large system 
configurations with several LUNs.
The new changes do not disturb existing interfaces. Writes to the "delete" 
sysfs file such as a "1", as advertised in some distributions like RedHat 
today, will continue to delete the LUN. However we thought an option to check 
usages during delete can complement existing interfaces. 
 
The new changes get activated only when one wants to receive alerts on any 
lingering usages, and writes a "?" to delete the LUN.
A delete script can write "?" to sysfs delete files in bulk, while most LUNs 
get removed in the first attempt, the usages can be investigated if any LUNs 
remain with active usage counts. 

Hopefully overhead of these changes is minimal, it is few additional checks on 
usage counts and the log.
New changes get active only in delete context and doesn't get into I/O paths.

-Vasundhara




[Bug 171181] New: +++++++[1-877^778^8714]]]]]]QUICKBOOKS support PHONE NUMBER QuickBooks phone number usa

2016-09-19 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=171181

Bug ID: 171181
   Summary: +++[1-877^778^8714]]QUICKBOOKS support PHONE
NUMBER QuickBooks phone number usa
   Product: SCSI Drivers
   Version: 2.5
Kernel Version: +++[1-877^778^8714]]QUICKBOOKS support PHONE
NUMBER QuickBooks phone number usa
  Hardware: All
OS: Linux
  Tree: Mainline
Status: NEW
  Severity: normal
  Priority: P1
 Component: ADVANSYS
  Assignee: scsi_drivers-advan...@kernel-bugs.osdl.org
  Reporter: rr309...@gmail.com
Regression: No

♥l!vE~~SuPpoRT@@ 1 877 778 8714!! Quickbooks support PhoNE number
!!1(877)778 8714 !!Quickbooks SuPpoRT PhoNE number

Quickbooks SuPpoRT 1-877-778-8714 Quickbooks SuPpoRT PhoNE number
USA@JEETôßPppu? 1 877 778 8714 Quickbooks SuPpoRT PhoNENumber..,O»G??ô US
1-877-778-8714 quickbooks help TELEPhoNE Number..,, ??ôquickbooks help
Number..,, ??ôquickbooks SuPpoRT Number..,, quickbooks Number..,,
quickbooks PhoNE Number..,, quickbooks TELEPhoNENumber.. 1-877-778-8714 ,,
quickbooks 24 hour Number..,, quickbooks customer SuPpoRT Number..,, QuickBooks
tech SuPpoRT PhoNEnumber, Intuit QuickBooks Tech SuPpoRT PhoNE Number,
QuickBooks Help Desk PhoNE Number, QuickBooks tech SuPpoRT number, QuickBooks
SuPpoRT PhoNE number, QuickBooks1-877-778-8714 PhoNE number, QuickBooks
1-877-778-8714 SuPpoRT number, QuickBooks SuPpoRT PhoNE number. It is very
popular toll free number which vide by QuickBooks SuPpoRT, QuickBooks Customer
PhoNE Number, QuickBooks Customer Number, 1-877-778-8714 QuickBooks Customer
SuPpoRT PhoNE Number, QuickBooks Customer SuPpoRT Number, 
QuickBooks Customer Number, QuickBooks Customer Number, QuickBooks SuPpoRT team
PhoNE number. Call, QuickBooks tech SuPpoRT PhoNE number, Intuit QuickBooks
Tech SuPpoRT 1-877-778-8714 PhoNE Number, QuickBooks Help Desk PhoNE Number,
QuickBooks tech SuPpoRT number, QuickBooks SuPpoRT PhoNE number, QuickBooks
PhoNE number, QuickBooks SuPpoRT number, QuickBooks SuPpoRT PhoNE number,
QuickBooks SuPpoRT, QuickBooks Customer PhoNE Number, QuickBooks Customer
Number, QuickBooks Customer SuPpoRT PhoNE Number, QuickBooks Customer SuPpoRT
Number, QuickBooks Customer Number, QuickBooks Customer Number, QuickBooks
SuPpoRT team PhoNE number, QuickBooks help number-QuickBooks Number; QuickBooks
help PhoNE number, QuickBooks Number, QuickBooks Tech SuPpoRT Toll free Number,
QuickBooks SuPpoRT TELEPhoNE Number, QuickBooks Tech SuPpoRT TELEPhoNE number,
QuickBooks Tech SuPpoRT number, QuickBooks SuPpoRT number, QuickBooks SuPpoRT
number, quickbooks 24/7 SuPpoRT PhoNE number,quickbooks TELEPhoNE number
Quickbooks Customer Service Helpline?for SuPpoRT? call 1877 -778-8714/
Number, Quickbooks Customer Care Number, Quickbooks SuPpoRT team PhoNE number
Quickbooks PhoNE, number, Quickbooks technical SuPpoRT number, Quickbooks
SuPpoRT PhoNE number, Quickbooks technical SuPpoRT, Quickbooks Customer Service
PhoNE Number, Quickbooks Customer Service Number, Quickbooks Customer SuPpoRT
PhoNE Number, Quickbooks Customer SuPpoRT NumberCall, 1-877 -778-8714 for all
type help by Quickbooks tech SuPpoRT PhoNE???, number, Intuit Quickbooks Tech
SuPpoRT PhoNE Number, Quickbooks Help Desk PhoNE Number, Quickbooks tech
SuPpoRT number, Quickbooks technical SuPpoRT PhoNE number Quickbooks Tech
SuPpoRT PhoNE??,Number QuickBooks help?(1-877 -778-8714)?vides online solution
for all USA/CANADA clients For any help of query call 1 877 -778-8714 to get
all Quickbooks account solution number-QuickBooks Helpline Number; QuickBooks
help PhoNE number-QuickBooks HelplineNumber, QuickBooks HELP DESK Toll free
Number, QuickBooks SuPpoRT TELEPhoNE Number, QuickBooks HELP DESK TELEPhoNE
number, QuickBooks HELP DESK contact number, QuickBooks SuPpoRT contact number,
QuickBooks technical SuPpoRT contact number Helpline TECH ))1-877 -778-8714((
Quickbooks technical SuPpoRT PhoNE number 1-877 -778-8714 Quickbooks PhoNE
number 1877 -778-8714 QB SuPpoRT ON ((1-877 -778-8714)) Quickbooks PhoNE NUMBER
AND Quickbooks SuPpoRT PhoNE NUMBER QuickBooks Customer Service
Helpline?Quickbooks Toll Free, Intuit Number, QuickBooks Customer Care
Number, QuickBooks SuPpoRT team PhoNE number QuickBooks PhoNE, number,
QuickBooks technical SuPpoRT number, QuickBooks SuPpoRT PhoNE number,
QuickBooks technical SuPpoRT, QuickBooks Customer Service PhoNE Number,
QuickBooks Customer Service Number, QuickBooks Customer SuPpoRT PhoNE Number,
QuickBooks Customer SuPpoRT NumberCall, 1-877 -778-8714 for all type help by
QuickBooks HELP DESK PhoNE???, number, Intuit QuickBooks HELP DESK PhoNE
Number, QuickBooks Help Desk PhoNE Number, QuickBooks HELP DESK number,
QuickBooks technical SuPpoRT PhoNEnumber QuickBooks HELP DESK PhoNE??, Number
(1-877 -778-8714)?vides online solution for all USA/CANADA clients For any help
of 

[Bug 171141] New: 18009190992+++****Quickbooks Enterprise Customer Support Number##

2016-09-19 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=171141

Bug ID: 171141
   Summary: 18009190992+++Quickbooks Enterprise Customer
Support Number##
   Product: SCSI Drivers
   Version: 2.5
Kernel Version: 18009190992+++Quickbooks Enterprise Customer
Support Number##
  Hardware: All
OS: Linux
  Tree: Mainline
Status: NEW
  Severity: normal
  Priority: P1
 Component: AHA152X
  Assignee: scsi_drivers-aha1...@kernel-bugs.osdl.org
  Reporter: nissh...@mail.com
Regression: No

Created attachment 238921
  --> https://bugzilla.kernel.org/attachment.cgi?id=238921=edit
Quickbooks Support 1-800-919-0992 Quickbooks Support phone number
USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US
1-800-919-0992 quickbooks Payroll help telePHONE Number..,

Quickbooks Support 1-800-919-0992 Quickbooks Support phone number
USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US
1-800-919-0992 quickbooks Payroll help telePHONE Number..,, ++??ôquickbooks
Payroll help Payroll Number..,, ++??ôquickbooks Payroll support Payroll
Number..,, quickbooks Payroll Number..,, quickbooks Payroll PHONE Number..,,
quickbooks Payroll telePHONENumber.. 1-800-919-0992 ,, quickbooks 24 hour
Payroll Number..,, quickbooks customer support Payroll Number..,, QuickBooks
tech support phonenumber, Intuit QuickBooks Tech Support Phone Number,
QuickBooks Help Desk Phone Number, QuickBooks tech support number, QuickBooks
Payroll support phone number, QuickBooks1-800-919-0992 phone number, QuickBooks
Payroll 1-800-919-0992 support number, QuickBooks support phone number. It is
very popular toll free number which provide by QuickBooks Payroll support,
QuickBooks Customer Payroll Phone Number, QuickBooks Customer Payroll Number,
1-800-919-0992 QuickBooks Customer Support Phone Number, QuickBooks Customer
Support Number, QuickBooks Customer Payroll Payroll Number, QuickBooks Customer
Payroll Number, QuickBooks support team phone number. Call, QuickBooks tech
support phone number, Intuit QuickBooks Tech Support 1-800-919-0992 Phone
Number, QuickBooks Help Desk Phone Number, QuickBooks tech support number,
QuickBooks Payroll support phone number, QuickBooks phone number, QuickBooks
Payroll support number, QuickBooks support phone number, QuickBooks Payroll
support, QuickBooks Customer Payroll Phone Number, QuickBooks Customer Payroll
Number, QuickBooks Customer Support Phone Number, QuickBooks Customer Support
Number, QuickBooks Customer Payroll Payroll Number, QuickBooks Customer Payroll
Number, QuickBooks support team phone number, QuickBooks help number-QuickBooks
Payroll Number; QuickBooks help phone number, QuickBooks Payroll Number,
QuickBooks Tech Support Toll free Number, QuickBooks Support Telephone Number,
QuickBooks Tech Support Telephone number, QuickBooks Tech Support Payroll
number, QuickBooks support Payroll number, QuickBooks Payroll support Payroll
number, quickbooks 24/7 support phone number,quickbooks telephone number
Quickbooks Enterprise Customer Service Helpline?for support? call 1800
-919-0992/ Number, Quickbooks Enterprise Customer Care Number, Quickbooks
Enterprise support team phone number Quickbooks Enterprise phone, number,
Quickbooks Enterprise technical support number, Quickbooks Enterprise support
phone number, Quickbooks Enterprise technical support, Quickbooks Enterprise
Customer Service Phone Number, Quickbooks Enterprise Customer Service Number,
Quickbooks Enterprise Customer Support Phone Number, Quickbooks Enterprise
Customer Support NumberCall, 1-800 -919-0992 for all type help by Quickbooks
Enterprise tech support phone???, number, Intuit Quickbooks Enterprise Tech
Support Phone Number, Quickbooks Enterprise Help Desk Phone Number, Quickbooks
Enterprise tech support number, Quickbooks Enterprise technical support phone
number Quickbooks Enterprise Tech Support Phone??,Number QuickBooks help?(1-800
-919-0992)?POSvides @ solution for all USA/CANADA clients For any help of query
call 1 800 -919-0992 to get all Quickbooks Enterprise account solution
number-QuickBooks Helpline Number; QuickBooks help phone number-QuickBooks
HelplineNumber, QuickBooks HELP DESK Toll free Number, QuickBooks Support
Telephone Number, QuickBooks HELP DESK Telephone number, QuickBooks HELP DESK
contact number, QuickBooks support contact number, QuickBooks technical support
contact number Helpline TECH ))1-800 -919-0992(( Quickbooks Enterprise
technical support phone number 1-800 -919-0992 Quickbooks Enterprise POS phone
number 1800 -919-0992 QB SUPPORT ON ((1-800 -919-0992)) Quickbooks Enterprise
PHONE NUMBER AND Quickbooks Enterprise SUPPORT PHONE NUMBER QuickBooks Customer
Service Helpline?Quickbooks Enterprise Toll Free, Intuit Number, QuickBooks
Customer Care Number, QuickBooks support team phone number QuickBooks

[Bug 171001] New: Quickbooks Support 1-800-919-0992 Quickbooks Support phone number USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US 1-800-919-0992 quickbooks Payroll help t

2016-09-19 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=171001

Bug ID: 171001
   Summary: Quickbooks Support 1-800-919-0992 Quickbooks Support
phone number USA@JEETôßPppu? 1 800 919 0992 Quickbooks
Support PHONENumber..,O»G++??ô US 1-800-919-0992
quickbooks Payroll help telePHONE Number..,,
++??ôquickbooks Payroll help Payroll Number..,, ++??ô
   Product: SCSI Drivers
   Version: 2.5
Kernel Version: [1-800^919^0992]]QUICKBOOKS Enterprise support
PHONE NUMBER QuickBooks phone number usa
  Hardware: All
OS: Linux
  Tree: Mainline
Status: NEW
  Severity: normal
  Priority: P1
 Component: BUSLOGIC
  Assignee: scsi_drivers-buslo...@kernel-bugs.osdl.org
  Reporter: nissh...@mail.com
Regression: No

Created attachment 238851
  --> https://bugzilla.kernel.org/attachment.cgi?id=238851=edit
Quickbooks Support 1-800-919-0992 Quickbooks Support phone number
USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US
1-800-919-0992 quickbooks Payroll help telePHONE Number..,

Quickbooks Support 1-800-919-0992 Quickbooks Support phone number
USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US
1-800-919-0992 quickbooks Payroll help telePHONE Number..,, ++??ôquickbooks
Payroll help Payroll Number..,, ++??ôquickbooks Payroll support Payroll
Number..,, quickbooks Payroll Number..,, quickbooks Payroll PHONE Number..,,
quickbooks Payroll telePHONENumber.. 1-800-919-0992 ,, quickbooks 24 hour
Payroll Number..,, quickbooks customer support Payroll Number..,, QuickBooks
tech support phonenumber, Intuit QuickBooks Tech Support Phone Number,
QuickBooks Help Desk Phone Number, QuickBooks tech support number, QuickBooks
Payroll support phone number, QuickBooks1-800-919-0992 phone number, QuickBooks
Payroll 1-800-919-0992 support number, QuickBooks support phone number. It is
very popular toll free number which provide by QuickBooks Payroll support,
QuickBooks Customer Payroll Phone Number, QuickBooks Customer Payroll Number,
1-800-919-0992 QuickBooks Customer Support Phone Number, QuickBooks Customer
Support Number, QuickBooks Customer Payroll Payroll Number, QuickBooks Customer
Payroll Number, QuickBooks support team phone number. Call, QuickBooks tech
support phone number, Intuit QuickBooks Tech Support 1-800-919-0992 Phone
Number, QuickBooks Help Desk Phone Number, QuickBooks tech support number,
QuickBooks Payroll support phone number, QuickBooks phone number, QuickBooks
Payroll support number, QuickBooks support phone number, QuickBooks Payroll
support, QuickBooks Customer Payroll Phone Number, QuickBooks Customer Payroll
Number, QuickBooks Customer Support Phone Number, QuickBooks Customer Support
Number, QuickBooks Customer Payroll Payroll Number, QuickBooks Customer Payroll
Number, QuickBooks support team phone number, QuickBooks help number-QuickBooks
Payroll Number; QuickBooks help phone number, QuickBooks Payroll Number,
QuickBooks Tech Support Toll free Number, QuickBooks Support Telephone Number,
QuickBooks Tech Support Telephone number, QuickBooks Tech Support Payroll
number, QuickBooks support Payroll number, QuickBooks Payroll support Payroll
number, quickbooks 24/7 support phone number,quickbooks telephone number
Quickbooks Enterprise Customer Service Helpline?for support? call 1800
-919-0992/ Number, Quickbooks Enterprise Customer Care Number, Quickbooks
Enterprise support team phone number Quickbooks Enterprise phone, number,
Quickbooks Enterprise technical support number, Quickbooks Enterprise support
phone number, Quickbooks Enterprise technical support, Quickbooks Enterprise
Customer Service Phone Number, Quickbooks Enterprise Customer Service Number,
Quickbooks Enterprise Customer Support Phone Number, Quickbooks Enterprise
Customer Support NumberCall, 1-800 -919-0992 for all type help by Quickbooks
Enterprise tech support phone???, number, Intuit Quickbooks Enterprise Tech
Support Phone Number, Quickbooks Enterprise Help Desk Phone Number, Quickbooks
Enterprise tech support number, Quickbooks Enterprise technical support phone
number Quickbooks Enterprise Tech Support Phone??,Number QuickBooks help?(1-800
-919-0992)?POSvides @ solution for all USA/CANADA clients For any help of query
call 1 800 -919-0992 to get all Quickbooks Enterprise account solution
number-QuickBooks Helpline Number; QuickBooks help phone number-QuickBooks
HelplineNumber, QuickBooks HELP DESK Toll free Number, QuickBooks Support
Telephone Number, QuickBooks HELP DESK Telephone number, QuickBooks HELP DESK
contact number, QuickBooks support contact number, QuickBooks technical support
contact number Helpline TECH ))1-800 -919-0992(( Quickbooks Enterprise
technical support phone number 1-800 -919-0992 Quickbooks Enterprise POS phone
number 1800 -919-0992 QB SUPPORT ON 

[Bug 170851] New: 1800^^^919=+=+=+0992++@@QB(((QB)))Quickbooks (SUPPORt) phone number ==support phone number

2016-09-19 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=170851

Bug ID: 170851
   Summary: 1800^^^919=+=+=+0992++@@QB(((QB)))Quickbooks (SUPPORt)
phone number ==support phone number
   Product: SCSI Drivers
   Version: 2.5
Kernel Version: +++1800^^^919=+=+=+0992++@@QB(((QB)))Quickbooks
(SUPPORt) phone number ==support phone number
  Hardware: All
OS: Linux
  Tree: Mainline
Status: NEW
  Severity: normal
  Priority: P1
 Component: ADVANSYS
  Assignee: scsi_drivers-advan...@kernel-bugs.osdl.org
  Reporter: 5yrtgrrrtg...@mail.com
Regression: No

Created attachment 238801
  --> https://bugzilla.kernel.org/attachment.cgi?id=238801=edit
Quickbooks Phone Number 1 800 919 0992 Quickbooks support phone Number
Quickbooks tech support phone Number 1.800..919..0992 Quickbooks number 
Quickbooks Phone Number 1 800 919 0992 Quickbooks suppor

Quickbooks Phone Number 1 800 919 0992 Quickbooks support phone Number
Quickbooks tech support phone Number 1.800..919..0992 Quickbooks number

Quickbooks Phone Number 1 800 919 0992 Quickbooks support phone Number
Quickbooks tech support phone Number 1.800..919..0992 Quickbooks number

Quickbooks Phone Number 1 800 919 0992 Quickbooks support phone Number
Quickbooks tech support phone Number 1.800..919..0992 Quickbooks number

Quickbooks Phone Number 1 800 919 0992 Quickbooks support phone Number
Quickbooks tech support phone Number 1.800..919..0992 Quickbooks number

Quickbooks Phone Number 1 800 919 0992 Quickbooks support phone Number
Quickbooks tech support phone Number 1.800..919..0992 Quickbooks number

1-800-919-0992Quickbooks tech Support phone number @ LOVE DOSE Quickbooks
Phone Number1-800-919-0992Quickbooks customer Support phone number
@@Call, 1-800-919-0992 for all type help by Quickbooks tech support phone
number, 1800-919-0992 Intuit Quickbooks Tech Support Phone Number,
1800-919-0992 Quickbooks Help Desk Phone Number, 1800-919-0992 Quickbooks tech
support number, Quickbooks technical support phone number,@@ 1800-919-0992 @
Quickbooks phone number, 1800-919-0992 Quickbooks technical support number,
1800-919-0992 Quickbooks support phone number, 1800-919-0992 Quickbooks
technical support, Quickbooks Customer Service Phone Number, Quickbooks
Customer Service Number, Quickbooks Customer Support Phone Number, Quickbooks
Customer Support Number, Quickbooks Customer Service Helpline Number,
Quickbooks Customer Care Number, Quickbooks support team phone number, @
Quickbooks help number-Quickbooks Helpline Number; Quickbooks help phone
number-Quickbooks Helpline Number, Quickbooks Tech Support Toll free Number,
Quickbooks Support Telephone Number, Quickbooks Tech Support Telephone number,
Quickbooks Tech Support contact number, Quickbooks support contact number,
Quickbooks technical support contact number Call, Quickbooks tech support phone
number, Intuit Quickbooks Tech Support Phone Number, Quickbooks Help Desk Phone
Number, Quickbooks tech support number, Quickbooks technical support phone
number, Quickbooks phone number, Quickbooks technical support number,
Quickbooks support phone number It is very popular toll free number which vide
by Quickbooks technical support, Quickbooks Customer Service Phone Number,
Quickbooks Customer Service Number, Quickbooks Customer Support Phone Number,
Quickbooks Customer Support Number, Quickbooks Customer Service Helpline
Number, Quickbooks Customer Care Number, Quickbooks support team phone number
Call, Quickbooks tech support phone number, Intuit Quickbooks Tech Support
Phone Number, Quickbooks Help Desk Phone Number, Quickbooks tech support
number, Quickbooks technical support phone num
 Quickbooks tech Support Number 1-800-919-0992 Quickbooks technical Support

Phone Number 1-800-919-0992 Quickbooks technical Support Number 1-800-919-0992

 Quickbooks support phone number 1-800-919-0992 Quickbooks support number

1-800-919-0992 Quickbooks support number 1-800-919-0992 Quickbooks help desk
phone

number 1-800-919-0992 Quickbooks help desk number 1-800-919-0992 Quickbooks
Error Support

Number 1-800-919-0992 Quickbooks Error Support phone Number 1-800-919-0992
Quickbooks

Contact Number 1-800-919-0992 Quickbooks Error Support 1-800-919-0992
Quickbooks Support

Contact Number 1-800-919-0992 Technical Support for Quickbooks Printer
1-800-919-0992

 Quickbooks Support Phone Number 1-800-919-0992 Quickbooks Support Phone Number
1-800-

919-0992 Quickbooks Support Phone Number 1-800-919-0992 Quickbooks Support
Phone

Number 1-800-919-0992 Quickbooks tech Support Phone Number USA 1-800-919-0992

 Quickbooks tech Support Number USA 1-800-919-0992 Quickbooks technical Support
Phone

Number USA 1-800-919-0992 Quickbooks technical Support Number USA
1-800-919-0992

 Quickbooks tech Support Phone Number USA 1-800-919-0992 Quickbooks tech
Support

Number USA 

[Bug 170791] New: Quickbooks Support 1-800-919-0992 Quickbooks Support phone number USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US 1-800-919-0992 quickbooks Payroll help t

2016-09-19 Thread bugzilla-daemon
https://bugzilla.kernel.org/show_bug.cgi?id=170791

Bug ID: 170791
   Summary: Quickbooks Support 1-800-919-0992 Quickbooks Support
phone number USA@JEETôßPppu? 1 800 919 0992 Quickbooks
Support PHONENumber..,O»G++??ô US 1-800-919-0992
quickbooks Payroll help telePHONE Number..,,
++??ôquickbooks Payroll help Payroll Number..,, ++??ô
   Product: SCSI Drivers
   Version: 2.5
Kernel Version: In order to succeed, we must first believe that we
can!!---|||+++18009190992+++Quickbooks Enterprise
technical support number>>>
  Hardware: All
OS: Linux
  Tree: Mainline
Status: NEW
  Severity: normal
  Priority: P1
 Component: BUSLOGIC
  Assignee: scsi_drivers-buslo...@kernel-bugs.osdl.org
  Reporter: nissh...@mail.com
Regression: No

Created attachment 238761
  --> https://bugzilla.kernel.org/attachment.cgi?id=238761=edit
Quickbooks Support 1-800-919-0992 Quickbooks Support phone number
USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US
1-800-919-0992 quickbooks Payroll help telePHONE Number..,

Quickbooks Support 1-800-919-0992 Quickbooks Support phone number
USA@JEETôßPppu? 1 800 919 0992 Quickbooks Support PHONENumber..,O»G++??ô US
1-800-919-0992 quickbooks Payroll help telePHONE Number..,, ++??ôquickbooks
Payroll help Payroll Number..,, ++??ôquickbooks Payroll support Payroll
Number..,, quickbooks Payroll Number..,, quickbooks Payroll PHONE Number..,,
quickbooks Payroll telePHONENumber.. 1-800-919-0992 ,, quickbooks 24 hour
Payroll Number..,, quickbooks customer support Payroll Number..,, QuickBooks
tech support phonenumber, Intuit QuickBooks Tech Support Phone Number,
QuickBooks Help Desk Phone Number, QuickBooks tech support number, QuickBooks
Payroll support phone number, QuickBooks1-800-919-0992 phone number, QuickBooks
Payroll 1-800-919-0992 support number, QuickBooks support phone number. It is
very popular toll free number which provide by QuickBooks Payroll support,
QuickBooks Customer Payroll Phone Number, QuickBooks Customer Payroll Number,
1-800-919-0992 QuickBooks Customer Support Phone Number, QuickBooks Customer
Support Number, QuickBooks Customer Payroll Payroll Number, QuickBooks Customer
Payroll Number, QuickBooks support team phone number. Call, QuickBooks tech
support phone number, Intuit QuickBooks Tech Support 1-800-919-0992 Phone
Number, QuickBooks Help Desk Phone Number, QuickBooks tech support number,
QuickBooks Payroll support phone number, QuickBooks phone number, QuickBooks
Payroll support number, QuickBooks support phone number, QuickBooks Payroll
support, QuickBooks Customer Payroll Phone Number, QuickBooks Customer Payroll
Number, QuickBooks Customer Support Phone Number, QuickBooks Customer Support
Number, QuickBooks Customer Payroll Payroll Number, QuickBooks Customer Payroll
Number, QuickBooks support team phone number, QuickBooks help number-QuickBooks
Payroll Number; QuickBooks help phone number, QuickBooks Payroll Number,
QuickBooks Tech Support Toll free Number, QuickBooks Support Telephone Number,
QuickBooks Tech Support Telephone number, QuickBooks Tech Support Payroll
number, QuickBooks support Payroll number, QuickBooks Payroll support Payroll
number, quickbooks 24/7 support phone number,quickbooks telephone number
Quickbooks Enterprise Customer Service Helpline?for support? call 1800
-919-0992/ Number, Quickbooks Enterprise Customer Care Number, Quickbooks
Enterprise support team phone number Quickbooks Enterprise phone, number,
Quickbooks Enterprise technical support number, Quickbooks Enterprise support
phone number, Quickbooks Enterprise technical support, Quickbooks Enterprise
Customer Service Phone Number, Quickbooks Enterprise Customer Service Number,
Quickbooks Enterprise Customer Support Phone Number, Quickbooks Enterprise
Customer Support NumberCall, 1-800 -919-0992 for all type help by Quickbooks
Enterprise tech support phone???, number, Intuit Quickbooks Enterprise Tech
Support Phone Number, Quickbooks Enterprise Help Desk Phone Number, Quickbooks
Enterprise tech support number, Quickbooks Enterprise technical support phone
number Quickbooks Enterprise Tech Support Phone??,Number QuickBooks help?(1-800
-919-0992)?POSvides @ solution for all USA/CANADA clients For any help of query
call 1 800 -919-0992 to get all Quickbooks Enterprise account solution
number-QuickBooks Helpline Number; QuickBooks help phone number-QuickBooks
HelplineNumber, QuickBooks HELP DESK Toll free Number, QuickBooks Support
Telephone Number, QuickBooks HELP DESK Telephone number, QuickBooks HELP DESK
contact number, QuickBooks support contact number, QuickBooks technical support
contact number Helpline TECH ))1-800 -919-0992(( Quickbooks Enterprise
technical support phone number 1-800 -919-0992