On Mon, May 12, 2025 at 02:05:56PM +0800, Yu Kuai wrote:
>>>   - mddev->bitmap_ops->startwrite(mddev, md_io_clone->offset,
>>> -                                 md_io_clone->sectors);
>>> +   if (unlikely(md_io_clone->rw == STAT_DISCARD) &&
>>> +       mddev->bitmap_ops->start_discard)
>>> +           mddev->bitmap_ops->start_discard(mddev, md_io_clone->offset,
>>> +                                            md_io_clone->sectors);
>>> +   else
>>> +           mddev->bitmap_ops->startwrite(mddev, md_io_clone->offset,
>>> +                                         md_io_clone->sectors);
>>>   }
>>
>> This interface feels weird, as it would still call into the write
>> interfaces when the discard ones are not defined instead of doing
>> nothing.  Also shouldn't discard also use a different interface
>> than md_bitmap_start in the caller?
>
> This is because the old bitmap handle discard the same as write, I
> can't do nothing in this case. Do you prefer also reuse the write
> api to new discard api for old bitmap?

It can just point the discard method to the same function as the
existing write one.


Reply via email to