Re: [PATCH] dm: error: Add support for zoned block devices

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

 



(Updating dm-devel address...)

On Wed, Oct 25, 2023 at 02:53:17PM +0900, Damien Le Moal wrote:
> On 10/25/23 14:22, Naohiro Aota wrote:
> > On Tue, Oct 24, 2023 at 07:45:13AM +0900, Damien Le Moal wrote:
> >> diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
> >> index 37b48f63ae6a..5e4d887063d3 100644
> >> --- a/drivers/md/dm-table.c
> >> +++ b/drivers/md/dm-table.c
> >> @@ -1600,6 +1600,9 @@ static bool dm_table_supports_zoned_model(struct dm_table *t,
> >>  	for (unsigned int i = 0; i < t->num_targets; i++) {
> >>  		struct dm_target *ti = dm_table_get_target(t, i);
> >>  
> >> +		if (dm_target_is_wildcard(ti->type))
> >> +			continue;
> >> +
> > 
> > This seems tricky to me. Currently, dm-error is the only dm target having
> > DM_TARGET_WILDCARD. But, can we expect that will be so forever?
> 
> Yes, I saw that. Not sure. Mike ?
> 
> > Also, I considered what happens if the backing device is non-zoned
> > one. dm_table_supports_zoned_model() returns true in that case. But, it is
> > still reported as non-zoned as we copy non-zoned queue limits. So, it is
> > OK ... but it is a bit tricky.
> 
> Returning true for dm_table_supports_zoned_model() is not an issue. As the name
> of the function says, this checks that the device table is OK with zoned device
> but does not force the dm device to be zoned.

I see. I just think it's confusing as it also checks the backing devices
for other cases.

> > Instead, how about implementing the .iterate_devices just like
> > linear_iterate_devices?
> 
> Because that would change how dm-error needs to be setup. Currently, there are
> no arguments needed for the table entry for dm-error. If we define the
> ->iterate_devices operation, we'll need a backing device and mapping start
> sector. Changing the dmsetup command line for all users is probably not the best
> approach... Unless I am missing something...

I thought we could just return 0 when there is no backing device. But, I see,
we need a start sector to call the callback function, which is pain.

Then, how about continue the loop if (dm_target_supports_zoned_hm(ti->type)
&& !ti->type->iterate_devices) ? The target declares itself supporting
zoned_hm and having NULL iterate_devices implies there is no backing
device. Then, we can say that target supports the zoned model naturally.




[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux