Re: [PATCH v3 02/10] iov_iter: add iterator type for dmabuf maps
Pavel Begunkov <[email protected]>
| Newsgroups | org.kernel.vger.io-uring,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-nvme,org.kernel.vger.linux-block,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media |
|---|---|
| Message-ID | <[email protected]> |
On 5/13/26 14:29, David Laight wrote: > On Wed, 13 May 2026 11:05:57 +0100 > David Laight <[email protected]> wrote: > > ... >>> @@ -575,7 +575,8 @@ void iov_iter_advance(struct iov_iter *i, size_t size) >>> { >>> if (unlikely(i->count < size)) >>> size = i->count; >>> - if (likely(iter_is_ubuf(i)) || unlikely(iov_iter_is_xarray(i))) { >>> + if (likely(iter_is_ubuf(i)) || unlikely(iov_iter_is_xarray(i)) || >>> + unlikely(iov_iter_is_dmabuf_map(i))) { >> >> >> Doesn't the extra check add more code to all the non-ubuf cases? >> This could be fixed by either making iter_type a bitmask (with one bit set) Not going to do that. It was specifically converted from bitmask before, and the check optimisations like this were voiced back than. >> or writing an iter_is_one_of(i, ITER_xxx, ITER_yyy) define that uses >> '(1 << i->iter_type) & ((1 << ITER_xxx) | ...)' > > This seems to DTRT: > > #define _ITER_IS_ONE_OF(iter, t1, t2, t3, t4, t5, t6, t7, t8, ...) \ > ((1u << (iter)->iter_type) & ((1u << ITER_##t1) | (1u << ITER_##t2) | \ > (1u << ITER_##t3) | (1u << ITER_##t4) | (1u << ITER_##t5) | \ > (1u << ITER_##t6) | (1u << ITER_##t7) | (1u << ITER_##t8))) > #define ITER_IS_ONE_OF(iter, t, ...) \ > _ITER_IS_ONE_OF(iter, t, ## __VA_ARGS__, t, t, t, t, t, t, t) We definitely don't want that, using them directly would've been much cleaner. if (get_type_mask(i) & (TYPE1 | TYPE2)) ... -- Pavel Begunkov