block, scsi: Change the preempt-only flag into a counter
authorBart Van Assche <bvanassche@acm.org>
Wed, 26 Sep 2018 21:01:04 +0000 (14:01 -0700)
committerJens Axboe <axboe@kernel.dk>
Wed, 26 Sep 2018 21:11:28 +0000 (15:11 -0600)
commitcd84a62e0078dce09f4ed349bec84f86c9d54b30
tree2cdd58e3abebc23c86351ca12815b751a62bdc1a
parentbca6b067b0b269a7b8ba129e2a918309ca8b4a55
block, scsi: Change the preempt-only flag into a counter

The RQF_PREEMPT flag is used for three purposes:
- In the SCSI core, for making sure that power management requests
  are executed even if a device is in the "quiesced" state.
- For domain validation by SCSI drivers that use the parallel port.
- In the IDE driver, for IDE preempt requests.
Rename "preempt-only" into "pm-only" because the primary purpose of
this mode is power management. Since the power management core may
but does not have to resume a runtime suspended device before
performing system-wide suspend and since a later patch will set
"pm-only" mode as long as a block device is runtime suspended, make
it possible to set "pm-only" mode from more than one context. Since
with this change scsi_device_quiesce() is no longer idempotent, make
that function return early if it is called for a quiesced queue.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Cc: Jianchao Wang <jianchao.w.wang@oracle.com>
Cc: Johannes Thumshirn <jthumshirn@suse.de>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-core.c
block/blk-mq-debugfs.c
drivers/scsi/scsi_lib.c
include/linux/blkdev.h