Home
last modified time | relevance | path

Searched refs:iomap (Results 1 – 25 of 138) sorted by relevance

123456

/linux-6.15/fs/iomap/
H A Dswapfile.c15 struct iomap iomap; /* accumulated iomap */ member
32 struct iomap *iomap = &isi->iomap; in iomap_swapfile_add_extent() local
49 next_ppage = ALIGN_DOWN(iomap->addr + iomap->length, PAGE_SIZE) >> in iomap_swapfile_add_extent()
64 if (iomap->offset == 0) in iomap_swapfile_add_extent()
98 struct iomap *iomap, struct iomap_swapfile_info *isi) in iomap_swapfile_iter() argument
100 switch (iomap->type) { in iomap_swapfile_iter()
124 memcpy(&isi->iomap, iomap, sizeof(isi->iomap)); in iomap_swapfile_iter()
125 } else if (isi->iomap.addr + isi->iomap.length == iomap->addr) { in iomap_swapfile_iter()
127 isi->iomap.length += iomap->length; in iomap_swapfile_iter()
133 memcpy(&isi->iomap, iomap, sizeof(isi->iomap)); in iomap_swapfile_iter()
[all …]
H A Dfiemap.c13 const struct iomap *iomap, u32 flags) in iomap_to_fiemap() argument
15 switch (iomap->type) { in iomap_to_fiemap()
32 if (iomap->flags & IOMAP_F_MERGED) in iomap_to_fiemap()
34 if (iomap->flags & IOMAP_F_SHARED) in iomap_to_fiemap()
37 return fiemap_fill_next_extent(fi, iomap->offset, in iomap_to_fiemap()
38 iomap->addr != IOMAP_NULL_ADDR ? iomap->addr : 0, in iomap_to_fiemap()
39 iomap->length, flags); in iomap_to_fiemap()
47 if (iter->iomap.type == IOMAP_HOLE) in iomap_fiemap_iter()
51 *prev = iter->iomap; in iomap_fiemap_iter()
70 struct iomap prev = { in iomap_fiemap()
[all …]
H A Diter.c13 memset(&iter->iomap, 0, sizeof(iter->iomap)); in iomap_iter_reset_iomap()
33 WARN_ON_ONCE(iter->iomap.offset > iter->pos); in iomap_iter_done()
34 WARN_ON_ONCE(iter->iomap.length == 0); in iomap_iter_done()
35 WARN_ON_ONCE(iter->iomap.offset + iter->iomap.length <= iter->pos); in iomap_iter_done()
36 WARN_ON_ONCE(iter->iomap.flags & IOMAP_F_STALE); in iomap_iter_done()
40 trace_iomap_iter_dstmap(iter->inode, &iter->iomap); in iomap_iter_done()
62 bool stale = iter->iomap.flags & IOMAP_F_STALE; in iomap_iter()
69 if (!iter->iomap.length) in iomap_iter()
83 advanced, iter->flags, &iter->iomap); in iomap_iter()
110 &iter->iomap, &iter->srcmap); in iomap_iter()
H A Dtrace.h18 #define TRACE_SYSTEM iomap
118 TP_PROTO(struct inode *inode, struct iomap *iomap),
119 TP_ARGS(inode, iomap),
133 __entry->addr = iomap->addr;
136 __entry->type = iomap->type;
138 __entry->bdev = iomap->bdev ? iomap->bdev->bd_dev : 0;
154 TP_PROTO(struct inode *inode, struct iomap *iomap), \
155 TP_ARGS(inode, iomap))
161 struct iomap *iomap),
180 __entry->addr = iomap->addr;
[all …]
H A Dbuffered-io.c338 const struct iomap *iomap = iomap_iter_srcmap(iter); in iomap_read_inline_data() local
368 const struct iomap *iomap = &iter->iomap; in iomap_readpage_iter() local
671 size_t poff, size_t plen, const struct iomap *iomap) in iomap_read_folio_sync() argument
868 const struct iomap *iomap = &iter->iomap; in iomap_write_end_inline() local
1045 struct iomap *iomap, iomap_punch_t punch) in iomap_write_delalloc_ifs_punch() argument
1075 struct iomap *iomap, iomap_punch_t punch) in iomap_write_delalloc_punch() argument
1083 iomap); in iomap_write_delalloc_punch()
1117 struct iomap *iomap, iomap_punch_t punch) in iomap_write_delalloc_scan() argument
1263 iomap); in iomap_write_delalloc_release()
1269 struct iomap *iomap = &iter->iomap; in iomap_unshare_iter() local
[all …]
H A Ddirect-io.c321 static inline bool iomap_dio_can_use_fua(const struct iomap *iomap, in iomap_dio_can_use_fua() argument
328 return !bdev_write_cache(iomap->bdev) || bdev_fua(iomap->bdev); in iomap_dio_can_use_fua()
333 const struct iomap *iomap = &iter->iomap; in iomap_dio_bio_iter() local
352 if (iomap->flags & IOMAP_F_ATOMIC_BIO) { in iomap_dio_bio_iter()
363 if (iomap->type == IOMAP_UNWRITTEN) { in iomap_dio_bio_iter()
368 if (iomap->flags & IOMAP_F_SHARED) in iomap_dio_bio_iter()
371 if (iomap->flags & IOMAP_F_NEW) { in iomap_dio_bio_iter()
373 } else if (iomap->type == IOMAP_MAPPED) { in iomap_dio_bio_iter()
374 if (iomap_dio_can_use_fua(iomap, dio)) in iomap_dio_bio_iter()
520 const struct iomap *iomap = &iomi->iomap; in iomap_dio_inline_iter() local
[all …]
H A DMakefile9 obj-$(CONFIG_FS_IOMAP) += iomap.o
11 iomap-y += trace.o \
13 iomap-$(CONFIG_BLOCK) += buffered-io.o \
18 iomap-$(CONFIG_SWAP) += swapfile.o
/linux-6.15/include/linux/
H A Dio-mapping.h51 iomap->base = base; in io_mapping_init_wc()
52 iomap->size = size; in io_mapping_init_wc()
53 iomap->prot = prot; in io_mapping_init_wc()
54 return iomap; in io_mapping_init_wc()
136 if (!iomap->iomem) in io_mapping_init_wc()
143 return iomap; in io_mapping_init_wc()
209 iomap = kmalloc(sizeof(*iomap), GFP_KERNEL); in io_mapping_create_wc()
210 if (!iomap) in io_mapping_create_wc()
214 kfree(iomap); in io_mapping_create_wc()
218 return iomap; in io_mapping_create_wc()
[all …]
H A Diomap.h106 struct iomap { struct
124 return (iomap->addr + pos - iomap->offset) >> SECTOR_SHIFT; in iomap_sector()
132 return iomap->inline_data + pos - iomap->offset; in iomap_inline_data()
205 unsigned flags, struct iomap *iomap,
215 ssize_t written, unsigned flags, struct iomap *iomap);
240 struct iomap iomap; member
260 u64 end = iter->iomap.offset + iter->iomap.length; in iomap_length_trim()
301 return &i->iomap; in iomap_iter_srcmap()
355 struct iomap *iomap);
357 loff_t end_byte, unsigned flags, struct iomap *iomap,
[all …]
/linux-6.15/drivers/ata/
H A Dpata_cs5520.c121 void __iomem *iomap[5]; in cs5520_init_one() local
164 iomap[4] = pcim_iomap(pdev, 2, 0); in cs5520_init_one()
166 if (!iomap[0] || !iomap[1] || !iomap[2] || !iomap[3] || !iomap[4]) in cs5520_init_one()
170 ioaddr->cmd_addr = iomap[0]; in cs5520_init_one()
171 ioaddr->ctl_addr = iomap[1]; in cs5520_init_one()
172 ioaddr->altstatus_addr = iomap[1]; in cs5520_init_one()
173 ioaddr->bmdma_addr = iomap[4]; in cs5520_init_one()
181 ioaddr->cmd_addr = iomap[2]; in cs5520_init_one()
182 ioaddr->ctl_addr = iomap[3]; in cs5520_init_one()
183 ioaddr->altstatus_addr = iomap[3]; in cs5520_init_one()
[all …]
H A Dsata_uli.c135 void __iomem * const *iomap; in uli_init_one() local
166 iomap = host->iomap; in uli_init_one()
177 ioaddr->cmd_addr = iomap[0] + 8; in uli_init_one()
180 ((unsigned long)iomap[1] | ATA_PCI_CTL_OFS) + 4; in uli_init_one()
181 ioaddr->bmdma_addr = iomap[4] + 16; in uli_init_one()
192 ioaddr->cmd_addr = iomap[2] + 8; in uli_init_one()
195 ((unsigned long)iomap[3] | ATA_PCI_CTL_OFS) + 4; in uli_init_one()
196 ioaddr->bmdma_addr = iomap[4] + 24; in uli_init_one()
/linux-6.15/fs/xfs/
H A Dxfs_iomap.c78 const struct iomap *iomap) in xfs_iomap_valid() argument
99 struct iomap *iomap, in xfs_bmbt_to_iomap() argument
161 struct iomap *iomap, in xfs_hole_to_iomap() argument
807 struct iomap *iomap, in xfs_direct_write_iomap_begin() argument
984 struct iomap *iomap, in xfs_zoned_direct_write_iomap_begin() argument
1032 struct iomap *iomap) in xfs_dax_write_iomap_end() argument
1335 struct iomap *iomap, in xfs_zoned_buffered_write_iomap_begin() argument
1505 struct iomap *iomap, in xfs_buffered_write_iomap_begin() argument
1759 struct iomap *iomap) in xfs_buffered_write_delalloc_punch() argument
1777 struct iomap *iomap) in xfs_buffered_write_iomap_end() argument
[all …]
H A Dxfs_aops.c246 if (offset < wpc->iomap.offset || in xfs_imap_valid()
247 offset >= wpc->iomap.offset + wpc->iomap.length) in xfs_imap_valid()
254 if (wpc->iomap.flags & IOMAP_F_SHARED) in xfs_imap_valid()
406 &wpc->iomap, seq); in xfs_map_blocks()
429 if (cow_offset < wpc->iomap.offset + wpc->iomap.length) in xfs_map_blocks()
430 wpc->iomap.length = cow_offset - wpc->iomap.offset; in xfs_map_blocks()
433 ASSERT(wpc->iomap.offset <= offset); in xfs_map_blocks()
434 ASSERT(wpc->iomap.offset + wpc->iomap.length > offset); in xfs_map_blocks()
582 wpc->iomap.type = IOMAP_MAPPED; in xfs_zoned_map_blocks()
583 wpc->iomap.flags = IOMAP_F_DIRTY; in xfs_zoned_map_blocks()
[all …]
H A Dxfs_pnfs.h8 struct iomap *iomap, bool write, u32 *device_generation);
9 int xfs_fs_commit_blocks(struct inode *inode, struct iomap *maps, int nr_maps,
/linux-6.15/fs/gfs2/
H A Dbmap.c585 struct metapath *mp, struct iomap *iomap) in gfs2_hole_size() argument
841 unsigned flags, struct iomap *iomap, in __gfs2_iomap_get() argument
941 iomap->length = size - iomap->offset; in __gfs2_iomap_get()
1010 struct iomap *iomap, in gfs2_iomap_begin_write() argument
1058 iomap->length, flags, iomap, mp); in gfs2_iomap_begin_write()
1094 unsigned flags, struct iomap *iomap, in gfs2_iomap_begin() argument
1219 struct iomap iomap = { }; in gfs2_block_map() local
1255 struct iomap iomap = { }; in gfs2_get_extent() local
1276 struct iomap iomap = { }; in gfs2_alloc_extent() local
1409 struct iomap *iomap) in gfs2_iomap_get() argument
[all …]
H A Dbmap.h53 struct iomap *iomap);
55 struct iomap *iomap);
/linux-6.15/fs/zonefs/
H A Dfile.c29 struct iomap *iomap, struct iomap *srcmap) in zonefs_read_iomap_begin() argument
45 iomap->type = IOMAP_HOLE; in zonefs_read_iomap_begin()
47 iomap->length = length; in zonefs_read_iomap_begin()
49 iomap->type = IOMAP_MAPPED; in zonefs_read_iomap_begin()
50 iomap->addr = (z->z_sector << SECTOR_SHIFT) + iomap->offset; in zonefs_read_iomap_begin()
51 iomap->length = isize - iomap->offset; in zonefs_read_iomap_begin()
66 struct iomap *iomap, struct iomap *srcmap) in zonefs_write_iomap_begin() argument
93 iomap->addr = (z->z_sector << SECTOR_SHIFT) + iomap->offset; in zonefs_write_iomap_begin()
97 iomap->length = z->z_capacity - iomap->offset; in zonefs_write_iomap_begin()
100 iomap->length = isize - iomap->offset; in zonefs_write_iomap_begin()
[all …]
H A Dtrace.h76 TP_PROTO(struct inode *inode, struct iomap *iomap),
77 TP_ARGS(inode, iomap),
88 __entry->addr = iomap->addr;
89 __entry->offset = iomap->offset;
90 __entry->length = iomap->length;
/linux-6.15/fs/erofs/
H A Ddata.c251 unsigned int flags, struct iomap *iomap, struct iomap *srcmap) in erofs_iomap_begin() argument
273 iomap->offset = map.m_la; in erofs_iomap_begin()
277 iomap->bdev = mdev.m_bdev; in erofs_iomap_begin()
279 iomap->flags = 0; in erofs_iomap_begin()
280 iomap->private = NULL; in erofs_iomap_begin()
283 iomap->type = IOMAP_HOLE; in erofs_iomap_begin()
285 if (!iomap->length) in erofs_iomap_begin()
286 iomap->length = length; in erofs_iomap_begin()
298 iomap->inline_data = ptr; in erofs_iomap_begin()
302 iomap->addr = mdev.m_pa; in erofs_iomap_begin()
[all …]
/linux-6.15/fs/nfsd/
H A Dblocklayout.c28 struct iomap iomap; in nfsd4_block_proc_layoutget() local
61 switch (iomap.type) { in nfsd4_block_proc_layoutget()
67 bex->soff = iomap.addr; in nfsd4_block_proc_layoutget()
80 bex->soff = iomap.addr; in nfsd4_block_proc_layoutget()
99 bex->foff = iomap.offset; in nfsd4_block_proc_layoutget()
100 bex->len = iomap.length; in nfsd4_block_proc_layoutget()
102 seg->offset = iomap.offset; in nfsd4_block_proc_layoutget()
103 seg->length = iomap.length; in nfsd4_block_proc_layoutget()
118 struct iomap *iomaps, int nr_iomaps) in nfsd4_block_commit_blocks()
179 struct iomap *iomaps; in nfsd4_block_proc_layoutcommit()
[all …]
/linux-6.15/Documentation/filesystems/iomap/
H A Dporting.rst20 There are several reasons to convert a filesystem to iomap:
31 2. Large folios are only supported via iomap; there are no plans to
35 supported via iomap.
42 filesystem using iomap.
54 ``->iomap_end`` if necessary) to allow iomap to obtain a read-only
71 can be tested without needing to implement any iomap APIs.
88 per-operation iomap ops with smaller, more cohesive functions.
94 iomap ops for write operations.
108 interface with iomap and folios.
111 converted to use iomap.
[all …]
H A Ddesign.rst73 At a high level, an iomap operation `looks like this
94 <https://kernelnewbies.org/KernelProjects/iomap>`_.
98 of the interfaces presented by iomap.
151 ``struct iomap``
160 struct iomap {
304 unsigned flags, struct iomap *iomap,
305 struct iomap *srcmap);
309 struct iomap *iomap);
345 single iomap mapping.
391 iomap only handles mapping and I/O.
[all …]
/linux-6.15/fs/
H A Ddax.c1011 static pgoff_t dax_iomap_pgoff(const struct iomap *iomap, loff_t pos) in dax_iomap_pgoff() argument
1013 return PHYS_PFN(iomap->addr + (pos & PAGE_MASK) - iomap->offset); in dax_iomap_pgoff()
1448 struct iomap *iomap = &iter->iomap; in dax_unshare_iter() local
1521 const struct iomap *iomap = &iter->iomap; in dax_memzero() local
1544 const struct iomap *iomap = &iter->iomap; in dax_zero_iter() local
1622 const struct iomap *iomap = &iomi->iomap; in dax_iomap_iter() local
1639 if (iomap->type == IOMAP_HOLE || iomap->type == IOMAP_UNWRITTEN) { in dax_iomap_iter()
1846 const struct iomap *iomap = &iter->iomap; in dax_fault_iter() local
1862 (iomap->type == IOMAP_UNWRITTEN || iomap->type == IOMAP_HOLE)) { in dax_fault_iter()
2201 const struct iomap *smap = &it_src->iomap; in dax_range_compare_iter()
[all …]
/linux-6.15/fs/fuse/
H A Ddax.c389 static void fuse_fill_iomap_hole(struct iomap *iomap, loff_t length) in fuse_fill_iomap_hole() argument
397 struct iomap *iomap, struct fuse_dax_mapping *dmap, in fuse_fill_iomap() argument
434 struct iomap *iomap) in fuse_setup_new_dax_mapping() argument
502 struct iomap *iomap) in fuse_upgrade_dax_mapping() argument
563 unsigned int flags, struct iomap *iomap, in fuse_iomap_begin() argument
577 iomap->offset = pos; in fuse_iomap_begin()
578 iomap->flags = 0; in fuse_iomap_begin()
579 iomap->bdev = NULL; in fuse_iomap_begin()
608 flags, iomap); in fuse_iomap_begin()
622 iomap); in fuse_iomap_begin()
[all …]
/linux-6.15/fs/hpfs/
H A Dfile.c121 unsigned flags, struct iomap *iomap, struct iomap *srcmap) in hpfs_iomap_begin() argument
131 iomap->bdev = inode->i_sb->s_bdev; in hpfs_iomap_begin()
132 iomap->offset = offset; in hpfs_iomap_begin()
143 iomap->type = IOMAP_MAPPED; in hpfs_iomap_begin()
144 iomap->flags = IOMAP_F_MERGED; in hpfs_iomap_begin()
145 iomap->addr = (u64)s << blkbits; in hpfs_iomap_begin()
146 iomap->length = (u64)n_secs << blkbits; in hpfs_iomap_begin()
148 iomap->type = IOMAP_HOLE; in hpfs_iomap_begin()
149 iomap->addr = IOMAP_NULL_ADDR; in hpfs_iomap_begin()
150 iomap->length = 1 << blkbits; in hpfs_iomap_begin()

123456