All of lore.kernel.org
 help / color / mirror / Atom feed
From: Douglas Gilbert <dgilbert@interlog.com>
To: linux-scsi@vger.kernel.org
Cc: martin.petersen@oracle.com, jejb@linux.vnet.ibm.com,
	hare@suse.de, Damien.LeMoal@wdc.com
Subject: Re: [PATCH v3 00/15] scsi_debug: host managed ZBC + doublestore
Date: Thu, 20 Feb 2020 15:11:45 -0500	[thread overview]
Message-ID: <c65d815d-7523-b40d-3459-a4b54010809d@interlog.com> (raw)
In-Reply-To: <20200220200838.15809-1-dgilbert@interlog.com>

Missed putting the driver name in the subject ...

On 2020-02-20 3:08 p.m., Douglas Gilbert wrote:
> This patchset is a follow-on from an earlier patchset titled:
>      [RFC v2 0/6] scsi_debug: random doublestore verify
> posted on the linux-scsi list on 20200109.
> 
> The major addition is support for host-managed ZBC devices.
> The bulk of the work in this area was done by Damien Le Moal.
> It allows ZBC devices with a mix of conventional and
> "sequential write required" zones to be specified. These
> follow the same model as direct access devices in this
> driver. Namely, each device has its own metadata (including
> its write pointer(s)) but all (scsi_debug) devices share the
> same user data store (see doublestore below).
> 
> Significantly, this simulation passes the test/zbc_tests.sh
> script in the https://github.com/hgst/libzbc repository.
> 
> The lower numbered patches in this set contain various
> measures to improve the speed and usefulness of this driver.
> It is being used to test the rewrite of the SCSI generic (sg)
> driver which is still underway. Disk to disk copies are the
> test of choice by the author [DG]. Comparing the results
> between (simulated) disks is useless since all scsi_debug
> devices share the same user data store. This limitation was
> circumvented by adding the doublestore parameter. When set,
> doublestore doubles the data store and allocates them in an
> alternating pattern to each scsi_debug device. To enhance
> the comparisons, simulations of VERIFY(10 and 16) commands
> have been added. A further enhancement is to simulate the
> PRE-FETCH command (which does nothing as the data is
> already cached).
> 
> doublestore can also help with ZBC testing. Single threaded
> copy commands like dd (and ddpt) can be used to copy one
> non-empty zone into another empty zone. Multiple-threaded
> copies (e.g. sgp_dd) can do out-of-order WRITEs which
> become a WRITE VIOLATION error in a "sequential write
> required" zone.
> 
> The author [DG] found that precise command duration timing
> gave a false impression of how "bulletproof" the sg driver
> state machines and locking were. The first patch involves
> randomizing the command durations and it did expose various
> issues in the driver under test (sg).
> 
> Since all scsi_debug memory store accesses are done in the
> context of queuecommand() call, the *_irqsave() and
> *_irqrestore() variants of the associated locks have been
> removed.  That could be a problem if queuecommand() can ever
> be called form an interrupt or related context.
> 
> Finally to address the discrepancy between command duration
> times seen by the sg driver compared to what was set with
> this driver's ndelay option, this driver's timekeeping for
> short durations was made more accurate.
> 
> If and when this patchset is accepted, this page will be
> updated:   http://sg.danny.cz/sg/sdebug26.html
> This patchset is against Martin Petersen's git repository
> and its 5.7/scsi-queue branch.
> 
> Changes since v2 (RFC):
>    - add support for host-managed zbc devices with
>      conventional and "sequential write required"
>      zones [DLM]
> 
> Changes since v1 (RFC):
>    - testing with version 1 caused several strange crashes that
>      turned out to be caused by a code trick to read in the
>      data-out buffer but _not_ place it in the big fake_storep
>      array. This approach failed badly when multiple threads
>      were doing verifies at the same time.
>    - replace the code trick with a new do_dout_fetch() function
>    - since the code trick was borrowed from the COMPARE AND
>      WRITE implementation [resp_comp_write()] using
>      do_dout_fetch() fixes the same bug in the existing driver
>      which hasn't been reported (yet).
> 
> Damien Le Moal (3):
>    scsi_debug: zone_max_open module parameter
>    scsi_debug: zone_nr_conv module parameter
>    scsi_debug: zone_size_mb module parameter
> 
> Douglas Gilbert (12):
>    scsi_debug: randomize command completion time
>    scsi_debug: add doublestore option
>    scsi_debug: implement verify(10), add verify(16)
>    scsi_debug: weaken rwlock around ramdisk access
>    scsi_debug: improve command duration calculation
>    scsi_debug: implement pre-fetch commands
>    scsi_debug: expand zbc support
>    scsi_debug: add zone commands
>    scsi_debug: zbc module parameter
>    scsi_debug: re-arrange parameters alphabetically
>    scsi_debug: zbc parameter can be string
>    scsi_debug: bump to version 1.89
> 
>   drivers/scsi/scsi_debug.c | 1593 ++++++++++++++++++++++++++++++++-----
>   1 file changed, 1389 insertions(+), 204 deletions(-)
> 


      parent reply	other threads:[~2020-02-20 20:11 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-20 20:08 [PATCH v3 00/15] host managed ZBC + doublestore Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 01/15] scsi_debug: randomize command completion time Douglas Gilbert
2020-02-21  9:45   ` Hannes Reinecke
2020-02-20 20:08 ` [PATCH v3 02/15] scsi_debug: add doublestore option Douglas Gilbert
2020-02-21  9:46   ` Hannes Reinecke
2020-02-21 15:37     ` Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 03/15] scsi_debug: implement verify(10), add verify(16) Douglas Gilbert
2020-02-21  9:49   ` Hannes Reinecke
2020-02-20 20:08 ` [PATCH v3 04/15] scsi_debug: weaken rwlock around ramdisk access Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 05/15] scsi_debug: improve command duration calculation Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 06/15] scsi_debug: implement pre-fetch commands Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 07/15] scsi_debug: expand zbc support Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 08/15] scsi_debug: add zone commands Douglas Gilbert
2020-02-21  9:44   ` Johannes Thumshirn
2020-02-23  5:59     ` Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 09/15] scsi_debug: zbc module parameter Douglas Gilbert
2020-02-21  9:49   ` Johannes Thumshirn
2020-02-21 15:37     ` Douglas Gilbert
2020-02-22  8:27       ` Johannes Thumshirn
2020-02-20 20:08 ` [PATCH v3 10/15] scsi_debug: re-arrange parameters alphabetically Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 11/15] scsi_debug: zbc parameter can be string Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 12/15] scsi_debug: zone_max_open module parameter Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 13/15] scsi_debug: zone_nr_conv " Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 14/15] scsi_debug: zone_size_mb " Douglas Gilbert
2020-02-20 20:08 ` [PATCH v3 15/15] scsi_debug: bump to version 1.89 Douglas Gilbert
2020-02-20 20:11 ` Douglas Gilbert [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c65d815d-7523-b40d-3459-a4b54010809d@interlog.com \
    --to=dgilbert@interlog.com \
    --cc=Damien.LeMoal@wdc.com \
    --cc=hare@suse.de \
    --cc=jejb@linux.vnet.ibm.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.