[PATCH] iomap: provide iomap_want_unshare_iter() stub for !CONFIG_BLOCK

Arnd Bergmann posted 1 patch 1 month, 1 week ago
include/linux/iomap.h | 7 +++++++
1 file changed, 7 insertions(+)
[PATCH] iomap: provide iomap_want_unshare_iter() stub for !CONFIG_BLOCK
Posted by Arnd Bergmann 1 month, 1 week ago
From: Arnd Bergmann <arnd@arndb.de>

When block device support is disabled, DAX fails to link with:

aarch64-linux/bin/aarch64-linux-ld: fs/dax.o: in function `dax_file_unshare':
dax.c:(.text+0x2694): undefined reference to `iomap_want_unshare_iter'

Return false in this case, as far as I can tell, this cannot happen
without block devices.

Fixes: 6ef6a0e821d3 ("iomap: share iomap_unshare_iter predicate code with fsdax")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 include/linux/iomap.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/include/linux/iomap.h b/include/linux/iomap.h
index e04c060e8fe1..84ec2b7419c5 100644
--- a/include/linux/iomap.h
+++ b/include/linux/iomap.h
@@ -281,7 +281,14 @@ void iomap_invalidate_folio(struct folio *folio, size_t offset, size_t len);
 bool iomap_dirty_folio(struct address_space *mapping, struct folio *folio);
 int iomap_file_unshare(struct inode *inode, loff_t pos, loff_t len,
 		const struct iomap_ops *ops);
+#ifdef CONFIG_BLOCK
 bool iomap_want_unshare_iter(const struct iomap_iter *iter);
+#else
+static inline bool iomap_want_unshare_iter(const struct iomap_iter *iter)
+{
+	return false;
+}
+#endif
 int iomap_zero_range(struct inode *inode, loff_t pos, loff_t len,
 		bool *did_zero, const struct iomap_ops *ops);
 int iomap_truncate_page(struct inode *inode, loff_t pos, bool *did_zero,
-- 
2.39.5
Re: [PATCH] iomap: provide iomap_want_unshare_iter() stub for !CONFIG_BLOCK
Posted by Ritesh Harjani (IBM) 1 month, 1 week ago
Arnd Bergmann <arnd@kernel.org> writes:

> From: Arnd Bergmann <arnd@arndb.de>
>
> When block device support is disabled, DAX fails to link with:
>
> aarch64-linux/bin/aarch64-linux-ld: fs/dax.o: in function `dax_file_unshare':
> dax.c:(.text+0x2694): undefined reference to `iomap_want_unshare_iter'
>
> Return false in this case, as far as I can tell, this cannot happen
> without block devices.
>
> Fixes: 6ef6a0e821d3 ("iomap: share iomap_unshare_iter predicate code with fsdax")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Looks like a fix was submitted already for this [1]

[1]: https://lore.kernel.org/all/20241015041350.118403-1-hch@lst.de/

-ritesh

> ---
>  include/linux/iomap.h | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/include/linux/iomap.h b/include/linux/iomap.h
> index e04c060e8fe1..84ec2b7419c5 100644
> --- a/include/linux/iomap.h
> +++ b/include/linux/iomap.h
> @@ -281,7 +281,14 @@ void iomap_invalidate_folio(struct folio *folio, size_t offset, size_t len);
>  bool iomap_dirty_folio(struct address_space *mapping, struct folio *folio);
>  int iomap_file_unshare(struct inode *inode, loff_t pos, loff_t len,
>  		const struct iomap_ops *ops);
> +#ifdef CONFIG_BLOCK
>  bool iomap_want_unshare_iter(const struct iomap_iter *iter);
> +#else
> +static inline bool iomap_want_unshare_iter(const struct iomap_iter *iter)
> +{
> +	return false;
> +}
> +#endif
>  int iomap_zero_range(struct inode *inode, loff_t pos, loff_t len,
>  		bool *did_zero, const struct iomap_ops *ops);
>  int iomap_truncate_page(struct inode *inode, loff_t pos, bool *did_zero,
> -- 
> 2.39.5