• Bart Van Assche's avatar
    scsi: ide: Do not set the RQF_PREEMPT flag for sense requests · 96d86e6a
    Bart Van Assche authored
    RQF_PREEMPT is used for two different purposes in the legacy IDE code:
    
     1. To mark power management requests.
    
     2. To mark requests that should preempt another request. An (old)
        explanation of that feature is as follows: "The IDE driver in the Linux
        kernel normally uses a series of busywait delays during its
        initialization. When the driver executes these busywaits, the kernel
        does nothing for the duration of the wait. The time spent in these
        waits could be used for other initialization activities, if they could
        be run concurrently with these waits.
    
        More specifically, busywait-style delays such as udelay() in module
        init functions inhibit kernel preemption because the Big Kernel Lock is
        held, while yielding APIs such as schedule_timeout() allow
        preemption. This is true because the kernel handles the BKL specially
        and releases and reacquires it across reschedules allowed by the
        current thread.
    
        This IDE-preempt specification requires that the driver eliminate these
        busywaits and replace them with a mechanism that allows other work to
        proceed while the IDE driver is initializing."
    
    Since I haven't found an implementation of (2), do not set the PREEMPT flag
    for sense requests. This patch causes sense requests to be postponed while
    a drive is suspended instead of being submitted to ide_queue_rq().
    
    If it would ever be necessary to restore the IDE PREEMPT functionality,
    that can be done by introducing a new flag in struct ide_request.
    
    Link: https://lore.kernel.org/r/20201209052951.16136-4-bvanassche@acm.org
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Can Guo <cang@codeaurora.org>
    Cc: Stanley Chu <stanley.chu@mediatek.com>
    Cc: Ming Lei <ming.lei@redhat.com>
    Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Reviewed-by: default avatarJens Axboe <axboe@kernel.dk>
    Signed-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    96d86e6a
ide-atapi.c 18.5 KB