[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20251008175448.342614-1-urezki@gmail.com>
Date: Wed, 8 Oct 2025 19:54:48 +0200
From: "Uladzislau Rezki (Sony)" <urezki@...il.com>
To: Alasdair Kergon <agk@...hat.com>
Cc: Mike Snitzer <snitzer@...hat.com>,
Christoph Hellwig <hch@....de>,
LKML <linux-kernel@...r.kernel.org>,
DMML <dm-devel@...ts.linux.dev>,
Uladzislau Rezki <urezki@...il.com>
Subject: [PATCH] dm-ebs: Mark full buffer dirty even on partial write
When performing a read-modify-write(RMW) operation, any modification
to a buffered block must cause the entire buffer to be marked dirty.
Marking only a subrange as dirty is incorrect because the underlying
device block size(ubs) defines the minimum read/write granularity. A
lower device can perform I/O only on regions which are fully aligned
and sized to ubs.
This change ensures that write-back operations always occur in full
ubs-sized chunks, matching the intended emulation semantics of the
EBS target.
Signed-off-by: Uladzislau Rezki (Sony) <urezki@...il.com>
---
drivers/md/dm-ebs-target.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/md/dm-ebs-target.c b/drivers/md/dm-ebs-target.c
index 6abb31ca9662..b354e74a670e 100644
--- a/drivers/md/dm-ebs-target.c
+++ b/drivers/md/dm-ebs-target.c
@@ -103,7 +103,7 @@ static int __ebs_rw_bvec(struct ebs_c *ec, enum req_op op, struct bio_vec *bv,
} else {
flush_dcache_page(bv->bv_page);
memcpy(ba, pa, cur_len);
- dm_bufio_mark_partial_buffer_dirty(b, buf_off, buf_off + cur_len);
+ dm_bufio_mark_buffer_dirty(b);
}
dm_bufio_release(b);
--
2.47.3
Powered by blists - more mailing lists