Re: [PATCH 2/2] block: fops: Do not set REQ_SYNC for async IOs

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

 



On 11/29/22 00:25, Christoph Hellwig wrote:
> On Sat, Nov 26, 2022 at 11:55:50AM +0900, Damien Le Moal wrote:
>> Taking a blktrace of a simple fio run on a block device file using
>> libaio and iodepth > 1 reveals that asynchronous writes are executed as
>> sync writes, that is, REQ_SYNC is set for the write BIOs.
>>
>> Fix this by modifying dio_bio_write_op() to set REQ_SYNC only for IOs
>> that are indeed synchronous ones and set REQ_IDLE only for asynchronous
>> IOs.
> 
> Well, REQ_SYNC is used for I/O that some is actively waiting for,
> which includs aio/io_uring I/O unlike buffered writback.

OK. But then the semantic of REQ_SYNC should really be more clearly
defined. Always setting it for bdev direct write IOs regardless of the
iocb type is telling me that we should not need it at all, especially
considering that for bdev direct IO reads, it is the reverse: REQ_SYNC
is never set.

> So I don't think this should be changed.

OK. But then what ? Looking again at the block layer use of REQ_SYNC, I
do not see anything super relevant. wbt_should_throttle() use it to
detect direct writes. Some other places set that flag but it does not
seem to actually be used/tested anywhere. What am I missing ?

-- 
Damien Le Moal
Western Digital Research




[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