mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
iomap: simplify iomap_iter_advance()
Most callers of iomap_iter_advance() do not need the remaining length returned. Get rid of the extra iomap_length() call that iomap_iter_advance() does. Signed-off-by: Joanne Koong <joannelkoong@gmail.com> Reviewed-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
committed by
Christian Brauner
parent
3a86608788
commit
ca82a7ea22
30
fs/dax.c
30
fs/dax.c
@@ -1507,7 +1507,7 @@ static int dax_zero_iter(struct iomap_iter *iter, bool *did_zero)
|
||||
|
||||
/* already zeroed? we're done. */
|
||||
if (srcmap->type == IOMAP_HOLE || srcmap->type == IOMAP_UNWRITTEN)
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
|
||||
/*
|
||||
* invalidate the pages whose sharing state is to be changed
|
||||
@@ -1536,10 +1536,10 @@ static int dax_zero_iter(struct iomap_iter *iter, bool *did_zero)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = iomap_iter_advance(iter, &length);
|
||||
ret = iomap_iter_advance(iter, length);
|
||||
if (ret)
|
||||
return ret;
|
||||
} while (length > 0);
|
||||
} while ((length = iomap_length(iter)) > 0);
|
||||
|
||||
if (did_zero)
|
||||
*did_zero = true;
|
||||
@@ -1597,7 +1597,7 @@ static int dax_iomap_iter(struct iomap_iter *iomi, struct iov_iter *iter)
|
||||
|
||||
if (iomap->type == IOMAP_HOLE || iomap->type == IOMAP_UNWRITTEN) {
|
||||
done = iov_iter_zero(min(length, end - pos), iter);
|
||||
return iomap_iter_advance(iomi, &done);
|
||||
return iomap_iter_advance(iomi, done);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1681,12 +1681,12 @@ static int dax_iomap_iter(struct iomap_iter *iomi, struct iov_iter *iter)
|
||||
xfer = dax_copy_to_iter(dax_dev, pgoff, kaddr,
|
||||
map_len, iter);
|
||||
|
||||
length = xfer;
|
||||
ret = iomap_iter_advance(iomi, &length);
|
||||
ret = iomap_iter_advance(iomi, xfer);
|
||||
if (!ret && xfer == 0)
|
||||
ret = -EFAULT;
|
||||
if (xfer < map_len)
|
||||
break;
|
||||
length = iomap_length(iomi);
|
||||
}
|
||||
dax_read_unlock(id);
|
||||
|
||||
@@ -1919,10 +1919,8 @@ static vm_fault_t dax_iomap_pte_fault(struct vm_fault *vmf, unsigned long *pfnp,
|
||||
ret |= VM_FAULT_MAJOR;
|
||||
}
|
||||
|
||||
if (!(ret & VM_FAULT_ERROR)) {
|
||||
u64 length = PAGE_SIZE;
|
||||
iter.status = iomap_iter_advance(&iter, &length);
|
||||
}
|
||||
if (!(ret & VM_FAULT_ERROR))
|
||||
iter.status = iomap_iter_advance(&iter, PAGE_SIZE);
|
||||
}
|
||||
|
||||
if (iomap_errp)
|
||||
@@ -2034,10 +2032,8 @@ static vm_fault_t dax_iomap_pmd_fault(struct vm_fault *vmf, unsigned long *pfnp,
|
||||
continue; /* actually breaks out of the loop */
|
||||
|
||||
ret = dax_fault_iter(vmf, &iter, pfnp, &xas, &entry, true);
|
||||
if (ret != VM_FAULT_FALLBACK) {
|
||||
u64 length = PMD_SIZE;
|
||||
iter.status = iomap_iter_advance(&iter, &length);
|
||||
}
|
||||
if (ret != VM_FAULT_FALLBACK)
|
||||
iter.status = iomap_iter_advance(&iter, PMD_SIZE);
|
||||
}
|
||||
|
||||
unlock_entry:
|
||||
@@ -2163,7 +2159,6 @@ static int dax_range_compare_iter(struct iomap_iter *it_src,
|
||||
const struct iomap *smap = &it_src->iomap;
|
||||
const struct iomap *dmap = &it_dest->iomap;
|
||||
loff_t pos1 = it_src->pos, pos2 = it_dest->pos;
|
||||
u64 dest_len;
|
||||
void *saddr, *daddr;
|
||||
int id, ret;
|
||||
|
||||
@@ -2196,10 +2191,9 @@ static int dax_range_compare_iter(struct iomap_iter *it_src,
|
||||
dax_read_unlock(id);
|
||||
|
||||
advance:
|
||||
dest_len = len;
|
||||
ret = iomap_iter_advance(it_src, &len);
|
||||
ret = iomap_iter_advance(it_src, len);
|
||||
if (!ret)
|
||||
ret = iomap_iter_advance(it_dest, &dest_len);
|
||||
ret = iomap_iter_advance(it_dest, len);
|
||||
return ret;
|
||||
|
||||
out_unlock:
|
||||
|
||||
@@ -376,7 +376,7 @@ static int iomap_readpage_iter(struct iomap_iter *iter,
|
||||
ret = iomap_read_inline_data(iter, folio);
|
||||
if (ret)
|
||||
return ret;
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
}
|
||||
|
||||
/* zero post-eof blocks as the page may be mapped */
|
||||
@@ -437,7 +437,7 @@ done:
|
||||
* iteration.
|
||||
*/
|
||||
length = pos - iter->pos + plen;
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
}
|
||||
|
||||
static int iomap_read_folio_iter(struct iomap_iter *iter,
|
||||
@@ -1041,7 +1041,7 @@ retry:
|
||||
}
|
||||
} else {
|
||||
total_written += written;
|
||||
iomap_iter_advance(iter, &written);
|
||||
iomap_iter_advance(iter, written);
|
||||
}
|
||||
} while (iov_iter_count(i) && iomap_length(iter));
|
||||
|
||||
@@ -1310,7 +1310,7 @@ static int iomap_unshare_iter(struct iomap_iter *iter,
|
||||
int status;
|
||||
|
||||
if (!iomap_want_unshare_iter(iter))
|
||||
return iomap_iter_advance(iter, &bytes);
|
||||
return iomap_iter_advance(iter, bytes);
|
||||
|
||||
do {
|
||||
struct folio *folio;
|
||||
@@ -1334,10 +1334,10 @@ static int iomap_unshare_iter(struct iomap_iter *iter,
|
||||
|
||||
balance_dirty_pages_ratelimited(iter->inode->i_mapping);
|
||||
|
||||
status = iomap_iter_advance(iter, &bytes);
|
||||
status = iomap_iter_advance(iter, bytes);
|
||||
if (status)
|
||||
break;
|
||||
} while (bytes > 0);
|
||||
} while ((bytes = iomap_length(iter)) > 0);
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -1412,10 +1412,10 @@ static int iomap_zero_iter(struct iomap_iter *iter, bool *did_zero,
|
||||
if (WARN_ON_ONCE(!ret))
|
||||
return -EIO;
|
||||
|
||||
status = iomap_iter_advance(iter, &bytes);
|
||||
status = iomap_iter_advance(iter, bytes);
|
||||
if (status)
|
||||
break;
|
||||
} while (bytes > 0);
|
||||
} while ((bytes = iomap_length(iter)) > 0);
|
||||
|
||||
if (did_zero)
|
||||
*did_zero = true;
|
||||
@@ -1526,7 +1526,7 @@ static int iomap_folio_mkwrite_iter(struct iomap_iter *iter,
|
||||
folio_mark_dirty(folio);
|
||||
}
|
||||
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
}
|
||||
|
||||
vm_fault_t iomap_page_mkwrite(struct vm_fault *vmf, const struct iomap_ops *ops,
|
||||
|
||||
@@ -496,7 +496,7 @@ out:
|
||||
/* Undo iter limitation to current extent */
|
||||
iov_iter_reexpand(dio->submit.iter, orig_count - copied);
|
||||
if (copied)
|
||||
return iomap_iter_advance(iter, &copied);
|
||||
return iomap_iter_advance(iter, copied);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -507,7 +507,7 @@ static int iomap_dio_hole_iter(struct iomap_iter *iter, struct iomap_dio *dio)
|
||||
dio->size += length;
|
||||
if (!length)
|
||||
return -EFAULT;
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
}
|
||||
|
||||
static int iomap_dio_inline_iter(struct iomap_iter *iomi, struct iomap_dio *dio)
|
||||
@@ -542,7 +542,7 @@ static int iomap_dio_inline_iter(struct iomap_iter *iomi, struct iomap_dio *dio)
|
||||
dio->size += copied;
|
||||
if (!copied)
|
||||
return -EFAULT;
|
||||
return iomap_iter_advance(iomi, &copied);
|
||||
return iomap_iter_advance(iomi, copied);
|
||||
}
|
||||
|
||||
static int iomap_dio_iter(struct iomap_iter *iter, struct iomap_dio *dio)
|
||||
|
||||
@@ -13,17 +13,13 @@ static inline void iomap_iter_reset_iomap(struct iomap_iter *iter)
|
||||
memset(&iter->srcmap, 0, sizeof(iter->srcmap));
|
||||
}
|
||||
|
||||
/*
|
||||
* Advance the current iterator position and output the length remaining for the
|
||||
* current mapping.
|
||||
*/
|
||||
int iomap_iter_advance(struct iomap_iter *iter, u64 *count)
|
||||
/* Advance the current iterator position and decrement the remaining length */
|
||||
int iomap_iter_advance(struct iomap_iter *iter, u64 count)
|
||||
{
|
||||
if (WARN_ON_ONCE(*count > iomap_length(iter)))
|
||||
if (WARN_ON_ONCE(count > iomap_length(iter)))
|
||||
return -EIO;
|
||||
iter->pos += *count;
|
||||
iter->len -= *count;
|
||||
*count = iomap_length(iter);
|
||||
iter->pos += count;
|
||||
iter->len -= count;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,13 +16,13 @@ static int iomap_seek_hole_iter(struct iomap_iter *iter,
|
||||
*hole_pos = mapping_seek_hole_data(iter->inode->i_mapping,
|
||||
iter->pos, iter->pos + length, SEEK_HOLE);
|
||||
if (*hole_pos == iter->pos + length)
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
return 0;
|
||||
case IOMAP_HOLE:
|
||||
*hole_pos = iter->pos;
|
||||
return 0;
|
||||
default:
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,12 +59,12 @@ static int iomap_seek_data_iter(struct iomap_iter *iter,
|
||||
|
||||
switch (iter->iomap.type) {
|
||||
case IOMAP_HOLE:
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
case IOMAP_UNWRITTEN:
|
||||
*hole_pos = mapping_seek_hole_data(iter->inode->i_mapping,
|
||||
iter->pos, iter->pos + length, SEEK_DATA);
|
||||
if (*hole_pos < 0)
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, length);
|
||||
return 0;
|
||||
default:
|
||||
*hole_pos = iter->pos;
|
||||
|
||||
@@ -245,7 +245,7 @@ struct iomap_iter {
|
||||
};
|
||||
|
||||
int iomap_iter(struct iomap_iter *iter, const struct iomap_ops *ops);
|
||||
int iomap_iter_advance(struct iomap_iter *iter, u64 *count);
|
||||
int iomap_iter_advance(struct iomap_iter *iter, u64 count);
|
||||
|
||||
/**
|
||||
* iomap_length_trim - trimmed length of the current iomap iteration
|
||||
@@ -282,9 +282,7 @@ static inline u64 iomap_length(const struct iomap_iter *iter)
|
||||
*/
|
||||
static inline int iomap_iter_advance_full(struct iomap_iter *iter)
|
||||
{
|
||||
u64 length = iomap_length(iter);
|
||||
|
||||
return iomap_iter_advance(iter, &length);
|
||||
return iomap_iter_advance(iter, iomap_length(iter));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user