Lines Matching refs:ioend
38 static inline bool xfs_ioend_is_append(struct iomap_ioend *ioend)
40 return ioend->io_offset + ioend->io_size >
41 XFS_I(ioend->io_inode)->i_disk_size;
84 struct iomap_ioend *ioend)
86 struct xfs_inode *ip = XFS_I(ioend->io_inode);
88 xfs_off_t offset = ioend->io_offset;
89 size_t size = ioend->io_size;
110 * I/O error. The delalloc punch is required because this ioend was
115 error = blk_status_to_errno(ioend->io_bio->bi_status);
117 if (ioend->io_flags & IOMAP_F_SHARED) {
128 if (ioend->io_flags & IOMAP_F_SHARED)
130 else if (ioend->io_type == IOMAP_UNWRITTEN)
133 if (!error && xfs_ioend_is_append(ioend))
134 error = xfs_setfilesize(ip, ioend->io_offset, ioend->io_size);
136 iomap_finish_ioends(ioend, error);
149 * The ioend chain length that we can be processing here is largely unbound in
150 * length and we may have to perform significant amounts of work on each ioend
160 struct iomap_ioend *ioend;
169 while ((ioend = list_first_entry_or_null(&tmp, struct iomap_ioend,
171 list_del_init(&ioend->io_list);
172 iomap_ioend_try_merge(ioend, &tmp);
173 xfs_end_ioend(ioend);
182 struct iomap_ioend *ioend = bio->bi_private;
183 struct xfs_inode *ip = XFS_I(ioend->io_inode);
190 list_add_tail(&ioend->io_list, &ip->i_ioend_list);
424 struct iomap_ioend *ioend,
437 if (!status && (ioend->io_flags & IOMAP_F_SHARED)) {
438 status = xfs_reflink_convert_cow(XFS_I(ioend->io_inode),
439 ioend->io_offset, ioend->io_size);
445 if (xfs_ioend_is_append(ioend) || ioend->io_type == IOMAP_UNWRITTEN ||
446 (ioend->io_flags & IOMAP_F_SHARED))
447 ioend->io_bio->bi_end_io = xfs_end_bio;