Message ID | 20230719195417.1704513-4-axboe@kernel.dk (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | Improve async iomap DIO performance | expand |
On Wed, Jul 19, 2023 at 01:54:14PM -0600, Jens Axboe wrote: > Whether we have a write back cache and are using FUA or don't have > a write back cache at all is the same situation. Treat them the same. This looks correct, but I think the IOMAP_DIO_WRITE_FUA is rather misnamed now which could lead to confusion. The comment in __iomap_dio_rw when checking the flag and clearing IOMAP_DIO_NEED_SYNC also needs a little update to talk about writethrough semantics and not just FUA now.
On 7/19/23 10:54?PM, Christoph Hellwig wrote: > On Wed, Jul 19, 2023 at 01:54:14PM -0600, Jens Axboe wrote: >> Whether we have a write back cache and are using FUA or don't have >> a write back cache at all is the same situation. Treat them the same. > > This looks correct, but I think the IOMAP_DIO_WRITE_FUA is rather > misnamed now which could lead to confusion. The comment in It is - should I rename it to IOMAP_DIO_STABLE_WRITE or something like that as part of this change? > __iomap_dio_rw when checking the flag and clearing IOMAP_DIO_NEED_SYNC > also needs a little update to talk about writethrough semantics and > not just FUA now. Will do.
diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c index 6b302bf8790b..b30c3edf2ef3 100644 --- a/fs/iomap/direct-io.c +++ b/fs/iomap/direct-io.c @@ -280,7 +280,8 @@ static loff_t iomap_dio_bio_iter(const struct iomap_iter *iter, * cache flushes on IO completion. */ if (!(iomap->flags & (IOMAP_F_SHARED|IOMAP_F_DIRTY)) && - (dio->flags & IOMAP_DIO_WRITE_FUA) && bdev_fua(iomap->bdev)) + (dio->flags & IOMAP_DIO_WRITE_FUA) && + (bdev_fua(iomap->bdev) || !bdev_write_cache(iomap->bdev))) use_fua = true; }
Whether we have a write back cache and are using FUA or don't have a write back cache at all is the same situation. Treat them the same. Signed-off-by: Jens Axboe <axboe@kernel.dk> --- fs/iomap/direct-io.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)