diff mbox series

[v2,2/2] mm/fadvise: use LLONG_MAX instead of -1 for eof

Message ID 20221128155632.3950447-3-bfoster@redhat.com (mailing list archive)
State New
Headers show
Series filemap: skip write and wait if end offset precedes start | expand

Commit Message

Brian Foster Nov. 28, 2022, 3:56 p.m. UTC
generic_fadvise() sets endbyte = -1 to specify end of file (i.e. if
length == 0 is passed from userspace). Most other callers to
filemap_fdatawrite_range() use LLONG_MAX for this purpose,
particularly if they also call fdatawait_range() (which requires end
>= start). For example, sync_file_range(), vfs_fsync() (where the
range is passed down through per-fs ->fsync() callbacks),
filemap_flush(), etc.  generic_fadvise() does not currently wait on
writeback, but fix the call up to be consistent with other callers.

Signed-off-by: Brian Foster <bfoster@redhat.com>
---
 mm/fadvise.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Christoph Hellwig Nov. 30, 2022, 7:46 a.m. UTC | #1
On Mon, Nov 28, 2022 at 10:56:32AM -0500, Brian Foster wrote:
> generic_fadvise() sets endbyte = -1 to specify end of file (i.e. if
> length == 0 is passed from userspace). Most other callers to
> filemap_fdatawrite_range() use LLONG_MAX for this purpose,
> particularly if they also call fdatawait_range() (which requires end
> >= start). For example, sync_file_range(), vfs_fsync() (where the
> range is passed down through per-fs ->fsync() callbacks),
> filemap_flush(), etc.  generic_fadvise() does not currently wait on
> writeback, but fix the call up to be consistent with other callers.

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>
diff mbox series

Patch

diff --git a/mm/fadvise.c b/mm/fadvise.c
index c76ee665355a..bf04fec87f35 100644
--- a/mm/fadvise.c
+++ b/mm/fadvise.c
@@ -72,7 +72,7 @@  int generic_fadvise(struct file *file, loff_t offset, loff_t len, int advice)
 	 */
 	endbyte = (u64)offset + (u64)len;
 	if (!len || endbyte < len)
-		endbyte = -1;
+		endbyte = LLONG_MAX;
 	else
 		endbyte--;		/* inclusive */