On 2021/7/2 19:50, Leizhen (ThunderTown) wrote: > > > On 2021/7/2 17:34, Christoph Hellwig wrote: >> We might as well just kill off the length variable while we're at it: > > Hi, Christoph: > Maybe you need to write a separate patch. Because the patch I sent is > to modify function iomap_seek_data(). I didn't look at the other functions. > In fact, both iomap_seek_data() and iomap_seek_hole() need to be modified. > The iomap_seek_data() may not be intuitive to delete the variable 'length'. > > I'm now analyzing if the "if (length <= 0)" statement in iomap_seek_data() > is redundant (the condition is never true). I've thought about it, and that "if" statement can be removed as follows: diff --git a/fs/iomap/seek.c b/fs/iomap/seek.c index dab1b02eba5b..dc55f9ecd948 100644 --- a/fs/iomap/seek.c +++ b/fs/iomap/seek.c @@ -96,14 +96,13 @@ iomap_seek_data(struct inode *inode, loff_t offset, const struct iomap_ops *ops) if (ret < 0) return ret; if (ret == 0) - break; + return offset; offset += ret; length -= ret; } - if (length <= 0) - return -ENXIO; - return offset; + /* The end of the file is reached, and no data is found */ + return -ENXIO; } EXPORT_SYMBOL_GPL(iomap_seek_data); > >> >> >> diff --git a/fs/iomap/seek.c b/fs/iomap/seek.c >> index dab1b02eba5b7f..942e354e9e13e6 100644 >> --- a/fs/iomap/seek.c >> +++ b/fs/iomap/seek.c >> @@ -35,23 +35,21 @@ loff_t >> iomap_seek_hole(struct inode *inode, loff_t offset, const struct iomap_ops *ops) >> { >> loff_t size = i_size_read(inode); >> - loff_t length = size - offset; >> loff_t ret; >> >> /* Nothing to be found before or beyond the end of the file. */ >> if (offset < 0 || offset >= size) >> return -ENXIO; >> >> - while (length > 0) { >> - ret = iomap_apply(inode, offset, length, IOMAP_REPORT, ops, >> - &offset, iomap_seek_hole_actor); >> + while (offset < size) { >> + ret = iomap_apply(inode, offset, size - offset, IOMAP_REPORT, >> + ops, &offset, iomap_seek_hole_actor); >> if (ret < 0) >> return ret; >> if (ret == 0) >> break; >> >> offset += ret; >> - length -= ret; >> } >> >> return offset; >> >> . >>