Lines Matching refs:io
147 static int ext4_end_io(ext4_io_end_t *io) in ext4_end_io() argument
149 struct inode *inode = io->inode; in ext4_end_io()
150 loff_t offset = io->offset; in ext4_end_io()
151 ssize_t size = io->size; in ext4_end_io()
152 handle_t *handle = io->handle; in ext4_end_io()
157 io, inode->i_ino, io->list.next, io->list.prev); in ext4_end_io()
159 io->handle = NULL; /* Following call will use up the handle */ in ext4_end_io()
168 ext4_clear_io_unwritten_flag(io); in ext4_end_io()
169 ext4_release_io_end(io); in ext4_end_io()
177 ext4_io_end_t *io, *io0, *io1; in dump_completed_IO() local
183 list_for_each_entry(io, head, list) { in dump_completed_IO()
184 cur = &io->list; in dump_completed_IO()
191 io, inode->i_ino, io0, io1); in dump_completed_IO()
218 ext4_io_end_t *io; in ext4_do_flush_completed_IO() local
230 io = list_entry(unwritten.next, ext4_io_end_t, list); in ext4_do_flush_completed_IO()
231 BUG_ON(!(io->flag & EXT4_IO_END_UNWRITTEN)); in ext4_do_flush_completed_IO()
232 list_del_init(&io->list); in ext4_do_flush_completed_IO()
234 err = ext4_end_io(io); in ext4_do_flush_completed_IO()
253 ext4_io_end_t *io = kmem_cache_zalloc(io_end_cachep, flags); in ext4_init_io_end() local
254 if (io) { in ext4_init_io_end()
255 io->inode = inode; in ext4_init_io_end()
256 INIT_LIST_HEAD(&io->list); in ext4_init_io_end()
257 atomic_set(&io->count, 1); in ext4_init_io_end()
259 return io; in ext4_init_io_end()
347 void ext4_io_submit(struct ext4_io_submit *io) in ext4_io_submit() argument
349 struct bio *bio = io->io_bio; in ext4_io_submit()
352 int io_op_flags = io->io_wbc->sync_mode == WB_SYNC_ALL ? in ext4_io_submit()
354 io->io_bio->bi_write_hint = io->io_end->inode->i_write_hint; in ext4_io_submit()
355 bio_set_op_attrs(io->io_bio, REQ_OP_WRITE, io_op_flags); in ext4_io_submit()
356 submit_bio(io->io_bio); in ext4_io_submit()
358 io->io_bio = NULL; in ext4_io_submit()
361 void ext4_io_submit_init(struct ext4_io_submit *io, in ext4_io_submit_init() argument
364 io->io_wbc = wbc; in ext4_io_submit_init()
365 io->io_bio = NULL; in ext4_io_submit_init()
366 io->io_end = NULL; in ext4_io_submit_init()
369 static int io_submit_init_bio(struct ext4_io_submit *io, in io_submit_init_bio() argument
377 wbc_init_bio(io->io_wbc, bio); in io_submit_init_bio()
381 bio->bi_private = ext4_get_io_end(io->io_end); in io_submit_init_bio()
382 io->io_bio = bio; in io_submit_init_bio()
383 io->io_next_block = bh->b_blocknr; in io_submit_init_bio()
387 static int io_submit_add_bh(struct ext4_io_submit *io, in io_submit_add_bh() argument
394 if (io->io_bio && bh->b_blocknr != io->io_next_block) { in io_submit_add_bh()
396 ext4_io_submit(io); in io_submit_add_bh()
398 if (io->io_bio == NULL) { in io_submit_add_bh()
399 ret = io_submit_init_bio(io, bh); in io_submit_add_bh()
402 io->io_bio->bi_write_hint = inode->i_write_hint; in io_submit_add_bh()
404 ret = bio_add_page(io->io_bio, page, bh->b_size, bh_offset(bh)); in io_submit_add_bh()
407 wbc_account_io(io->io_wbc, page, bh->b_size); in io_submit_add_bh()
408 io->io_next_block++; in io_submit_add_bh()
412 int ext4_bio_write_page(struct ext4_io_submit *io, in ext4_bio_write_page() argument
466 if (io->io_bio) in ext4_bio_write_page()
467 ext4_io_submit(io); in ext4_bio_write_page()
490 if (io->io_bio) { in ext4_bio_write_page()
491 ext4_io_submit(io); in ext4_bio_write_page()
506 ret = io_submit_add_bh(io, inode, in ext4_bio_write_page()