Re: [PATCH V2 2/9] nvmet: add ZNS support for bdev-ns
From: Johannes Thumshirn <hidden>
Date: 2020-12-01 07:52:44
Also in:
linux-nvme
On 01/12/2020 04:49, Chaitanya Kulkarni wrote:
On 11/30/20 04:29, Johannes Thumshirn wrote:quoted
On 30/11/2020 04:32, Chaitanya Kulkarni wrote:quoted
+ ret = __bio_iov_append_get_pages(bio, &from);Can't you just use bio_iov_iter_get_pages() here? It does have a if (WARN_ON_ONCE(is_bvec)) return -EINVAL; in it but I think that can be deleted.That was my initial patch but it adds an extra function call to the fast patch for NVMeOF. We don't need any of the generic functionality from bio_iov_iter_get_pages() anyway. 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