Thread (21 messages) 21 messages, 4 authors, 2021-01-22

Re: [PATCH 10/11] iomap: add a IOMAP_DIO_OVERWRITE_ONLY flag

From: Dave Chinner <david@fromorbit.com>
Date: 2021-01-21 09:35:40
Also in: linux-fsdevel

On Thu, Jan 21, 2021 at 09:59:05AM +0100, Christoph Hellwig wrote:
Add a flag to signal an only pure overwrites are allowed.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/iomap/direct-io.c  | 7 +++++++
 include/linux/iomap.h | 8 ++++++++
 2 files changed, 15 insertions(+)
IOMAP_DIO_OVERWRITE_ONLY is a much better name compared to all the
other alternatives that were suggested. :)
quoted hunk ↗ jump to hunk
diff --git a/fs/iomap/direct-io.c b/fs/iomap/direct-io.c
index 947343730e2c93..65d32364345d22 100644
--- a/fs/iomap/direct-io.c
+++ b/fs/iomap/direct-io.c
@@ -485,6 +485,13 @@ __iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
 		iomap_flags |= IOMAP_NOWAIT;
 	}
 
+	if (dio_flags & IOMAP_DIO_OVERWRITE_ONLY) {
+		ret = -EAGAIN;
+		if (pos >= dio->i_size || pos + count > dio->i_size)
+			goto out_free_dio;
+		iomap_flags |= IOMAP_OVERWRITE_ONLY;
+	}
+
 	ret = filemap_write_and_wait_range(mapping, pos, end);
 	if (ret)
 		goto out_free_dio;
diff --git a/include/linux/iomap.h b/include/linux/iomap.h
index be4e1e1e01e801..cfa20afd7d5b87 100644
--- a/include/linux/iomap.h
+++ b/include/linux/iomap.h
@@ -122,6 +122,7 @@ struct iomap_page_ops {
 #define IOMAP_FAULT		(1 << 3) /* mapping for page fault */
 #define IOMAP_DIRECT		(1 << 4) /* direct I/O */
 #define IOMAP_NOWAIT		(1 << 5) /* do not block */
+#define IOMAP_OVERWRITE_ONLY	(1 << 6) /* purely overwrites allowed */
Nit: s/purely/pure/

But otherwise good.

Reviewed-by: Dave Chinner <redacted>

-- 
Dave Chinner
david@fromorbit.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help