Re: [PATCH] block: Set req quiet flag if bio is quiet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/27/20 2:00 AM, Ming Lei wrote:
> On Sat, Jun 27, 2020 at 2:12 AM Aleksei Marov <alekseymmm@xxxxxxx> wrote:
>>
>> The current behavior is that if bio flagged as BIO_QUIETis submitted to request based block device then the request
>> that wraps this bio in a queue is not quiet. RQF_FLAG is not
>> set anywhere. Hence, if errors happen we can see error
>> messages (e.g. in print_req_error) even though bio is quiet.
>> This patch fixes that by setting the flag in blk_rq_bio_prep.
>>
>> Signed-off-by: Aleksei Marov <alekseymmm@xxxxxxx>
>> ---
>>  block/blk.h | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/block/blk.h b/block/blk.h
>> index b5d1f0f..04ca4e0 100644
>> --- a/block/blk.h
>> +++ b/block/blk.h
>> @@ -108,6 +108,9 @@ static inline void blk_rq_bio_prep(struct request
>> *rq, struct bio *bio,
>>
>>         if (bio->bi_disk)
>>                 rq->rq_disk = bio->bi_disk;
>> +
>> +       if (bio_flagged(bio, BIO_QUIET))
>> +               rq->rq_flags |= RQF_QUIET;
>>  }
> 
> BIO_QUIET consumer is fs code, and RQF_QUIET consumer is block layer,
> so you think
> the two consumers' expectation is same?

They should be the same, the intent is to say "don't log errors on this
piece of IO".

Would be much nicer if RQF_QUIET was just inherited naturally in
req->cmd_flags from bio->bi_opf, like we do for the shared parts.
Pretty confusing to have two different sets of flags and needing
to inherit them independently, also more inefficient.

-- 
Jens Axboe





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux