Message ID | 20210809061244.1196573-23-hch@lst.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/30] iomap: fix a trivial comment typo in trace.h | expand |
On Mon, Aug 09, 2021 at 08:12:36AM +0200, Christoph Hellwig wrote: > Switch iomap_swapfile_activate to use iomap_iter. > > Signed-off-by: Christoph Hellwig <hch@lst.de> Smooooooth Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > fs/iomap/swapfile.c | 38 ++++++++++++++++---------------------- > 1 file changed, 16 insertions(+), 22 deletions(-) > > diff --git a/fs/iomap/swapfile.c b/fs/iomap/swapfile.c > index 6250ca6a1f851d..7069606eca85b2 100644 > --- a/fs/iomap/swapfile.c > +++ b/fs/iomap/swapfile.c > @@ -88,13 +88,9 @@ static int iomap_swapfile_fail(struct iomap_swapfile_info *isi, const char *str) > * swap only cares about contiguous page-aligned physical extents and makes no > * distinction between written and unwritten extents. > */ > -static loff_t iomap_swapfile_activate_actor(struct inode *inode, loff_t pos, > - loff_t count, void *data, struct iomap *iomap, > - struct iomap *srcmap) > +static loff_t iomap_swapfile_iter(const struct iomap_iter *iter, > + struct iomap *iomap, struct iomap_swapfile_info *isi) > { > - struct iomap_swapfile_info *isi = data; > - int error; > - > switch (iomap->type) { > case IOMAP_MAPPED: > case IOMAP_UNWRITTEN: > @@ -125,12 +121,12 @@ static loff_t iomap_swapfile_activate_actor(struct inode *inode, loff_t pos, > isi->iomap.length += iomap->length; > } else { > /* Otherwise, add the retained iomap and store this one. */ > - error = iomap_swapfile_add_extent(isi); > + int error = iomap_swapfile_add_extent(isi); > if (error) > return error; > memcpy(&isi->iomap, iomap, sizeof(isi->iomap)); > } > - return count; > + return iomap_length(iter); > } > > /* > @@ -141,16 +137,19 @@ int iomap_swapfile_activate(struct swap_info_struct *sis, > struct file *swap_file, sector_t *pagespan, > const struct iomap_ops *ops) > { > + struct inode *inode = swap_file->f_mapping->host; > + struct iomap_iter iter = { > + .inode = inode, > + .pos = 0, > + .len = ALIGN_DOWN(i_size_read(inode), PAGE_SIZE), > + .flags = IOMAP_REPORT, > + }; > struct iomap_swapfile_info isi = { > .sis = sis, > .lowest_ppage = (sector_t)-1ULL, > .file = swap_file, > }; > - struct address_space *mapping = swap_file->f_mapping; > - struct inode *inode = mapping->host; > - loff_t pos = 0; > - loff_t len = ALIGN_DOWN(i_size_read(inode), PAGE_SIZE); > - loff_t ret; > + int ret; > > /* > * Persist all file mapping metadata so that we won't have any > @@ -160,15 +159,10 @@ int iomap_swapfile_activate(struct swap_info_struct *sis, > if (ret) > return ret; > > - while (len > 0) { > - ret = iomap_apply(inode, pos, len, IOMAP_REPORT, > - ops, &isi, iomap_swapfile_activate_actor); > - if (ret <= 0) > - return ret; > - > - pos += ret; > - len -= ret; > - } > + while ((ret = iomap_iter(&iter, ops)) > 0) > + iter.processed = iomap_swapfile_iter(&iter, &iter.iomap, &isi); > + if (ret < 0) > + return ret; > > if (isi.iomap.length) { > ret = iomap_swapfile_add_extent(&isi); > -- > 2.30.2 >
diff --git a/fs/iomap/swapfile.c b/fs/iomap/swapfile.c index 6250ca6a1f851d..7069606eca85b2 100644 --- a/fs/iomap/swapfile.c +++ b/fs/iomap/swapfile.c @@ -88,13 +88,9 @@ static int iomap_swapfile_fail(struct iomap_swapfile_info *isi, const char *str) * swap only cares about contiguous page-aligned physical extents and makes no * distinction between written and unwritten extents. */ -static loff_t iomap_swapfile_activate_actor(struct inode *inode, loff_t pos, - loff_t count, void *data, struct iomap *iomap, - struct iomap *srcmap) +static loff_t iomap_swapfile_iter(const struct iomap_iter *iter, + struct iomap *iomap, struct iomap_swapfile_info *isi) { - struct iomap_swapfile_info *isi = data; - int error; - switch (iomap->type) { case IOMAP_MAPPED: case IOMAP_UNWRITTEN: @@ -125,12 +121,12 @@ static loff_t iomap_swapfile_activate_actor(struct inode *inode, loff_t pos, isi->iomap.length += iomap->length; } else { /* Otherwise, add the retained iomap and store this one. */ - error = iomap_swapfile_add_extent(isi); + int error = iomap_swapfile_add_extent(isi); if (error) return error; memcpy(&isi->iomap, iomap, sizeof(isi->iomap)); } - return count; + return iomap_length(iter); } /* @@ -141,16 +137,19 @@ int iomap_swapfile_activate(struct swap_info_struct *sis, struct file *swap_file, sector_t *pagespan, const struct iomap_ops *ops) { + struct inode *inode = swap_file->f_mapping->host; + struct iomap_iter iter = { + .inode = inode, + .pos = 0, + .len = ALIGN_DOWN(i_size_read(inode), PAGE_SIZE), + .flags = IOMAP_REPORT, + }; struct iomap_swapfile_info isi = { .sis = sis, .lowest_ppage = (sector_t)-1ULL, .file = swap_file, }; - struct address_space *mapping = swap_file->f_mapping; - struct inode *inode = mapping->host; - loff_t pos = 0; - loff_t len = ALIGN_DOWN(i_size_read(inode), PAGE_SIZE); - loff_t ret; + int ret; /* * Persist all file mapping metadata so that we won't have any @@ -160,15 +159,10 @@ int iomap_swapfile_activate(struct swap_info_struct *sis, if (ret) return ret; - while (len > 0) { - ret = iomap_apply(inode, pos, len, IOMAP_REPORT, - ops, &isi, iomap_swapfile_activate_actor); - if (ret <= 0) - return ret; - - pos += ret; - len -= ret; - } + while ((ret = iomap_iter(&iter, ops)) > 0) + iter.processed = iomap_swapfile_iter(&iter, &iter.iomap, &isi); + if (ret < 0) + return ret; if (isi.iomap.length) { ret = iomap_swapfile_add_extent(&isi);
Switch iomap_swapfile_activate to use iomap_iter. Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/iomap/swapfile.c | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-)