Uros Bizjak
939f9dd040
block: Use try_cmpxchg in update_io_ticks
...
Use try_cmpxchg instead of cmpxchg (*ptr, old, new) == old in
update_io_ticks. x86 CMPXCHG instruction returns success in ZF flag,
so this change saves a compare after cmpxchg (and related
move instruction in front of cmpxchg).
No functional change intended.
Signed-off-by: Uros Bizjak <ubizjak@gmail.com >
Cc: Jens Axboe <axboe@kernel.dk >
Link: https://lore.kernel.org/r/20220712152741.7324-1-ubizjak@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-12 14:39:06 -06:00
Uros Bizjak
f4b1e27db4
block/rq_qos: Use atomic_try_cmpxchg in atomic_inc_below
...
Use atomic_try_cmpxchg instead of atomic_cmpxchg (*ptr, old, new) == old in
atomic_inc_below. x86 CMPXCHG instruction returns success in ZF flag,
so this change saves a compare after cmpxchg (and related move instruction
in front of cmpxchg).
Also, atomic_try_cmpxchg implicitly assigns old *ptr value to "old" when
cmpxchg fails, enabling further code simplifications.
No functional change intended.
Signed-off-by: Uros Bizjak <ubizjak@gmail.com >
Cc: Jens Axboe <axboe@kernel.dk >
Link: https://lore.kernel.org/r/20220712150547.5786-1-ubizjak@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-12 14:38:52 -06:00
Ming Lei
f3ec5d1155
blk-mq: don't create hctx debugfs dir until q->debugfs_dir is created
...
blk_mq_debugfs_register_hctx() can be called by blk_mq_update_nr_hw_queues
when gendisk isn't added yet, such as nvme tcp.
Fixes the warning of 'debugfs: Directory 'hctx0' with parent '/' already present!'
which can be observed reliably when running blktests nvme/005.
Fixes: 6cfc0081b0 ("blk-mq: no need to check return value of debugfs_create functions")
Reported-by: Yi Zhang <yi.zhang@redhat.com >
Signed-off-by: Ming Lei <ming.lei@redhat.com >
Tested-by: Yi Zhang <yi.zhang@redhat.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220711090808.259682-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-12 06:52:27 -06:00
Christoph Hellwig
d86e716aa4
block: move zone related fields to struct gendisk
...
Move the zone related fields that are currently stored in
struct request_queue to struct gendisk as these are part of the highlevel
block layer API and are only used for non-passthrough I/O that requires
the gendisk.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-17-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
de71973c29
block: remove blk_queue_zone_sectors
...
Always use bdev_zone_sectors instead.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-16-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
fabed68c27
dm-zoned: cleanup dmz_fixup_devices
...
Use the bdev based helpers where applicable and move the zoned_dev
into the scope where it is actually used.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-15-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
a239145ad1
nvmet:: use bdev based helpers in nvmet_bdev_zone_mgmt_emulate_all
...
Use the bdev based helpers instead of the queue based ones to clean up
the code a bit and prepare for storing all zone related fields in
struct gendisk.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-14-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
375c140c19
block: use bdev based helpers in blkdev_zone_mgmt{,all}
...
Use the bdev based helpers instead of the queue based ones to clean up
the code a bit and prepare for storing all zone related fields in
struct gendisk.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-13-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
b623e34732
block: replace blkdev_nr_zones with bdev_nr_zones
...
Pass a block_device instead of a request_queue as that is what most
callers have at hand.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-12-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
982977df48
block: pass a gendisk to blk_queue_max_open_zones and blk_queue_max_active_zones
...
Switch to a gendisk based API in preparation for moving all zone related
fields from the request_queue to the gendisk.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-11-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
1dc0172027
block: remove queue_max_open_zones and queue_max_active_zones
...
Always use the bdev based helpers instead.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-10-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
5d40066567
block: pass a gendisk to blk_queue_free_zone_bitmaps
...
Switch to a gendisk based API in preparation for moving all zone related
fields from the request_queue to the gendisk.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-9-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
b3c72f8138
block: pass a gendisk to blk_queue_clear_zone_settings
...
Switch to a gendisk based API in preparation for moving all zone related
fields from the request_queue to the gendisk.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-8-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
6b2bd27474
block: pass a gendisk to blk_queue_set_zoned
...
Prepare for storing the zone related field in struct gendisk instead
of struct request_queue.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:26 -06:00
Christoph Hellwig
052e545c92
block: simplify blk_check_zone_append
...
Use the bdev based helpers instead of open coding them.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:25 -06:00
Christoph Hellwig
6deacb3bfa
block: simplify blk_mq_plug
...
Drop the unused q argument, and invert the check to move the exception
into a branch and the regular path as the normal return.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:25 -06:00
Christoph Hellwig
edd1dbc83b
block: use bdev_is_zoned instead of open coding it
...
Use bdev_is_zoned in all places where a block_device is available instead
of open coding it.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:25 -06:00
Christoph Hellwig
6cc37a672a
block: call blk_queue_free_zone_bitmaps from disk_release
...
The zone bitmaps are only used for non-passthrough I/O, so free them as
soon as the disk is released.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:25 -06:00
Christoph Hellwig
f1a8bbd110
block: remove a superflous ifdef in blkdev.h
...
It doesn't hurt to always have the blk_zone_cond_str prototype, and the
two inlines can also be defined unconditionally.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com >
Link: https://lore.kernel.org/r/20220706070350.1703384-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:46:25 -06:00
John Garry
4cf6e6c010
blk-mq: Drop local variable for reserved tag
...
The local variable is now only referenced once so drop it.
Signed-off-by: John Garry <john.garry@huawei.com >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com >
Link: https://lore.kernel.org/r/1657109034-206040-7-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:33:53 -06:00
John Garry
2dd6532e95
blk-mq: Drop 'reserved' arg of busy_tag_iter_fn
...
We no longer use the 'reserved' arg in busy_tag_iter_fn for any iter
function so it may be dropped.
Signed-off-by: John Garry <john.garry@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com >
Reviewed-by: Sagi Grimberg <sagi@grimberg.me > #nvme
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/1657109034-206040-6-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:33:53 -06:00
John Garry
1263c1929f
scsi: fnic: Drop reserved request handling
...
The SCSI core code does not support reserved requests, so drop the
handling in fnic_pending_aborts_iter().
Signed-off-by: John Garry <john.garry@huawei.com >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com >
Link: https://lore.kernel.org/r/1657109034-206040-5-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:33:53 -06:00
John Garry
9bdb4833dd
blk-mq: Drop blk_mq_ops.timeout 'reserved' arg
...
With new API blk_mq_is_reserved_rq() we can tell if a request is from
the reserved pool, so stop passing 'reserved' arg. There is actually
only a single user of that arg for all the callback implementations, which
can use blk_mq_is_reserved_rq() instead.
This will also allow us to stop passing the same 'reserved' around the
blk-mq iter functions next.
Signed-off-by: John Garry <john.garry@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Acked-by: Ulf Hansson <ulf.hansson@linaro.org > # For MMC
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com >
Link: https://lore.kernel.org/r/1657109034-206040-4-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:33:53 -06:00
John Garry
99e48cd685
blk-mq: Add a flag for reserved requests
...
Add a flag for reserved requests so that drivers may know this for any
special handling.
Signed-off-by: John Garry <john.garry@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com >
Link: https://lore.kernel.org/r/1657109034-206040-3-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:33:53 -06:00
John Garry
deef1be18e
scsi: core: Remove reserved request time-out handling
...
The SCSI core code does not currently support reserved commands. As such,
requests which time-out would never be reserved, and scsi_timeout()
'reserved' arg should never be set.
Remove handling for reserved requests, drop the wrapper scsi_timeout()
as it now just calls scsi_times_out() always, and finally rename
scsi_times_out() -> scsi_timeout() to match the blk_mq_ops method name.
Signed-off-by: John Garry <john.garry@huawei.com >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com >
Link: https://lore.kernel.org/r/1657109034-206040-2-git-send-email-john.garry@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-07-06 06:33:53 -06:00
Jason Yan
e55cf79814
blk-cgroup: factor out blkcg_free_all_cpd()
...
To reduce some duplicated code, factor out blkcg_free_all_cpd(). No
functional change.
Signed-off-by: Jason Yan <yanaijie@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220629070917.3113016-3-yanaijie@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-29 11:09:53 -06:00
Jason Yan
362b8c16f8
blk-cgroup: factor out blkcg_iostat_update()
...
To reduce some duplicated code, factor out blkcg_iostat_update(). No
functional change.
Signed-off-by: Jason Yan <yanaijie@huawei.com >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220629070917.3113016-2-yanaijie@huawei.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-29 11:09:53 -06:00
Christoph Hellwig
22d0c4080f
block: simplify disk_set_independent_access_ranges
...
Lift setting disk->ia_ranges from disk_register_independent_access_ranges
into disk_set_independent_access_ranges, and make the behavior the same
for the registered vs non-registered queue cases.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Link: https://lore.kernel.org/r/20220629062013.1331068-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-29 08:36:46 -06:00
Christoph Hellwig
6a27d28c81
block: move ->ia_ranges from the request_queue to the gendisk
...
Independent access ranges only matter for file system I/O and are only
valid with a registered gendisk, so move them there.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Link: https://lore.kernel.org/r/20220629062013.1331068-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-29 08:36:46 -06:00
Ying Sun
b9a1c179bd
block: remove "select BLK_RQ_IO_DATA_LEN" from BLK_CGROUP_IOCOST dependency
...
The configuration item BLK_RQ_IO_DATA_LEN is not declared in the kernel.
Select BLK_RQ_IO_DATA_LEN is meaningless which could be removed.
Signed-off-by: Ying Sun <sunying@nj.iscas.ac.cn >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220629062409.19458-1-sunying@nj.iscas.ac.cn
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-29 08:35:57 -06:00
Christoph Hellwig
8682b92e5a
blk-mq: cleanup disk sysfs registration
...
Pass a gendisk to the sysfs register/unregister functions and give
them descriptive names. Also move the unregistration helper next
to the one doing the registration.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/20220628171850.1313069-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 11:32:42 -06:00
Christoph Hellwig
eaa870f975
blk-mq: rename blk_mq_sysfs_{,un}register
...
Add a _hctx postfix to better describe what the functions do, match
the debugfs equivalents and release the old names for functions that
should be using them.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/20220628171850.1313069-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 11:32:42 -06:00
Christoph Hellwig
81f0c2ef41
block: remove the extra gendisk reference in __blk_mq_register_dev
...
kobject_add already grabs a reference to the parent, no need to have
another one.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/20220628171850.1313069-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 11:32:42 -06:00
Christoph Hellwig
4a8d14bba4
block: use default groups to register the queue attributes
...
Set up the default_groups for blk_queue_ktype instead of manually calling
sysfs_create_group.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/20220628171850.1313069-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 11:32:42 -06:00
Christoph Hellwig
060f131e9c
block: remove a superflous queue kobject reference
...
kobject_add already adds a reference to the parent that is dropped
on deletion, so don't bother grabbing another one.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/20220628171850.1313069-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 11:32:42 -06:00
Christoph Hellwig
cc5c516df0
block: simplify blktrace sysfs attribute creation
...
Add the trace attributes to the default gendisk attributes, just like
we already do for partitions.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Bart Van Assche <bvanassche@acm.org >
Link: https://lore.kernel.org/r/20220628171850.1313069-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 11:32:42 -06:00
Christoph Hellwig
8b9ab62662
block: remove blk_cleanup_disk
...
blk_cleanup_disk is nothing but a trivial wrapper for put_disk now,
so remove it.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Link: https://lore.kernel.org/r/20220619060552.1850436-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 06:33:15 -06:00
Christoph Hellwig
6f8191fdf4
block: simplify disk shutdown
...
Set the queue dying flag and call blk_mq_exit_queue from del_gendisk for
all disks that do not have separately allocated queues, and thus remove
the need to call blk_cleanup_queue for them.
Rename blk_cleanup_disk to blk_mq_destroy_queue to make it clear that
this function is intended only for separately allocated blk-mq queues.
This saves an extra queue freeze for devices without a separately
allocated queue.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Link: https://lore.kernel.org/r/20220619060552.1850436-6-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 06:30:26 -06:00
Christoph Hellwig
0e3534022f
block: stop setting the nomerges flags in blk_cleanup_queue
...
These flags only apply to file system I/O, and all file system I/O is
already drained by del_gendisk and thus can't be in progress when
blk_cleanup_queue is called.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Link: https://lore.kernel.org/r/20220619060552.1850436-5-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 06:30:26 -06:00
Christoph Hellwig
1f90307e5f
block: remove QUEUE_FLAG_DEAD
...
Disallow setting the blk-mq state on any queue that is already dying as
setting the state even then is a bad idea, and remove the now unused
QUEUE_FLAG_DEAD flag.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Link: https://lore.kernel.org/r/20220619060552.1850436-4-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 06:30:26 -06:00
Christoph Hellwig
e8b58ef09e
mtip32xx: fix device removal
...
Use the proper helper to mark a surpise removal, remove the gendisk as
soon as possible when removing the device and implement the ->free_disk
callback to ensure the private data is alive as long as the gendisk has
references.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Link: https://lore.kernel.org/r/20220619060552.1850436-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 06:30:26 -06:00
Christoph Hellwig
ec5263f422
mtip32xx: remove the device_status debugfs file
...
This file is a huge mess that iterates over all devices and is in the
way of fixing the device removal in this driver, so remove it.
Signed-off-by: Christoph Hellwig <hch@lst.de >
Reviewed-by: Hannes Reinecke <hare@suse.de >
Link: https://lore.kernel.org/r/20220619060552.1850436-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-28 06:30:26 -06:00
Liu Song
ee78ec1077
blk-mq: blk_mq_tag_busy is no need to return a value
...
Currently "blk_mq_tag_busy" return value has no effect, so adjust it.
Some code implementations have also been adjusted to enhance
readability.
Signed-off-by: Liu Song <liusong@linux.alibaba.com >
Link: https://lore.kernel.org/r/1656170121-1619-1-git-send-email-liusong@linux.alibaba.com
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00
Jan Kara
a78418e6a0
block: Always initialize bio IO priority on submit
...
Currently, IO priority set in task's IO context is not reflected in the
bio->bi_ioprio for most IO (only io_uring and direct IO set it). This
results in odd results where process is submitting some bios with one
priority and other bios with a different (unset) priority and due to
differing priorities bios cannot be merged. Make sure bio->bi_ioprio is
always set on bio submission.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Jan Kara <jack@suse.cz >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220623074840.5960-9-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00
Jan Kara
9c6227e043
block: Initialize bio priority earlier
...
Bio's IO priority needs to be initialized before we try to merge the bio
with other bios. Otherwise we could merge bios which would otherwise
receive different IO priorities leading to possible QoS issues.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Jan Kara <jack@suse.cz >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220623074840.5960-8-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00
Jan Kara
82b74cac28
blk-ioprio: Convert from rqos policy to direct call
...
Convert blk-ioprio handling from a rqos policy to a direct call from
blk_mq_submit_bio(). Firstly, blk-ioprio is not much of a rqos policy
anyway, it just needs a hook in bio submission path to set the bio's IO
priority. Secondly, the rqos .track hook gets actually called too late
for blk-ioprio purposes and introducing a special rqos hook just for
blk-ioprio looks even weirder.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Jan Kara <jack@suse.cz >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220623074840.5960-7-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00
Jan Kara
f258654472
blk-ioprio: Remove unneeded field
...
blkcg->ioprio_set field is not really useful except for avoiding
possibly more expensive checks inside blkcg_ioprio_track(). The check
for blkcg->prio_policy being equal to POLICY_NO_CHANGE does the same
service so just remove the ioprio_set field and replace the check.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Jan Kara <jack@suse.cz >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220623074840.5960-6-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00
Jan Kara
4b838d9ee9
block: Fix handling of tasks without ioprio in ioprio_get(2)
...
ioprio_get(2) can be asked to return the best IO priority from several
tasks (IOPRIO_WHO_PGRP, IOPRIO_WHO_USER). Currently the call treats
tasks without set IO priority as having priority
IOPRIO_CLASS_BE/IOPRIO_BE_NORM however this does not really reflect the
IO priority the task will get (which depends on task's nice value).
Fix the code to use the real IO priority task's IO will use. We have to
modify code for ioprio_get(IOPRIO_WHO_PROCESS) to keep returning
IOPRIO_CLASS_NONE priority for tasks without set IO priority as a
special case to maintain userspace visible API.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Jan Kara <jack@suse.cz >
Link: https://lore.kernel.org/r/20220623074840.5960-5-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00
Jan Kara
fc25545e17
block: Make ioprio_best() static
...
Nobody outside of block/ioprio.c uses it.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Jan Kara <jack@suse.cz >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220623074840.5960-4-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00
Jan Kara
893e5d32d5
block: Generalize get_current_ioprio() for any task
...
get_current_ioprio() operates only on current task. We will need the
same functionality for other tasks as well. Generalize
get_current_ioprio() for that and also move the bulk out of the header
file because it is large enough.
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com >
Signed-off-by: Jan Kara <jack@suse.cz >
Reviewed-by: Christoph Hellwig <hch@lst.de >
Link: https://lore.kernel.org/r/20220623074840.5960-3-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk >
2022-06-27 06:29:12 -06:00