• Bart Van Assche's avatar
    scsi: Restrict user space SCSI device state changes to "running" and "offline" · ac88c1f6
    Bart Van Assche authored
    The ability to modify the SCSI device state was introduced by commit
    638127e5 ("[PATCH] Fix error handler offline behaviour"; v2.6.12). That
    same commit introduced the following device states:
    
           { SDEV_CREATED, "created" },
           { SDEV_RUNNING, "running" },
           { SDEV_CANCEL,  "cancel"  },
           { SDEV_DEL,     "deleted" },
           { SDEV_QUIESCE, "quiesce" },
           { SDEV_OFFLINE, "offline" },
    
    The SDEV_BLOCK state was introduced later to avoid that an FC cable pull
    would immediately result in an I/O error (commit 1094e682; "[PATCH]
    suspending I/Os to a device"; v2.6.12). That same patch introduced the
    ability to set the SDEV_BLOCK state from user space. I'm not sure whether
    that ability was introduced on purpose or accidentally.
    
    Since there is agreement that only writing "running" or "offline" into
    the SCSI sysfs device state attribute makes sense, restrict sysfs writes
    to these values.
    
    This patch makes sure that SDEV_BLOCK is only used for its original
    purpose, namely to allow transport drivers and LLDs to block further
    .queuecommand() calls while transport layer or adapter recovery is in
    progress.
    
    Note: a web search for "/sys/class/scsi_device" AND "device/state"
    revealed several storage configuration guides. The instructions I found
    in these guides tell users to write the value "running" or "offline" in
    the SCSI device state sysfs attribute and no other values.
    
    [mkp: typo]
    
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Johannes Thumshirn <jthumshirn@suse.de>
    Cc: James Smart <james.smart@broadcom.com>
    Cc: Ewan D. Milne <emilne@redhat.com>
    Cc: Laurence Oberman <loberman@redhat.com>
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    ac88c1f6
scsi_sysfs.c 41.2 KB