Lines Matching refs:io
161 static int ext4_end_io(ext4_io_end_t *io) in ext4_end_io() argument
163 struct inode *inode = io->inode; in ext4_end_io()
164 loff_t offset = io->offset; in ext4_end_io()
165 ssize_t size = io->size; in ext4_end_io()
166 handle_t *handle = io->handle; in ext4_end_io()
171 io, inode->i_ino, io->list.next, io->list.prev); in ext4_end_io()
173 io->handle = NULL; /* Following call will use up the handle */ in ext4_end_io()
182 ext4_clear_io_unwritten_flag(io); in ext4_end_io()
183 ext4_release_io_end(io); in ext4_end_io()
191 ext4_io_end_t *io, *io0, *io1; in dump_completed_IO() local
197 list_for_each_entry(io, head, list) { in dump_completed_IO()
198 cur = &io->list; in dump_completed_IO()
205 io, inode->i_ino, io0, io1); in dump_completed_IO()
232 ext4_io_end_t *io; in ext4_do_flush_completed_IO() local
244 io = list_entry(unwritten.next, ext4_io_end_t, list); in ext4_do_flush_completed_IO()
245 BUG_ON(!(io->flag & EXT4_IO_END_UNWRITTEN)); in ext4_do_flush_completed_IO()
246 list_del_init(&io->list); in ext4_do_flush_completed_IO()
248 err = ext4_end_io(io); in ext4_do_flush_completed_IO()
267 ext4_io_end_t *io = kmem_cache_zalloc(io_end_cachep, flags); in ext4_init_io_end() local
268 if (io) { in ext4_init_io_end()
270 io->inode = inode; in ext4_init_io_end()
271 INIT_LIST_HEAD(&io->list); in ext4_init_io_end()
272 atomic_set(&io->count, 1); in ext4_init_io_end()
274 return io; in ext4_init_io_end()
352 void ext4_io_submit(struct ext4_io_submit *io) in ext4_io_submit() argument
354 struct bio *bio = io->io_bio; in ext4_io_submit()
357 int io_op = io->io_wbc->sync_mode == WB_SYNC_ALL ? in ext4_io_submit()
359 bio_get(io->io_bio); in ext4_io_submit()
360 submit_bio(io_op, io->io_bio); in ext4_io_submit()
361 bio_put(io->io_bio); in ext4_io_submit()
363 io->io_bio = NULL; in ext4_io_submit()
366 void ext4_io_submit_init(struct ext4_io_submit *io, in ext4_io_submit_init() argument
369 io->io_wbc = wbc; in ext4_io_submit_init()
370 io->io_bio = NULL; in ext4_io_submit_init()
371 io->io_end = NULL; in ext4_io_submit_init()
374 static int io_submit_init_bio(struct ext4_io_submit *io, in io_submit_init_bio() argument
382 wbc_init_bio(io->io_wbc, bio); in io_submit_init_bio()
386 bio->bi_private = ext4_get_io_end(io->io_end); in io_submit_init_bio()
387 io->io_bio = bio; in io_submit_init_bio()
388 io->io_next_block = bh->b_blocknr; in io_submit_init_bio()
392 static int io_submit_add_bh(struct ext4_io_submit *io, in io_submit_add_bh() argument
399 if (io->io_bio && bh->b_blocknr != io->io_next_block) { in io_submit_add_bh()
401 ext4_io_submit(io); in io_submit_add_bh()
403 if (io->io_bio == NULL) { in io_submit_add_bh()
404 ret = io_submit_init_bio(io, bh); in io_submit_add_bh()
408 ret = bio_add_page(io->io_bio, page, bh->b_size, bh_offset(bh)); in io_submit_add_bh()
411 wbc_account_io(io->io_wbc, page, bh->b_size); in io_submit_add_bh()
412 io->io_next_block++; in io_submit_add_bh()
416 int ext4_bio_write_page(struct ext4_io_submit *io, in ext4_bio_write_page() argument
472 if (io->io_bio) in ext4_bio_write_page()
473 ext4_io_submit(io); in ext4_bio_write_page()
500 ret = io_submit_add_bh(io, inode, in ext4_bio_write_page()