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.