Skip to content

Commit 4d7bd0e

Browse files
author
Matthew Wilcox (Oracle)
committed
iomap: Inline __iomap_zero_iter into its caller
To make the merge easier, replicate the inlining of __iomap_zero_iter() into iomap_zero_iter() that is currently in the nvdimm tree. Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]>
1 parent 6795801 commit 4d7bd0e

File tree

1 file changed

+27
-28
lines changed

1 file changed

+27
-28
lines changed

fs/iomap/buffered-io.c

Lines changed: 27 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -895,27 +895,6 @@ iomap_file_unshare(struct inode *inode, loff_t pos, loff_t len,
895895
}
896896
EXPORT_SYMBOL_GPL(iomap_file_unshare);
897897

898-
static s64 __iomap_zero_iter(struct iomap_iter *iter, loff_t pos, u64 length)
899-
{
900-
struct folio *folio;
901-
int status;
902-
size_t offset;
903-
size_t bytes = min_t(u64, SIZE_MAX, length);
904-
905-
status = iomap_write_begin(iter, pos, bytes, &folio);
906-
if (status)
907-
return status;
908-
909-
offset = offset_in_folio(folio, pos);
910-
if (bytes > folio_size(folio) - offset)
911-
bytes = folio_size(folio) - offset;
912-
913-
folio_zero_range(folio, offset, bytes);
914-
folio_mark_accessed(folio);
915-
916-
return iomap_write_end(iter, pos, bytes, bytes, folio);
917-
}
918-
919898
static loff_t iomap_zero_iter(struct iomap_iter *iter, bool *did_zero)
920899
{
921900
struct iomap *iomap = &iter->iomap;
@@ -929,14 +908,34 @@ static loff_t iomap_zero_iter(struct iomap_iter *iter, bool *did_zero)
929908
return length;
930909

931910
do {
932-
s64 bytes;
911+
struct folio *folio;
912+
int status;
913+
size_t offset;
914+
size_t bytes = min_t(u64, SIZE_MAX, length);
915+
916+
if (IS_DAX(iter->inode)) {
917+
s64 tmp = dax_iomap_zero(pos, bytes, iomap);
918+
if (tmp < 0)
919+
return tmp;
920+
bytes = tmp;
921+
goto good;
922+
}
933923

934-
if (IS_DAX(iter->inode))
935-
bytes = dax_iomap_zero(pos, length, iomap);
936-
else
937-
bytes = __iomap_zero_iter(iter, pos, length);
938-
if (bytes < 0)
939-
return bytes;
924+
status = iomap_write_begin(iter, pos, bytes, &folio);
925+
if (status)
926+
return status;
927+
928+
offset = offset_in_folio(folio, pos);
929+
if (bytes > folio_size(folio) - offset)
930+
bytes = folio_size(folio) - offset;
931+
932+
folio_zero_range(folio, offset, bytes);
933+
folio_mark_accessed(folio);
934+
935+
bytes = iomap_write_end(iter, pos, bytes, bytes, folio);
936+
good:
937+
if (WARN_ON_ONCE(bytes == 0))
938+
return -EIO;
940939

941940
pos += bytes;
942941
length -= bytes;

0 commit comments

Comments
 (0)