Lines Matching refs:imu

109 		struct io_mapped_ubuf *imu = node->buf;  in io_buffer_unmap()  local
111 if (!refcount_dec_and_test(&imu->refs)) in io_buffer_unmap()
113 for (i = 0; i < imu->nr_bvecs; i++) in io_buffer_unmap()
114 unpin_user_page(imu->bvec[i].bv_page); in io_buffer_unmap()
115 if (imu->acct_pages) in io_buffer_unmap()
116 io_unaccount_mem(ctx, imu->acct_pages); in io_buffer_unmap()
117 kvfree(imu); in io_buffer_unmap()
579 struct io_mapped_ubuf *imu; in headpage_already_acct() local
583 imu = node->buf; in headpage_already_acct()
584 for (j = 0; j < imu->nr_bvecs; j++) { in headpage_already_acct()
585 if (!PageCompound(imu->bvec[j].bv_page)) in headpage_already_acct()
587 if (compound_head(imu->bvec[j].bv_page) == hpage) in headpage_already_acct()
596 int nr_pages, struct io_mapped_ubuf *imu, in io_buffer_account_pin() argument
601 imu->acct_pages = 0; in io_buffer_account_pin()
604 imu->acct_pages++; in io_buffer_account_pin()
614 imu->acct_pages += page_size(hpage) >> PAGE_SHIFT; in io_buffer_account_pin()
618 if (!imu->acct_pages) in io_buffer_account_pin()
621 ret = io_account_mem(ctx, imu->acct_pages); in io_buffer_account_pin()
623 imu->acct_pages = 0; in io_buffer_account_pin()
719 struct io_mapped_ubuf *imu = NULL; in io_sqe_buffer_register() local
751 imu = kvmalloc(struct_size(imu, bvec, nr_pages), GFP_KERNEL); in io_sqe_buffer_register()
752 if (!imu) in io_sqe_buffer_register()
755 ret = io_buffer_account_pin(ctx, pages, nr_pages, imu, last_hpage); in io_sqe_buffer_register()
763 imu->ubuf = (unsigned long) iov->iov_base; in io_sqe_buffer_register()
764 imu->len = iov->iov_len; in io_sqe_buffer_register()
765 imu->nr_bvecs = nr_pages; in io_sqe_buffer_register()
766 imu->folio_shift = PAGE_SHIFT; in io_sqe_buffer_register()
768 imu->folio_shift = data.folio_shift; in io_sqe_buffer_register()
769 refcount_set(&imu->refs, 1); in io_sqe_buffer_register()
770 off = (unsigned long) iov->iov_base & ((1UL << imu->folio_shift) - 1); in io_sqe_buffer_register()
771 node->buf = imu; in io_sqe_buffer_register()
777 vec_len = min_t(size_t, size, (1UL << imu->folio_shift) - off); in io_sqe_buffer_register()
778 bvec_set_page(&imu->bvec[i], pages[i], vec_len, off); in io_sqe_buffer_register()
784 kvfree(imu); in io_sqe_buffer_register()
864 struct io_mapped_ubuf *imu, in io_import_fixed() argument
870 if (WARN_ON_ONCE(!imu)) in io_import_fixed()
875 if (unlikely(buf_addr < imu->ubuf || buf_end > (imu->ubuf + imu->len))) in io_import_fixed()
882 offset = buf_addr - imu->ubuf; in io_import_fixed()
883 iov_iter_bvec(iter, ddir, imu->bvec, imu->nr_bvecs, len); in io_import_fixed()
902 const struct bio_vec *bvec = imu->bvec; in io_import_fixed()
911 seg_skip = 1 + (offset >> imu->folio_shift); in io_import_fixed()
915 iter->iov_offset = offset & ((1UL << imu->folio_shift) - 1); in io_import_fixed()