Lines Matching refs:ioend
36 static inline bool xfs_ioend_is_append(struct iomap_ioend *ioend)
38 return ioend->io_offset + ioend->io_size >
39 XFS_I(ioend->io_inode)->i_d.di_size;
90 struct iomap_ioend *ioend,
93 struct xfs_inode *ip = XFS_I(ioend->io_inode);
94 struct xfs_trans *tp = ioend->io_private;
110 return __xfs_setfilesize(ip, tp, ioend->io_offset, ioend->io_size);
118 struct iomap_ioend *ioend)
120 struct xfs_inode *ip = XFS_I(ioend->io_inode);
122 xfs_off_t offset = ioend->io_offset;
123 size_t size = ioend->io_size;
144 * I/O error. The delalloc punch is required because this ioend was
149 error = blk_status_to_errno(ioend->io_bio->bi_status);
151 if (ioend->io_flags & IOMAP_F_SHARED) {
163 if (ioend->io_flags & IOMAP_F_SHARED)
165 else if (ioend->io_type == IOMAP_UNWRITTEN)
168 if (!error && xfs_ioend_is_append(ioend))
169 error = xfs_setfilesize(ip, ioend->io_offset, ioend->io_size);
171 iomap_finish_ioends(ioend, error);
176 * If the to be merged ioend has a preallocated transaction for file
177 * size updates we need to ensure the ioend it is merged into also
183 struct iomap_ioend *ioend,
186 if (!ioend->io_private) {
187 ioend->io_private = next->io_private;
201 struct iomap_ioend *ioend;
210 while ((ioend = list_first_entry_or_null(&tmp, struct iomap_ioend,
212 list_del_init(&ioend->io_list);
213 iomap_ioend_try_merge(ioend, &tmp, xfs_ioend_merge_private);
214 xfs_end_ioend(ioend);
218 static inline bool xfs_ioend_needs_workqueue(struct iomap_ioend *ioend)
220 return xfs_ioend_is_append(ioend) ||
221 ioend->io_type == IOMAP_UNWRITTEN ||
222 (ioend->io_flags & IOMAP_F_SHARED);
229 struct iomap_ioend *ioend = bio->bi_private;
230 struct xfs_inode *ip = XFS_I(ioend->io_inode);
237 list_add_tail(&ioend->io_list, &ip->i_ioend_list);
464 struct iomap_ioend *ioend,
477 if (!status && (ioend->io_flags & IOMAP_F_SHARED)) {
478 status = xfs_reflink_convert_cow(XFS_I(ioend->io_inode),
479 ioend->io_offset, ioend->io_size);
484 if (xfs_ioend_needs_workqueue(ioend))
485 ioend->io_bio->bi_end_io = xfs_end_bio;