Lines Matching refs:bvec
109 static inline bool is_partial_io(struct bio_vec *bvec) in is_partial_io() argument
111 return bvec->bv_len != PAGE_SIZE; in is_partial_io()
138 static void update_position(u32 *index, int *offset, struct bio_vec *bvec) in update_position() argument
140 if (*offset + bvec->bv_len >= PAGE_SIZE) in update_position()
142 *offset = (*offset + bvec->bv_len) % PAGE_SIZE; in update_position()
175 static void handle_zero_page(struct bio_vec *bvec) in handle_zero_page() argument
177 struct page *page = bvec->bv_page; in handle_zero_page()
181 if (is_partial_io(bvec)) in handle_zero_page()
182 memset(user_mem + bvec->bv_offset, 0, bvec->bv_len); in handle_zero_page()
598 static int zram_bvec_read(struct zram *zram, struct bio_vec *bvec, in zram_bvec_read() argument
605 page = bvec->bv_page; in zram_bvec_read()
611 handle_zero_page(bvec); in zram_bvec_read()
616 if (is_partial_io(bvec)) in zram_bvec_read()
621 if (!is_partial_io(bvec)) in zram_bvec_read()
635 if (is_partial_io(bvec)) in zram_bvec_read()
636 memcpy(user_mem + bvec->bv_offset, uncmem + offset, in zram_bvec_read()
637 bvec->bv_len); in zram_bvec_read()
643 if (is_partial_io(bvec)) in zram_bvec_read()
648 static int zram_bvec_write(struct zram *zram, struct bio_vec *bvec, u32 index, in zram_bvec_write() argument
660 page = bvec->bv_page; in zram_bvec_write()
661 if (is_partial_io(bvec)) { in zram_bvec_write()
679 if (is_partial_io(bvec)) { in zram_bvec_write()
680 memcpy(uncmem + offset, user_mem + bvec->bv_offset, in zram_bvec_write()
681 bvec->bv_len); in zram_bvec_write()
703 if (!is_partial_io(bvec)) { in zram_bvec_write()
716 if (is_partial_io(bvec)) in zram_bvec_write()
739 if ((clen == PAGE_SIZE) && !is_partial_io(bvec)) { in zram_bvec_write()
768 if (is_partial_io(bvec)) in zram_bvec_write()
812 static int zram_bvec_rw(struct zram *zram, struct bio_vec *bvec, u32 index, in zram_bvec_rw() argument
818 generic_start_io_acct(rw, bvec->bv_len >> SECTOR_SHIFT, in zram_bvec_rw()
823 ret = zram_bvec_read(zram, bvec, index, offset); in zram_bvec_rw()
826 ret = zram_bvec_write(zram, bvec, index, offset); in zram_bvec_rw()
845 struct bio_vec bvec; in __zram_make_request() local
859 bio_for_each_segment(bvec, bio, iter) { in __zram_make_request()
862 if (bvec.bv_len > max_transfer_size) { in __zram_make_request()
869 bv.bv_page = bvec.bv_page; in __zram_make_request()
871 bv.bv_offset = bvec.bv_offset; in __zram_make_request()
876 bv.bv_len = bvec.bv_len - max_transfer_size; in __zram_make_request()
881 if (zram_bvec_rw(zram, &bvec, index, offset, rw) < 0) in __zram_make_request()
884 update_position(&index, &offset, &bvec); in __zram_make_request()