Lines Matching refs:iomap

582 			  struct metapath *mp, struct iomap *iomap)  in gfs2_hole_size()  argument
597 iomap->length = hole_size << inode->i_blkbits; in gfs2_hole_size()
658 static int __gfs2_iomap_alloc(struct inode *inode, struct iomap *iomap, in __gfs2_iomap_alloc() argument
666 size_t dblks = iomap->length >> inode->i_blkbits; in __gfs2_iomap_alloc()
762 iomap->addr = bn << inode->i_blkbits; in __gfs2_iomap_alloc()
763 iomap->flags |= IOMAP_F_MERGED | IOMAP_F_NEW; in __gfs2_iomap_alloc()
768 } while (iomap->addr == IOMAP_NULL_ADDR); in __gfs2_iomap_alloc()
770 iomap->type = IOMAP_MAPPED; in __gfs2_iomap_alloc()
771 iomap->length = (u64)dblks << inode->i_blkbits; in __gfs2_iomap_alloc()
838 unsigned flags, struct iomap *iomap, in __gfs2_iomap_get() argument
869 iomap->length = max_size; in __gfs2_iomap_get()
876 iomap->offset = pos; in __gfs2_iomap_get()
877 iomap->length = length; in __gfs2_iomap_get()
881 iomap->length = size; in __gfs2_iomap_get()
883 iomap->addr = (ip->i_no_addr << inode->i_blkbits) + in __gfs2_iomap_get()
885 iomap->type = IOMAP_INLINE; in __gfs2_iomap_get()
886 iomap->inline_data = dibh->b_data + sizeof(struct gfs2_dinode); in __gfs2_iomap_get()
892 iomap->offset = lblock << inode->i_blkbits; in __gfs2_iomap_get()
895 iomap->length = len << inode->i_blkbits; in __gfs2_iomap_get()
918 iomap->addr = be64_to_cpu(*ptr) << inode->i_blkbits; in __gfs2_iomap_get()
919 iomap->length = len << inode->i_blkbits; in __gfs2_iomap_get()
920 iomap->type = IOMAP_MAPPED; in __gfs2_iomap_get()
921 iomap->flags |= IOMAP_F_MERGED; in __gfs2_iomap_get()
923 iomap->flags |= IOMAP_F_GFS2_BOUNDARY; in __gfs2_iomap_get()
926 iomap->bdev = inode->i_sb->s_bdev; in __gfs2_iomap_get()
936 ret = gfs2_hole_size(inode, lblock, len, mp, iomap); in __gfs2_iomap_get()
938 iomap->length = size - iomap->offset; in __gfs2_iomap_get()
947 if (alloc_size < iomap->length) in __gfs2_iomap_get()
948 iomap->length = alloc_size; in __gfs2_iomap_get()
951 ret = gfs2_hole_size(inode, lblock, len, mp, iomap); in __gfs2_iomap_get()
954 iomap->addr = IOMAP_NULL_ADDR; in __gfs2_iomap_get()
955 iomap->type = IOMAP_HOLE; in __gfs2_iomap_get()
1007 struct iomap *iomap, in gfs2_iomap_begin_write() argument
1018 if (unstuff || iomap->type == IOMAP_HOLE) { in gfs2_iomap_begin_write()
1024 gfs2_write_calc_reserv(ip, iomap->length, &data_blocks, in gfs2_iomap_begin_write()
1045 iomap->length >> inode->i_blkbits); in gfs2_iomap_begin_write()
1054 ret = __gfs2_iomap_get(inode, iomap->offset, in gfs2_iomap_begin_write()
1055 iomap->length, flags, iomap, mp); in gfs2_iomap_begin_write()
1060 if (iomap->type == IOMAP_HOLE) { in gfs2_iomap_begin_write()
1061 ret = __gfs2_iomap_alloc(inode, iomap, mp); in gfs2_iomap_begin_write()
1065 punch_hole(ip, iomap->offset, iomap->length); in gfs2_iomap_begin_write()
1078 iomap->folio_ops = &gfs2_iomap_folio_ops; in gfs2_iomap_begin_write()
1091 unsigned flags, struct iomap *iomap, in gfs2_iomap_begin() argument
1092 struct iomap *srcmap) in gfs2_iomap_begin()
1099 iomap->flags |= IOMAP_F_BUFFER_HEAD; in gfs2_iomap_begin()
1102 ret = __gfs2_iomap_get(inode, pos, length, flags, iomap, &mp); in gfs2_iomap_begin()
1113 if (iomap->type != IOMAP_MAPPED) in gfs2_iomap_begin()
1119 if (iomap->type == IOMAP_HOLE) in gfs2_iomap_begin()
1126 ret = gfs2_iomap_begin_write(inode, pos, length, flags, iomap, &mp); in gfs2_iomap_begin()
1130 trace_gfs2_iomap_end(ip, iomap, ret); in gfs2_iomap_begin()
1135 ssize_t written, unsigned flags, struct iomap *iomap) in gfs2_iomap_end() argument
1146 if (iomap->type == IOMAP_HOLE) in gfs2_iomap_end()
1164 if (length != written && (iomap->flags & IOMAP_F_NEW)) { in gfs2_iomap_end()
1167 loff_t hend = iomap->offset + iomap->length; in gfs2_iomap_end()
1178 if (iomap->flags & IOMAP_F_SIZE_CHANGED) in gfs2_iomap_end()
1216 struct iomap iomap = { }; in gfs2_block_map() local
1225 ret = gfs2_iomap_get(inode, pos, length, &iomap); in gfs2_block_map()
1227 ret = gfs2_iomap_alloc(inode, pos, length, &iomap); in gfs2_block_map()
1231 if (iomap.length > bh_map->b_size) { in gfs2_block_map()
1232 iomap.length = bh_map->b_size; in gfs2_block_map()
1233 iomap.flags &= ~IOMAP_F_GFS2_BOUNDARY; in gfs2_block_map()
1235 if (iomap.addr != IOMAP_NULL_ADDR) in gfs2_block_map()
1236 map_bh(bh_map, inode->i_sb, iomap.addr >> inode->i_blkbits); in gfs2_block_map()
1237 bh_map->b_size = iomap.length; in gfs2_block_map()
1238 if (iomap.flags & IOMAP_F_GFS2_BOUNDARY) in gfs2_block_map()
1240 if (iomap.flags & IOMAP_F_NEW) in gfs2_block_map()
1252 struct iomap iomap = { }; in gfs2_get_extent() local
1257 &iomap); in gfs2_get_extent()
1260 if (iomap.type != IOMAP_MAPPED) in gfs2_get_extent()
1262 *dblock = iomap.addr >> blkbits; in gfs2_get_extent()
1263 len = iomap.length >> blkbits; in gfs2_get_extent()
1273 struct iomap iomap = { }; in gfs2_alloc_extent() local
1278 &iomap); in gfs2_alloc_extent()
1281 if (iomap.type != IOMAP_MAPPED) in gfs2_alloc_extent()
1283 *dblock = iomap.addr >> blkbits; in gfs2_alloc_extent()
1284 len = iomap.length >> blkbits; in gfs2_alloc_extent()
1287 *new = iomap.flags & IOMAP_F_NEW; in gfs2_alloc_extent()
1405 struct iomap *iomap) in gfs2_iomap_get() argument
1410 ret = __gfs2_iomap_get(inode, pos, length, 0, iomap, &mp); in gfs2_iomap_get()
1416 struct iomap *iomap) in gfs2_iomap_alloc() argument
1421 ret = __gfs2_iomap_get(inode, pos, length, IOMAP_WRITE, iomap, &mp); in gfs2_iomap_alloc()
1422 if (!ret && iomap->type == IOMAP_HOLE) in gfs2_iomap_alloc()
1423 ret = __gfs2_iomap_alloc(inode, iomap, &mp); in gfs2_iomap_alloc()
2472 if (offset >= wpc->iomap.offset && in gfs2_map_blocks()
2473 offset < wpc->iomap.offset + wpc->iomap.length) in gfs2_map_blocks()
2476 memset(&wpc->iomap, 0, sizeof(wpc->iomap)); in gfs2_map_blocks()
2477 ret = gfs2_iomap_get(inode, offset, INT_MAX, &wpc->iomap); in gfs2_map_blocks()