Unverified Commit aacd436e authored by John Garry's avatar John Garry Committed by Christian Brauner
Browse files

iomap: comment on atomic write checks in iomap_dio_bio_iter()



Help explain the code.

Also clarify the comment for bio size check.

Signed-off-by: default avatarJohn Garry <john.g.garry@oracle.com>
Link: https://lore.kernel.org/r/20250320120250.4087011-3-john.g.garry@oracle.com


Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent d279c80e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -350,6 +350,11 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, struct iomap_dio *dio)
		bio_opf |= REQ_OP_WRITE;

		if (iter->flags & IOMAP_ATOMIC_HW) {
			/*
			 * Ensure that the mapping covers the full write
			 * length, otherwise it won't be submitted as a single
			 * bio, which is required to use hardware atomics.
			 */
			if (length != iter->len)
				return -EINVAL;
			bio_opf |= REQ_ATOMIC;
@@ -449,7 +454,7 @@ static int iomap_dio_bio_iter(struct iomap_iter *iter, struct iomap_dio *dio)
		n = bio->bi_iter.bi_size;
		if (WARN_ON_ONCE((bio_opf & REQ_ATOMIC) && n != length)) {
			/*
			 * This bio should have covered the complete length,
			 * An atomic write bio must cover the complete length,
			 * which it doesn't, so error. We may need to zero out
			 * the tail (complete FS block), similar to when
			 * bio_iov_iter_get_pages() returns an error, above.