Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Joanne Koong and committed by
Christian Brauner
ca82a7ea 3a866087

+35 -47
+12 -18
fs/dax.c
··· 1507 1507 1508 1508 /* already zeroed? we're done. */ 1509 1509 if (srcmap->type == IOMAP_HOLE || srcmap->type == IOMAP_UNWRITTEN) 1510 - return iomap_iter_advance(iter, &length); 1510 + return iomap_iter_advance(iter, length); 1511 1511 1512 1512 /* 1513 1513 * invalidate the pages whose sharing state is to be changed ··· 1536 1536 if (ret < 0) 1537 1537 return ret; 1538 1538 1539 - ret = iomap_iter_advance(iter, &length); 1539 + ret = iomap_iter_advance(iter, length); 1540 1540 if (ret) 1541 1541 return ret; 1542 - } while (length > 0); 1542 + } while ((length = iomap_length(iter)) > 0); 1543 1543 1544 1544 if (did_zero) 1545 1545 *did_zero = true; ··· 1597 1597 1598 1598 if (iomap->type == IOMAP_HOLE || iomap->type == IOMAP_UNWRITTEN) { 1599 1599 done = iov_iter_zero(min(length, end - pos), iter); 1600 - return iomap_iter_advance(iomi, &done); 1600 + return iomap_iter_advance(iomi, done); 1601 1601 } 1602 1602 } 1603 1603 ··· 1681 1681 xfer = dax_copy_to_iter(dax_dev, pgoff, kaddr, 1682 1682 map_len, iter); 1683 1683 1684 - length = xfer; 1685 - ret = iomap_iter_advance(iomi, &length); 1684 + ret = iomap_iter_advance(iomi, xfer); 1686 1685 if (!ret && xfer == 0) 1687 1686 ret = -EFAULT; 1688 1687 if (xfer < map_len) 1689 1688 break; 1689 + length = iomap_length(iomi); 1690 1690 } 1691 1691 dax_read_unlock(id); 1692 1692 ··· 1919 1919 ret |= VM_FAULT_MAJOR; 1920 1920 } 1921 1921 1922 - if (!(ret & VM_FAULT_ERROR)) { 1923 - u64 length = PAGE_SIZE; 1924 - iter.status = iomap_iter_advance(&iter, &length); 1925 - } 1922 + if (!(ret & VM_FAULT_ERROR)) 1923 + iter.status = iomap_iter_advance(&iter, PAGE_SIZE); 1926 1924 } 1927 1925 1928 1926 if (iomap_errp) ··· 2032 2034 continue; /* actually breaks out of the loop */ 2033 2035 2034 2036 ret = dax_fault_iter(vmf, &iter, pfnp, &xas, &entry, true); 2035 - if (ret != VM_FAULT_FALLBACK) { 2036 - u64 length = PMD_SIZE; 2037 - iter.status = iomap_iter_advance(&iter, &length); 2038 - } 2037 + if (ret != VM_FAULT_FALLBACK) 2038 + iter.status = iomap_iter_advance(&iter, PMD_SIZE); 2039 2039 } 2040 2040 2041 2041 unlock_entry: ··· 2159 2163 const struct iomap *smap = &it_src->iomap; 2160 2164 const struct iomap *dmap = &it_dest->iomap; 2161 2165 loff_t pos1 = it_src->pos, pos2 = it_dest->pos; 2162 - u64 dest_len; 2163 2166 void *saddr, *daddr; 2164 2167 int id, ret; 2165 2168 ··· 2191 2196 dax_read_unlock(id); 2192 2197 2193 2198 advance: 2194 - dest_len = len; 2195 - ret = iomap_iter_advance(it_src, &len); 2199 + ret = iomap_iter_advance(it_src, len); 2196 2200 if (!ret) 2197 - ret = iomap_iter_advance(it_dest, &dest_len); 2201 + ret = iomap_iter_advance(it_dest, len); 2198 2202 return ret; 2199 2203 2200 2204 out_unlock:
+9 -9
fs/iomap/buffered-io.c
··· 376 376 ret = iomap_read_inline_data(iter, folio); 377 377 if (ret) 378 378 return ret; 379 - return iomap_iter_advance(iter, &length); 379 + return iomap_iter_advance(iter, length); 380 380 } 381 381 382 382 /* zero post-eof blocks as the page may be mapped */ ··· 437 437 * iteration. 438 438 */ 439 439 length = pos - iter->pos + plen; 440 - return iomap_iter_advance(iter, &length); 440 + return iomap_iter_advance(iter, length); 441 441 } 442 442 443 443 static int iomap_read_folio_iter(struct iomap_iter *iter, ··· 1041 1041 } 1042 1042 } else { 1043 1043 total_written += written; 1044 - iomap_iter_advance(iter, &written); 1044 + iomap_iter_advance(iter, written); 1045 1045 } 1046 1046 } while (iov_iter_count(i) && iomap_length(iter)); 1047 1047 ··· 1310 1310 int status; 1311 1311 1312 1312 if (!iomap_want_unshare_iter(iter)) 1313 - return iomap_iter_advance(iter, &bytes); 1313 + return iomap_iter_advance(iter, bytes); 1314 1314 1315 1315 do { 1316 1316 struct folio *folio; ··· 1334 1334 1335 1335 balance_dirty_pages_ratelimited(iter->inode->i_mapping); 1336 1336 1337 - status = iomap_iter_advance(iter, &bytes); 1337 + status = iomap_iter_advance(iter, bytes); 1338 1338 if (status) 1339 1339 break; 1340 - } while (bytes > 0); 1340 + } while ((bytes = iomap_length(iter)) > 0); 1341 1341 1342 1342 return status; 1343 1343 } ··· 1412 1412 if (WARN_ON_ONCE(!ret)) 1413 1413 return -EIO; 1414 1414 1415 - status = iomap_iter_advance(iter, &bytes); 1415 + status = iomap_iter_advance(iter, bytes); 1416 1416 if (status) 1417 1417 break; 1418 - } while (bytes > 0); 1418 + } while ((bytes = iomap_length(iter)) > 0); 1419 1419 1420 1420 if (did_zero) 1421 1421 *did_zero = true; ··· 1526 1526 folio_mark_dirty(folio); 1527 1527 } 1528 1528 1529 - return iomap_iter_advance(iter, &length); 1529 + return iomap_iter_advance(iter, length); 1530 1530 } 1531 1531 1532 1532 vm_fault_t iomap_page_mkwrite(struct vm_fault *vmf, const struct iomap_ops *ops,
+3 -3
fs/iomap/direct-io.c
··· 496 496 /* Undo iter limitation to current extent */ 497 497 iov_iter_reexpand(dio->submit.iter, orig_count - copied); 498 498 if (copied) 499 - return iomap_iter_advance(iter, &copied); 499 + return iomap_iter_advance(iter, copied); 500 500 return ret; 501 501 } 502 502 ··· 507 507 dio->size += length; 508 508 if (!length) 509 509 return -EFAULT; 510 - return iomap_iter_advance(iter, &length); 510 + return iomap_iter_advance(iter, length); 511 511 } 512 512 513 513 static int iomap_dio_inline_iter(struct iomap_iter *iomi, struct iomap_dio *dio) ··· 542 542 dio->size += copied; 543 543 if (!copied) 544 544 return -EFAULT; 545 - return iomap_iter_advance(iomi, &copied); 545 + return iomap_iter_advance(iomi, copied); 546 546 } 547 547 548 548 static int iomap_dio_iter(struct iomap_iter *iter, struct iomap_dio *dio)
+5 -9
fs/iomap/iter.c
··· 13 13 memset(&iter->srcmap, 0, sizeof(iter->srcmap)); 14 14 } 15 15 16 - /* 17 - * Advance the current iterator position and output the length remaining for the 18 - * current mapping. 19 - */ 20 - int iomap_iter_advance(struct iomap_iter *iter, u64 *count) 16 + /* Advance the current iterator position and decrement the remaining length */ 17 + int iomap_iter_advance(struct iomap_iter *iter, u64 count) 21 18 { 22 - if (WARN_ON_ONCE(*count > iomap_length(iter))) 19 + if (WARN_ON_ONCE(count > iomap_length(iter))) 23 20 return -EIO; 24 - iter->pos += *count; 25 - iter->len -= *count; 26 - *count = iomap_length(iter); 21 + iter->pos += count; 22 + iter->len -= count; 27 23 return 0; 28 24 } 29 25
+4 -4
fs/iomap/seek.c
··· 16 16 *hole_pos = mapping_seek_hole_data(iter->inode->i_mapping, 17 17 iter->pos, iter->pos + length, SEEK_HOLE); 18 18 if (*hole_pos == iter->pos + length) 19 - return iomap_iter_advance(iter, &length); 19 + return iomap_iter_advance(iter, length); 20 20 return 0; 21 21 case IOMAP_HOLE: 22 22 *hole_pos = iter->pos; 23 23 return 0; 24 24 default: 25 - return iomap_iter_advance(iter, &length); 25 + return iomap_iter_advance(iter, length); 26 26 } 27 27 } 28 28 ··· 59 59 60 60 switch (iter->iomap.type) { 61 61 case IOMAP_HOLE: 62 - return iomap_iter_advance(iter, &length); 62 + return iomap_iter_advance(iter, length); 63 63 case IOMAP_UNWRITTEN: 64 64 *hole_pos = mapping_seek_hole_data(iter->inode->i_mapping, 65 65 iter->pos, iter->pos + length, SEEK_DATA); 66 66 if (*hole_pos < 0) 67 - return iomap_iter_advance(iter, &length); 67 + return iomap_iter_advance(iter, length); 68 68 return 0; 69 69 default: 70 70 *hole_pos = iter->pos;
+2 -4
include/linux/iomap.h
··· 245 245 }; 246 246 247 247 int iomap_iter(struct iomap_iter *iter, const struct iomap_ops *ops); 248 - int iomap_iter_advance(struct iomap_iter *iter, u64 *count); 248 + int iomap_iter_advance(struct iomap_iter *iter, u64 count); 249 249 250 250 /** 251 251 * iomap_length_trim - trimmed length of the current iomap iteration ··· 282 282 */ 283 283 static inline int iomap_iter_advance_full(struct iomap_iter *iter) 284 284 { 285 - u64 length = iomap_length(iter); 286 - 287 - return iomap_iter_advance(iter, &length); 285 + return iomap_iter_advance(iter, iomap_length(iter)); 288 286 } 289 287 290 288 /**