2020-07-07 00:28:59

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the xfs tree

Hi all,

After merging the xfs tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

ld: fs/xfs/xfs_buf_item.o: in function `.xfs_buf_dquot_iodone':
xfs_buf_item.c:(.text+0x21a0): undefined reference to `.xfs_dquot_done'

Caused by commit

018dc1667913 ("xfs: use direct calls for dquot IO completion")

# CONFIG_XFS_QUOTA is not set

I have used the xfs tree from next-20200706 for today.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2020-07-07 02:29:06

by Dave Chinner

[permalink] [raw]
Subject: [PATCH] xfs: fix non-quota build breakage


From: Dave Chinner <[email protected]>

Oops, I forgot that you can config out quotas because nobody
ever does that when they build XFS anymore.

Fixes: 018dc1667913 ("xfs: use direct calls for dquot IO completion")

Signed-off-by: Dave Chinner <[email protected]>
---
fs/xfs/xfs_dquot.h | 1 -
fs/xfs/xfs_quota.h | 9 +++++++++
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/fs/xfs/xfs_dquot.h b/fs/xfs/xfs_dquot.h
index fe9cc3e08ed6..71e36c85e20b 100644
--- a/fs/xfs/xfs_dquot.h
+++ b/fs/xfs/xfs_dquot.h
@@ -174,7 +174,6 @@ void xfs_qm_dqput(struct xfs_dquot *dqp);
void xfs_dqlock2(struct xfs_dquot *, struct xfs_dquot *);

void xfs_dquot_set_prealloc_limits(struct xfs_dquot *);
-void xfs_dquot_done(struct xfs_buf *);

static inline struct xfs_dquot *xfs_qm_dqhold(struct xfs_dquot *dqp)
{
diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h
index aa8fc1f55fbd..c92ae5e02ce8 100644
--- a/fs/xfs/xfs_quota.h
+++ b/fs/xfs/xfs_quota.h
@@ -13,6 +13,7 @@
*/

struct xfs_trans;
+struct xfs_buf;

/*
* This check is done typically without holding the inode lock;
@@ -107,6 +108,8 @@ extern void xfs_qm_mount_quotas(struct xfs_mount *);
extern void xfs_qm_unmount(struct xfs_mount *);
extern void xfs_qm_unmount_quotas(struct xfs_mount *);

+void xfs_dquot_done(struct xfs_buf *);
+
#else
static inline int
xfs_qm_vop_dqalloc(struct xfs_inode *ip, kuid_t kuid, kgid_t kgid,
@@ -148,6 +151,12 @@ static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp,
#define xfs_qm_mount_quotas(mp)
#define xfs_qm_unmount(mp)
#define xfs_qm_unmount_quotas(mp)
+
+static inline void xfs_dquot_done(struct xfs_buf *bp)
+{
+ return;
+}
+
#endif /* CONFIG_XFS_QUOTA */

#define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, ninos, flags) \

2020-07-07 13:58:50

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCH] xfs: fix non-quota build breakage

On Tue, Jul 07, 2020 at 12:28:25PM +1000, Dave Chinner wrote:
>
> From: Dave Chinner <[email protected]>
>
> Oops, I forgot that you can config out quotas because nobody
> ever does that when they build XFS anymore.
>
> Fixes: 018dc1667913 ("xfs: use direct calls for dquot IO completion")
>
> Signed-off-by: Dave Chinner <[email protected]>

Looks ok,
Reviewed-by: Darrick J. Wong <[email protected]>

--D

> ---
> fs/xfs/xfs_dquot.h | 1 -
> fs/xfs/xfs_quota.h | 9 +++++++++
> 2 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/fs/xfs/xfs_dquot.h b/fs/xfs/xfs_dquot.h
> index fe9cc3e08ed6..71e36c85e20b 100644
> --- a/fs/xfs/xfs_dquot.h
> +++ b/fs/xfs/xfs_dquot.h
> @@ -174,7 +174,6 @@ void xfs_qm_dqput(struct xfs_dquot *dqp);
> void xfs_dqlock2(struct xfs_dquot *, struct xfs_dquot *);
>
> void xfs_dquot_set_prealloc_limits(struct xfs_dquot *);
> -void xfs_dquot_done(struct xfs_buf *);
>
> static inline struct xfs_dquot *xfs_qm_dqhold(struct xfs_dquot *dqp)
> {
> diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h
> index aa8fc1f55fbd..c92ae5e02ce8 100644
> --- a/fs/xfs/xfs_quota.h
> +++ b/fs/xfs/xfs_quota.h
> @@ -13,6 +13,7 @@
> */
>
> struct xfs_trans;
> +struct xfs_buf;
>
> /*
> * This check is done typically without holding the inode lock;
> @@ -107,6 +108,8 @@ extern void xfs_qm_mount_quotas(struct xfs_mount *);
> extern void xfs_qm_unmount(struct xfs_mount *);
> extern void xfs_qm_unmount_quotas(struct xfs_mount *);
>
> +void xfs_dquot_done(struct xfs_buf *);
> +
> #else
> static inline int
> xfs_qm_vop_dqalloc(struct xfs_inode *ip, kuid_t kuid, kgid_t kgid,
> @@ -148,6 +151,12 @@ static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp,
> #define xfs_qm_mount_quotas(mp)
> #define xfs_qm_unmount(mp)
> #define xfs_qm_unmount_quotas(mp)
> +
> +static inline void xfs_dquot_done(struct xfs_buf *bp)
> +{
> + return;
> +}
> +
> #endif /* CONFIG_XFS_QUOTA */
>
> #define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, ninos, flags) \