Re: [RESEND PATCH] dm-ebs: Mark full buffer dirty even on partial write

Uladzislau Rezki
2025-11-19T09:01:30Z

On Wed, Nov 19, 2025 at 10:00:10AM +0100, Christoph Hellwig wrote:
> On Wed, Nov 19, 2025 at 09:57:49AM +0100, Uladzislau Rezki wrote:
> > On Wed, Nov 19, 2025 at 09:53:28AM +0100, Christoph Hellwig wrote:
> > > On Wed, Nov 19, 2025 at 09:43:13AM +0100, Uladzislau Rezki wrote:
> > > > Well. LBA is fixed in my case. Just only one format which is 512B.
> > > >
> > > > Whereas the I/O can not be performed by using LBAs sizes. It is fixed
> > > > and bigger.
> > >
> > > Then it is not an LBA. The LBA is defined as the minimum block size
> > > you can do I/O on. Aka your device is really gravely broken. What
> > > device is this and who is selling it?
> > >
> > I define UBS - underlying block size. The lower layer expects BIOs in
> > that sizes but this is not true.
> >
> > I am not allowed to disclose and answer your last question.
>
> Well. Let's frame it differently: this device is just to broken
> to be used with Linux. In theory we could quirk based on the vendor
> ID to correctly report the logical block size, but for that we'd
> need the information.
>
/*
* Construct an emulated block size mapping: <dev_path> <offset> <ebs> [<ubs>]
*
* <dev_path>: path of the underlying device
* <offset>: offset in 512 bytes sectors into <dev_path>
* <ebs>: emulated block size in units of 512 bytes exposed to the upper layer
* [<ubs>]: underlying block size in units of 512 bytes imposed on the lower layer;
* optional, if not supplied, retrieve logical block size from underlying device
*/
static int ebs_ctr(struct dm_target *ti, unsigned int argc, char **argv)
{

Again i rely on this.

--
Uladzislau Rezki