mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-15 09:03:59 +08:00
iomap: switch iomap_swapfile_activate to use iomap_iter
Switch iomap_swapfile_activate to use iomap_iter. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
parent
c4740bf1ed
commit
3d99a1ce38
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user