public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: "Martin K . Petersen" <martin.petersen@oracle.com>
Cc: "James E . J . Bottomley" <jejb@linux.vnet.ibm.com>,
	Jens Axboe <axboe@kernel.dk>, Christoph Hellwig <hch@lst.de>,
	linux-scsi@vger.kernel.org, linux-block@vger.kernel.org,
	Bart Van Assche <bvanassche@acm.org>,
	"David S . Miller" <davem@davemloft.net>,
	Alan Stern <stern@rowland.harvard.edu>,
	Can Guo <cang@codeaurora.org>,
	Stanley Chu <stanley.chu@mediatek.com>,
	Ming Lei <ming.lei@redhat.com>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>
Subject: [PATCH v2 2/9] ide: Do not set the RQF_PREEMPT flag for sense requests
Date: Sun, 15 Nov 2020 19:04:52 -0800	[thread overview]
Message-ID: <20201116030459.13963-3-bvanassche@acm.org> (raw)
In-Reply-To: <20201116030459.13963-1-bvanassche@acm.org>

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.

This patch is a first step towards removing the PREEMPT flag from the
block layer.

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>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
 drivers/ide/ide-atapi.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index 2162bc80f09e..013ad33fbbc8 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -223,7 +223,6 @@ void ide_prep_sense(ide_drive_t *drive, struct request *rq)
 	sense_rq->rq_disk = rq->rq_disk;
 	sense_rq->cmd_flags = REQ_OP_DRV_IN;
 	ide_req(sense_rq)->type = ATA_PRIV_SENSE;
-	sense_rq->rq_flags |= RQF_PREEMPT;
 
 	req->cmd[0] = GPCMD_REQUEST_SENSE;
 	req->cmd[4] = cmd_len;

  parent reply	other threads:[~2020-11-16  3:05 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-16  3:04 [PATCH v2 0/9] Rework runtime suspend and SCSI domain validation Bart Van Assche
2020-11-16  3:04 ` [PATCH v2 1/9] block: Fix a race in the runtime power management code Bart Van Assche
2020-11-16 17:14   ` Christoph Hellwig
2020-11-16  3:04 ` Bart Van Assche [this message]
2020-11-16 17:14   ` [PATCH v2 2/9] ide: Do not set the RQF_PREEMPT flag for sense requests Christoph Hellwig
2020-11-16  3:04 ` [PATCH v2 3/9] scsi: Pass a request queue pointer to __scsi_execute() Bart Van Assche
2020-11-16 17:16   ` Christoph Hellwig
2020-11-18  1:16   ` Can Guo
2020-11-16  3:04 ` [PATCH v2 4/9] scsi: Rework scsi_mq_alloc_queue() Bart Van Assche
2020-11-16 17:17   ` Christoph Hellwig
2020-11-16 18:01     ` Bart Van Assche
2020-11-20  1:36       ` Bart Van Assche
2020-11-18  1:15   ` Can Guo
2020-11-16  3:04 ` [PATCH v2 5/9] scsi: Do not wait for a request in scsi_eh_lock_door() Bart Van Assche
2020-11-16 17:18   ` Christoph Hellwig
2020-11-16  3:04 ` [PATCH v2 6/9] scsi_transport_spi: Make spi_execute() accept a request queue pointer Bart Van Assche
2020-11-16 17:18   ` Christoph Hellwig
2020-11-16  3:04 ` [PATCH v2 7/9] scsi_transport_spi: Freeze request queues instead of quiescing Bart Van Assche
2020-11-16 17:22   ` Christoph Hellwig
2020-11-16 17:51     ` Bart Van Assche
2020-11-16  3:04 ` [PATCH v2 8/9] block, scsi, ide: Only process PM requests if rpm_status != RPM_ACTIVE Bart Van Assche
2020-11-16 17:22   ` Christoph Hellwig
2020-11-17 16:00   ` [block, scsi, ide] 3e3b42fee6: kmsg.sd#:#:#:#:[sdf]Asking_for_cache_data_failed kernel test robot
2020-11-17 16:46     ` Bart Van Assche
2020-11-18  1:16       ` [LKP] " Philip Li
2020-11-18  1:13   ` [PATCH v2 8/9] block, scsi, ide: Only process PM requests if rpm_status != RPM_ACTIVE Can Guo
2020-11-18  9:08   ` Stanley Chu
2020-11-16  3:04 ` [PATCH v2 9/9] block: Do not accept any requests while suspended Bart Van Assche
2020-11-16 17:23   ` Christoph Hellwig
2020-11-18  1:12   ` Can Guo
2020-11-18  9:05   ` Stanley Chu

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=20201116030459.13963-3-bvanassche@acm.org \
    --to=bvanassche@acm.org \
    --cc=axboe@kernel.dk \
    --cc=cang@codeaurora.org \
    --cc=davem@davemloft.net \
    --cc=hch@lst.de \
    --cc=jejb@linux.vnet.ibm.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=ming.lei@redhat.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=stanley.chu@mediatek.com \
    --cc=stern@rowland.harvard.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox