• Douglas Gilbert's avatar
    scsi: scsi_debug: Add per_host_store option · 87c715dc
    Douglas Gilbert authored
    The scsi_debug driver has always been restricted to using one ramdisk image
    (or none) for its storage. This means that thousands of scsi_debug devices
    can be created without exhausting the host machine's RAM. The downside is
    that all scsi_debug devices share the same ramdisk image. This option
    changes the way a following write to the add_host parameter (or an add_host
    in the module/driver invocation) operates.  For each new host that is
    created while per_host_store is true, a new store (of dev-size_mb MiB) is
    created and associated with all the LUs that belong to that new host. The
    user (who will need root permissions) needs to take care not to exhaust all
    the machine's available RAM.
    
    One reason for doing this is to check that (partial) disk to disk copies
    based on scsi_debug devices have actually copied accurately. To test this
    the add_host=<n> parameter where <n> is 2 or greater can be used when the
    scsi_debug module is loaded. Let us assume that /dev/sdb and /dev/sg1 are
    the same scsi_debug device, while /dev/sdc and /dev/sg2 are the same
    scsi_debug device. With per_host_store=1 add_host=2 they will have
    different ramdisk images. Then the following pseudocode could be executed
    to check if the sgh_dd copy worked:
    
        dd if=/dev/urandom of=/dev/sdb
        sgh_dd if=/dev/sg1 of=/dev/sg2 [plus option(s) to test]
        cmp /dev/sdb /dev/sdc
    
    If the cmp fails then the copy has failed (or some other mechanism wrote to
    /dev/sdb or /dev/sdc in the interim).
    
    [mkp: use kstrtobool()]
    
    Link: https://lore.kernel.org/r/20200421151424.32668-3-dgilbert@interlog.comSigned-off-by: default avatarDouglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    87c715dc
scsi_debug.c 182 KB