Lines Matching refs:bh
66 static long dax_get_addr(struct buffer_head *bh, void **addr, unsigned blkbits) in dax_get_addr() argument
69 sector_t sector = bh->b_blocknr << (blkbits - 9); in dax_get_addr()
70 return bdev_direct_access(bh->b_bdev, sector, addr, &pfn, bh->b_size); in dax_get_addr()
84 static bool buffer_written(struct buffer_head *bh) in buffer_written() argument
86 return buffer_mapped(bh) && !buffer_unwritten(bh); in buffer_written()
96 static bool buffer_size_valid(struct buffer_head *bh) in buffer_size_valid() argument
98 return bh->b_state != 0; in buffer_size_valid()
103 struct buffer_head *bh) in dax_io() argument
124 bh->b_size = PAGE_ALIGN(end - pos); in dax_io()
125 bh->b_state = 0; in dax_io()
126 retval = get_block(inode, block, bh, in dax_io()
130 if (!buffer_size_valid(bh)) in dax_io()
131 bh->b_size = 1 << blkbits; in dax_io()
132 bh_max = pos - first + bh->b_size; in dax_io()
134 unsigned done = bh->b_size - in dax_io()
136 bh->b_blocknr += done >> blkbits; in dax_io()
137 bh->b_size -= done; in dax_io()
140 hole = iov_iter_rw(iter) != WRITE && !buffer_written(bh); in dax_io()
143 size = bh->b_size - first; in dax_io()
145 retval = dax_get_addr(bh, &addr, blkbits); in dax_io()
148 if (buffer_unwritten(bh) || buffer_new(bh)) in dax_io()
195 struct buffer_head bh; in dax_do_io() local
199 memset(&bh, 0, sizeof(bh)); in dax_do_io()
214 retval = dax_io(inode, iter, pos, end, get_block, &bh); in dax_do_io()
220 end_io(iocb, pos, retval, bh.b_private); in dax_do_io()
258 static int copy_user_bh(struct page *to, struct buffer_head *bh, in copy_user_bh() argument
262 if (dax_get_addr(bh, &vfrom, blkbits) < 0) in copy_user_bh()
270 static int dax_insert_mapping(struct inode *inode, struct buffer_head *bh, in dax_insert_mapping() argument
274 sector_t sector = bh->b_blocknr << (inode->i_blkbits - 9); in dax_insert_mapping()
296 error = bdev_direct_access(bh->b_bdev, sector, &addr, &pfn, bh->b_size); in dax_insert_mapping()
304 if (buffer_unwritten(bh) || buffer_new(bh)) in dax_insert_mapping()
322 struct buffer_head bh; in do_dax_fault() local
334 memset(&bh, 0, sizeof(bh)); in do_dax_fault()
336 bh.b_size = PAGE_SIZE; in do_dax_fault()
361 error = get_block(inode, block, &bh, 0); in do_dax_fault()
362 if (!error && (bh.b_size < PAGE_SIZE)) in do_dax_fault()
367 if (!buffer_mapped(&bh) && !buffer_unwritten(&bh) && !vmf->cow_page) { in do_dax_fault()
369 error = get_block(inode, block, &bh, 1); in do_dax_fault()
373 if (!error && (bh.b_size < PAGE_SIZE)) in do_dax_fault()
384 if (buffer_written(&bh)) in do_dax_fault()
385 error = copy_user_bh(new_page, &bh, blkbits, vaddr); in do_dax_fault()
427 error = dax_insert_mapping(inode, &bh, vma, vmf); in do_dax_fault()
428 if (buffer_unwritten(&bh)) in do_dax_fault()
429 complete_unwritten(&bh, !error); in do_dax_fault()
512 struct buffer_head bh; in dax_zero_page_range() local
522 memset(&bh, 0, sizeof(bh)); in dax_zero_page_range()
523 bh.b_size = PAGE_CACHE_SIZE; in dax_zero_page_range()
524 err = get_block(inode, index, &bh, 0); in dax_zero_page_range()
527 if (buffer_written(&bh)) { in dax_zero_page_range()
529 err = dax_get_addr(&bh, &addr, inode->i_blkbits); in dax_zero_page_range()