[RFC PATCH 1/2] block: change rq_integrity_vec to respect the iterator
Mikulas Patocka
mpatocka at redhat.com
Mon May 20 05:53:26 PDT 2024
On Wed, 15 May 2024, Jens Axboe wrote:
> On 5/15/24 7:28 AM, Mikulas Patocka wrote:
> > @@ -177,9 +177,9 @@ static inline int blk_integrity_rq(struc
> > return 0;
> > }
> >
> > -static inline struct bio_vec *rq_integrity_vec(struct request *rq)
> > +static inline struct bio_vec rq_integrity_vec(struct request *rq)
> > {
> > - return NULL;
> > + BUG();
> > }
> > #endif /* CONFIG_BLK_DEV_INTEGRITY */
> > #endif /* _LINUX_BLK_INTEGRITY_H */
>
> Let's please not do that. If it's not used outside of
> CONFIG_BLK_DEV_INTEGRITY, it should just go away.
>
> --
> Jens Axboe
It can't go away - it is guarded with blk_integrity_rq (which always
returns 0 if compiled without CONFIG_BLK_DEV_INTEGRITY), so the compiler
will optimize-out the calls to rq_integrity_vec. But we can't delete
rq_integrity_vec, because the source code references it.
Should rq_integrity_vec return empty 'struct bio_vec' instead? Or should
we add more CONFIG_BLK_DEV_INTEGRITY tests to disable the call locations?
Mikulas
More information about the Linux-nvme
mailing list