On 11/30/20 23:51, Johannes Thumshirn wrote: >> Why add an extra function call overhead in the hot path for each I/O ? > At least in my compilation (gcc 10.1) there's now extra function call overhead. > __bio_iov_append_get_pages() get's fully inlined into bio_iov_iter_get_pages(). > > $ make block/bio.s > CALL scripts/checksyscalls.sh > CALL scripts/atomic/check-atomics.sh > DESCEND objtool > CC block/bio.s > $ grep __bio_iov_append_get_pages block/bio.s > $ grep bio_iov_iter_get_pages block/bio.s > __kstrtab_bio_iov_iter_get_pages: > .asciz "bio_iov_iter_get_pages" > __kstrtabns_bio_iov_iter_get_pages: > .section "___ksymtab_gpl+bio_iov_iter_get_pages", "a" > __ksymtab_bio_iov_iter_get_pages: > .long bio_iov_iter_get_pages- . > .long __kstrtab_bio_iov_iter_get_pages- . > .long __kstrtabns_bio_iov_iter_get_pages- . > .globl bio_iov_iter_get_pages > .type bio_iov_iter_get_pages, @function > bio_iov_iter_get_pages: > .type bio_iov_iter_get_pages.cold, @function > bio_iov_iter_get_pages.cold: > .size bio_iov_iter_get_pages, .-bio_iov_iter_get_pages > .size bio_iov_iter_get_pages.cold, .-bio_iov_iter_get_pages.cold > .type __UNIQUE_ID___addressable_bio_iov_iter_get_pages499, @object > .size __UNIQUE_ID___addressable_bio_iov_iter_get_pages499, 8 > __UNIQUE_ID___addressable_bio_iov_iter_get_pages499: > .quad bio_iov_iter_get_pages > > So it does on mine too, but it doesn't guarantee all the platforms.