Lines Matching refs:io_end

125 static void ext4_release_io_end(ext4_io_end_t *io_end)  in ext4_release_io_end()  argument
129 BUG_ON(!list_empty(&io_end->list)); in ext4_release_io_end()
130 BUG_ON(io_end->flag & EXT4_IO_END_UNWRITTEN); in ext4_release_io_end()
131 WARN_ON(io_end->handle); in ext4_release_io_end()
133 for (bio = io_end->bio; bio; bio = next_bio) { in ext4_release_io_end()
138 kmem_cache_free(io_end_cachep, io_end); in ext4_release_io_end()
199 static void ext4_add_complete_io(ext4_io_end_t *io_end) in ext4_add_complete_io() argument
201 struct ext4_inode_info *ei = EXT4_I(io_end->inode); in ext4_add_complete_io()
202 struct ext4_sb_info *sbi = EXT4_SB(io_end->inode->i_sb); in ext4_add_complete_io()
207 WARN_ON(!(io_end->flag & EXT4_IO_END_UNWRITTEN)); in ext4_add_complete_io()
208 WARN_ON(!io_end->handle && sbi->s_journal); in ext4_add_complete_io()
213 list_add_tail(&io_end->list, &ei->i_rsv_conversion_list); in ext4_add_complete_io()
264 void ext4_put_io_end_defer(ext4_io_end_t *io_end) in ext4_put_io_end_defer() argument
266 if (atomic_dec_and_test(&io_end->count)) { in ext4_put_io_end_defer()
267 if (!(io_end->flag & EXT4_IO_END_UNWRITTEN) || !io_end->size) { in ext4_put_io_end_defer()
268 ext4_release_io_end(io_end); in ext4_put_io_end_defer()
271 ext4_add_complete_io(io_end); in ext4_put_io_end_defer()
275 int ext4_put_io_end(ext4_io_end_t *io_end) in ext4_put_io_end() argument
279 if (atomic_dec_and_test(&io_end->count)) { in ext4_put_io_end()
280 if (io_end->flag & EXT4_IO_END_UNWRITTEN) { in ext4_put_io_end()
281 err = ext4_convert_unwritten_extents(io_end->handle, in ext4_put_io_end()
282 io_end->inode, io_end->offset, in ext4_put_io_end()
283 io_end->size); in ext4_put_io_end()
284 io_end->handle = NULL; in ext4_put_io_end()
285 ext4_clear_io_unwritten_flag(io_end); in ext4_put_io_end()
287 ext4_release_io_end(io_end); in ext4_put_io_end()
292 ext4_io_end_t *ext4_get_io_end(ext4_io_end_t *io_end) in ext4_get_io_end() argument
294 atomic_inc(&io_end->count); in ext4_get_io_end()
295 return io_end; in ext4_get_io_end()
301 ext4_io_end_t *io_end = bio->bi_private; in ext4_end_bio() local
305 if (WARN_ONCE(!io_end, "io_end is NULL: %s: sector %Lu len %u err %d\n", in ext4_end_bio()
317 struct inode *inode = io_end->inode; in ext4_end_bio()
322 (unsigned long long) io_end->offset, in ext4_end_bio()
323 (long) io_end->size, in ext4_end_bio()
330 if (io_end->flag & EXT4_IO_END_UNWRITTEN) { in ext4_end_bio()
336 bio->bi_private = xchg(&io_end->bio, bio); in ext4_end_bio()
337 ext4_put_io_end_defer(io_end); in ext4_end_bio()
343 ext4_put_io_end_defer(io_end); in ext4_end_bio()
356 io->io_bio->bi_write_hint = io->io_end->inode->i_write_hint; in ext4_io_submit()
368 io->io_end = NULL; in ext4_io_submit_init()
383 bio->bi_private = ext4_get_io_end(io->io_end); in io_submit_init_bio()