• Alan Adamson's avatar
    nvme: allow passthru cmd error logging · 9f079dda
    Alan Adamson authored
    Commit d7ac8dca ("nvme: quiet user passthrough command errors")
    disabled error logging for user passthrough commands.  This commit
    adds the ability to opt-in to passthrough admin error logging. IO
    commands initiated as passthrough will always be logged.
    
    The logging output for passthrough commands (Admin and IO) has been
    changed to include CDWXX fields.
    
    nvme0n1: Read(0x2), LBA Out of Range (sct 0x0 / sc 0x80) DNR cdw10=0x0 cdw11=0x1
            cdw12=0x70000 cdw13=0x0 cdw14=0x0 cdw15=0x0
    
    Add a helper function nvme_log_err_passthru() which allows us to log
    error for passthru commands by decoding cdw10-cdw15 values of nvme
    command.
    
    Add a new sysfs attr passthru_err_log_enabled that allows user to conditionally
    enable passthrough command logging for either passthrough Admin commands sent to
    the controller or passthrough IO commands sent to a namespace.
    
    By default, passthrough error logging is disabled.
    
    To enable passthrough admin error logging:
            echo 1 > /sys/class/nvme/nvme0/passthru_err_log_enabled
    
    To disable passthrough admin error logging:
            echo 0 > /sys/class/nvme/nvme0/passthru_err_log_enabled
    
    To enable passthrough io error logging:
            echo 1 > /sys/class/nvme/nvme0/nvme0n1/passthru_err_log_enabled
    
    To disable passthrough io error logging:
            echo 0 > /sys/class/nvme/nvme0/nvme0n1/passthru_err_log_enabled
    Signed-off-by: default avatarAlan Adamson <alan.adamson@oracle.com>
    Signed-off-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
    9f079dda
nvme.h 32 KB