* remove RQF_ELVPRIV
@ 2021-10-19 13:39 Christoph Hellwig
2021-10-19 13:39 ` [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request Christoph Hellwig
2021-10-19 13:39 ` [PATCH 2/2] blk-mq: remove RQF_ELVPRIV Christoph Hellwig
0 siblings, 2 replies; 6+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:39 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block
Hi Jens,
this series removes the RQF_ELVPRIV flag which isn't really needed
anymore.
Diffstat;
block/blk-mq-debugfs.c | 1 -
block/blk-mq-sched.h | 5 ++---
block/blk-mq.c | 3 +--
include/linux/blk-mq.h | 2 --
4 files changed, 3 insertions(+), 8 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request
2021-10-19 13:39 remove RQF_ELVPRIV Christoph Hellwig
@ 2021-10-19 13:39 ` Christoph Hellwig
2021-10-19 13:43 ` Jens Axboe
2021-10-19 13:39 ` [PATCH 2/2] blk-mq: remove RQF_ELVPRIV Christoph Hellwig
1 sibling, 1 reply; 6+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:39 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block
If RQF_ELVPRIV is set RQF_ELV is by definition set as well.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
block/blk-mq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 428e0e0fd5504..34392c439d2a8 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -580,7 +580,7 @@ void blk_mq_free_request(struct request *rq)
struct request_queue *q = rq->q;
struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
- if (rq->rq_flags & (RQF_ELVPRIV | RQF_ELV)) {
+ if (rq->rq_flags & RQF_ELV) {
struct elevator_queue *e = q->elevator;
if (e->type->ops.finish_request)
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] blk-mq: remove RQF_ELVPRIV
2021-10-19 13:39 remove RQF_ELVPRIV Christoph Hellwig
2021-10-19 13:39 ` [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request Christoph Hellwig
@ 2021-10-19 13:39 ` Christoph Hellwig
1 sibling, 0 replies; 6+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:39 UTC (permalink / raw)
To: Jens Axboe; +Cc: linux-block
RQF_ELVPRIV is set for all non-flush requests that have an I/O scheduler
with a prepare_request method, and it is checked in a single place where
we already know that the request was initialized and has an I/O
scheduler. Given that there is no I/O scheduler that has a
requeue_request method but not prepare_request method there is no need
for this extra flag.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
block/blk-mq-debugfs.c | 1 -
block/blk-mq-sched.h | 5 ++---
block/blk-mq.c | 1 -
include/linux/blk-mq.h | 2 --
4 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
index a317f05de466a..efd48992bda09 100644
--- a/block/blk-mq-debugfs.c
+++ b/block/blk-mq-debugfs.c
@@ -300,7 +300,6 @@ static const char *const rqf_name[] = {
RQF_NAME(DONTPREP),
RQF_NAME(FAILED),
RQF_NAME(QUIET),
- RQF_NAME(ELVPRIV),
RQF_NAME(IO_STAT),
RQF_NAME(PM),
RQF_NAME(HASHED),
diff --git a/block/blk-mq-sched.h b/block/blk-mq-sched.h
index 98836106b25fc..6de63222c16d1 100644
--- a/block/blk-mq-sched.h
+++ b/block/blk-mq-sched.h
@@ -78,10 +78,9 @@ static inline void blk_mq_sched_completed_request(struct request *rq, u64 now)
static inline void blk_mq_sched_requeue_request(struct request *rq)
{
if (rq->rq_flags & RQF_ELV) {
- struct request_queue *q = rq->q;
- struct elevator_queue *e = q->elevator;
+ struct elevator_queue *e = rq->q->elevator;
- if ((rq->rq_flags & RQF_ELVPRIV) && e->type->ops.requeue_request)
+ if (!op_is_flush(rq->cmd_flags) && e->type->ops.requeue_request)
e->type->ops.requeue_request(rq);
}
}
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 34392c439d2a8..d2dad19d5b85c 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -369,7 +369,6 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data,
blk_mq_sched_assign_ioc(rq);
e->type->ops.prepare_request(rq);
- rq->rq_flags |= RQF_ELVPRIV;
}
}
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index 649be3f21d740..ad810e1be8f29 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -37,8 +37,6 @@ typedef __u32 __bitwise req_flags_t;
/* don't warn about errors */
#define RQF_QUIET ((__force req_flags_t)(1 << 11))
/* elevator private data attached */
-#define RQF_ELVPRIV ((__force req_flags_t)(1 << 12))
-/* account into disk and partition IO statistics */
#define RQF_IO_STAT ((__force req_flags_t)(1 << 13))
/* runtime pm request */
#define RQF_PM ((__force req_flags_t)(1 << 15))
--
2.30.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request
2021-10-19 13:39 ` [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request Christoph Hellwig
@ 2021-10-19 13:43 ` Jens Axboe
2021-10-19 13:44 ` Christoph Hellwig
0 siblings, 1 reply; 6+ messages in thread
From: Jens Axboe @ 2021-10-19 13:43 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: linux-block
On 10/19/21 7:39 AM, Christoph Hellwig wrote:
> If RQF_ELVPRIV is set RQF_ELV is by definition set as well.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> block/blk-mq.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index 428e0e0fd5504..34392c439d2a8 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -580,7 +580,7 @@ void blk_mq_free_request(struct request *rq)
> struct request_queue *q = rq->q;
> struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
>
> - if (rq->rq_flags & (RQF_ELVPRIV | RQF_ELV)) {
> + if (rq->rq_flags & RQF_ELV) {
Actually just fixed a bug there. RQF_ELV means "we have an IO
scheduler", and RQF_ELVPRIV means that plus "we have rq private data".
The above shouldn't check RQF_ELV at all, just PRIV.
--
Jens Axboe
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request
2021-10-19 13:43 ` Jens Axboe
@ 2021-10-19 13:44 ` Christoph Hellwig
2021-10-19 13:46 ` Jens Axboe
0 siblings, 1 reply; 6+ messages in thread
From: Christoph Hellwig @ 2021-10-19 13:44 UTC (permalink / raw)
To: Jens Axboe; +Cc: Christoph Hellwig, linux-block
On Tue, Oct 19, 2021 at 07:43:04AM -0600, Jens Axboe wrote:
> On 10/19/21 7:39 AM, Christoph Hellwig wrote:
> > If RQF_ELVPRIV is set RQF_ELV is by definition set as well.
> >
> > Signed-off-by: Christoph Hellwig <hch@lst.de>
> > ---
> > block/blk-mq.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/block/blk-mq.c b/block/blk-mq.c
> > index 428e0e0fd5504..34392c439d2a8 100644
> > --- a/block/blk-mq.c
> > +++ b/block/blk-mq.c
> > @@ -580,7 +580,7 @@ void blk_mq_free_request(struct request *rq)
> > struct request_queue *q = rq->q;
> > struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
> >
> > - if (rq->rq_flags & (RQF_ELVPRIV | RQF_ELV)) {
> > + if (rq->rq_flags & RQF_ELV) {
>
> Actually just fixed a bug there. RQF_ELV means "we have an IO
> scheduler", and RQF_ELVPRIV means that plus "we have rq private data".
> The above shouldn't check RQF_ELV at all, just PRIV.
Well, in that case RQF_ELVPRIV can be replaced with
RQF_ELV && !op_is_flush as in the next patch. But I can resend once I
see the fix in a tree somewhere.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request
2021-10-19 13:44 ` Christoph Hellwig
@ 2021-10-19 13:46 ` Jens Axboe
0 siblings, 0 replies; 6+ messages in thread
From: Jens Axboe @ 2021-10-19 13:46 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: linux-block
On 10/19/21 7:44 AM, Christoph Hellwig wrote:
> On Tue, Oct 19, 2021 at 07:43:04AM -0600, Jens Axboe wrote:
>> On 10/19/21 7:39 AM, Christoph Hellwig wrote:
>>> If RQF_ELVPRIV is set RQF_ELV is by definition set as well.
>>>
>>> Signed-off-by: Christoph Hellwig <hch@lst.de>
>>> ---
>>> block/blk-mq.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/block/blk-mq.c b/block/blk-mq.c
>>> index 428e0e0fd5504..34392c439d2a8 100644
>>> --- a/block/blk-mq.c
>>> +++ b/block/blk-mq.c
>>> @@ -580,7 +580,7 @@ void blk_mq_free_request(struct request *rq)
>>> struct request_queue *q = rq->q;
>>> struct blk_mq_hw_ctx *hctx = rq->mq_hctx;
>>>
>>> - if (rq->rq_flags & (RQF_ELVPRIV | RQF_ELV)) {
>>> + if (rq->rq_flags & RQF_ELV) {
>>
>> Actually just fixed a bug there. RQF_ELV means "we have an IO
>> scheduler", and RQF_ELVPRIV means that plus "we have rq private data".
>> The above shouldn't check RQF_ELV at all, just PRIV.
>
> Well, in that case RQF_ELVPRIV can be replaced with
> RQF_ELV && !op_is_flush as in the next patch. But I can resend once I
> see the fix in a tree somewhere.
That'd be great. It's in for-5.16/block
--
Jens Axboe
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-10-19 13:46 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-19 13:39 remove RQF_ELVPRIV Christoph Hellwig
2021-10-19 13:39 ` [PATCH 1/2] blk-mq: remove the RQF_ELVPRIV check in blk_mq_free_request Christoph Hellwig
2021-10-19 13:43 ` Jens Axboe
2021-10-19 13:44 ` Christoph Hellwig
2021-10-19 13:46 ` Jens Axboe
2021-10-19 13:39 ` [PATCH 2/2] blk-mq: remove RQF_ELVPRIV Christoph Hellwig
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).