]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
selftests: ublk: fix write cache implementation
authorMing Lei <ming.lei@redhat.com>
Fri, 21 Mar 2025 00:47:58 +0000 (08:47 +0800)
committerJens Axboe <axboe@kernel.dk>
Fri, 21 Mar 2025 02:01:03 +0000 (20:01 -0600)
For loop target, write cache isn't enabled, and each write isn't be
marked as DSYNC too.

Fix it by enabling write cache, meantime fix FLUSH implementation
by not taking LBA range into account, and there isn't such info
for FLUSH command.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250321004758.152572-1-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
tools/testing/selftests/ublk/file_backed.c

index 38e68b414962d0f4f4807d95b87e69a75bb438b2..8a07356eccaf6ed8d414dd8df3515101bece4975 100644 (file)
@@ -123,10 +123,7 @@ static int loop_queue_tgt_io(struct ublk_queue *q, int tag)
                sqe = ublk_queue_alloc_sqe(q);
                if (!sqe)
                        return -ENOMEM;
-               io_uring_prep_sync_file_range(sqe, 1 /*fds[1]*/,
-                               iod->nr_sectors << 9,
-                               iod->start_sector << 9,
-                               IORING_FSYNC_DATASYNC);
+               io_uring_prep_fsync(sqe, 1 /*fds[1]*/, IORING_FSYNC_DATASYNC);
                io_uring_sqe_set_flags(sqe, IOSQE_FIXED_FILE);
                q->io_inflight++;
                sqe->user_data = build_user_data(tag, ublk_op, UBLK_IO_TGT_NORMAL, 1);
@@ -187,6 +184,7 @@ static int ublk_loop_tgt_init(struct ublk_dev *dev)
        struct ublk_params p = {
                .types = UBLK_PARAM_TYPE_BASIC | UBLK_PARAM_TYPE_DMA_ALIGN,
                .basic = {
+                       .attrs = UBLK_ATTR_VOLATILE_CACHE,
                        .logical_bs_shift       = 9,
                        .physical_bs_shift      = 12,
                        .io_opt_shift   = 12,