Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1557104 > unrolled thread

linux-next: build failure after merge of the akpm-current tree

Started byStephen Rothwell <sfr@canb.auug.org.au>
First post2017-01-12 04:50 +0100
Last post2017-01-13 07:10 +0100
Articles 6 — 3 participants

Back to article view | Back to linux.kernel


Contents

  linux-next: build failure after merge of the akpm-current tree Stephen Rothwell <sfr@canb.auug.org.au> - 2017-01-12 04:50 +0100
    Re: linux-next: build failure after merge of the akpm-current tree Eric Ren <zren@suse.com> - 2017-01-12 06:10 +0100
      Re: linux-next: build failure after merge of the akpm-current tree Andrew Morton <akpm@linux-foundation.org> - 2017-01-13 00:40 +0100
        Re: linux-next: build failure after merge of the akpm-current tree Stephen Rothwell <sfr@canb.auug.org.au> - 2017-01-13 04:40 +0100
      Re: linux-next: build failure after merge of the akpm-current tree Stephen Rothwell <sfr@canb.auug.org.au> - 2017-01-13 04:50 +0100
        Re: linux-next: build failure after merge of the akpm-current tree Eric Ren <zren@suse.com> - 2017-01-13 07:10 +0100

#1557104 — linux-next: build failure after merge of the akpm-current tree

FromStephen Rothwell <sfr@canb.auug.org.au>
Date2017-01-12 04:50 +0100
Subjectlinux-next: build failure after merge of the akpm-current tree
Message-ID<sYEyK-7iM-21@gated-at.bofh.it>
Hi Andrew,

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

In file included from fs/ocfs2/file.c:49:0:
fs/ocfs2/file.c: In function 'ocfs2_permission':
fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
 inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
                             ^
fs/ocfs2/file.c:1345:16: error: called from here
  has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
                ^
In file included from fs/ocfs2/file.c:49:0:
fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
 inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
                             ^
fs/ocfs2/file.c:1345:16: error: called from here
  has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
                ^
In file included from fs/ocfs2/file.c:49:0:
fs/ocfs2/dlmglue.h:185:13: error: inlining failed in call to always_inline 'ocfs2_add_holder': function body not available
 inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
             ^
fs/ocfs2/file.c:1353:3: error: called from here
   ocfs2_add_holder(lockres, &oh);
   ^
In file included from fs/ocfs2/file.c:49:0:
fs/ocfs2/dlmglue.h:187:13: error: inlining failed in call to always_inline 'ocfs2_remove_holder': function body not available
 inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
             ^
fs/ocfs2/file.c:1359:3: error: called from here
   ocfs2_remove_holder(lockres, &oh);
   ^
In file included from fs/ocfs2/acl.c:31:0:
fs/ocfs2/acl.c: In function 'ocfs2_iop_set_acl':
fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
 inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
                             ^
fs/ocfs2/acl.c:292:16: error: called from here
  has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
                ^
In file included from fs/ocfs2/acl.c:31:0:
fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
 inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
                             ^
fs/ocfs2/acl.c:292:16: error: called from here
  has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
                ^
In file included from fs/ocfs2/acl.c:31:0:
fs/ocfs2/dlmglue.h:185:13: error: inlining failed in call to always_inline 'ocfs2_add_holder': function body not available
 inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
             ^
fs/ocfs2/acl.c:302:3: error: called from here
   ocfs2_add_holder(lockres, &oh);
   ^
In file included from fs/ocfs2/acl.c:31:0:
fs/ocfs2/dlmglue.h:187:13: error: inlining failed in call to always_inline 'ocfs2_remove_holder': function body not available
 inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
             ^
fs/ocfs2/acl.c:307:3: error: called from here
   ocfs2_remove_holder(lockres, &oh);
   ^

Caused by commits

  984c4659d463 ("ocfs2/dlmglue: prepare tracking logic to avoid recursive cluster lock")
  0ca17730270e ("ocfs2: fix deadlocks when taking inode lock at vfs entry points")

I applied this fix patch for today:

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Thu, 12 Jan 2017 14:40:03 +1100
Subject: [PATCH] ocfs2/dmglue: do not inline functions whose bodies are not in
 scope

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 fs/ocfs2/dlmglue.c | 6 +++---
 fs/ocfs2/dlmglue.h | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
index 951f5d9a0884..f0823f4d0afd 100644
--- a/fs/ocfs2/dlmglue.c
+++ b/fs/ocfs2/dlmglue.c
@@ -750,7 +750,7 @@ void ocfs2_lock_res_free(struct ocfs2_lock_res *res)
 	res->l_flags = 0UL;
 }
 
-inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
+void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
 				   struct ocfs2_holder *oh)
 {
 	INIT_LIST_HEAD(&oh->oh_list);
@@ -761,7 +761,7 @@ inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
 	spin_unlock(&lockres->l_lock);
 }
 
-inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
+void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
 				       struct ocfs2_holder *oh)
 {
 	spin_lock(&lockres->l_lock);
@@ -771,7 +771,7 @@ inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
 	put_pid(oh->oh_owner_pid);
 }
 
-inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres)
+struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres)
 {
 	struct ocfs2_holder *oh;
 	struct pid *pid;
diff --git a/fs/ocfs2/dlmglue.h b/fs/ocfs2/dlmglue.h
index d65ff1e49552..7f0c07bb30a3 100644
--- a/fs/ocfs2/dlmglue.h
+++ b/fs/ocfs2/dlmglue.h
@@ -182,10 +182,10 @@ void ocfs2_set_locking_protocol(void);
  * Keep a list of processes who have interest in a lockres.
  * Note: this is now only uesed for check recursive cluster lock.
  */
-inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
+void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
 			     struct ocfs2_holder *oh);
-inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
+void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
 			     struct ocfs2_holder *oh);
-inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
+struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
 
 #endif	/* DLMGLUE_H */
-- 
2.10.2

-- 
Cheers,
Stephen Rothwell

[toc] | [next] | [standalone]


#1557120

FromEric Ren <zren@suse.com>
Date2017-01-12 06:10 +0100
Message-ID<sYFOa-8ia-17@gated-at.bofh.it>
In reply to#1557104
Hi  Stephen,

Thanks for your report and the fix for it. The 0-day project has reported several days ago,
but this patch set is still in discussion, so I am waiting for more days to see if  other 
developers
have any other questions.

I am confused that how to deal with your patch if I need to work out the V2 patch set. Perhaps,
pick up your fix and  add your efforts in the change log?

Thanks,
Eric


On 01/12/2017 11:49 AM, Stephen Rothwell wrote:
> Hi Andrew,
>
> After merging the akpm tree, today's linux-next build (powerpc
> allyesconfig) failed like this:
>
> In file included from fs/ocfs2/file.c:49:0:
> fs/ocfs2/file.c: In function 'ocfs2_permission':
> fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
>   inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
>                               ^
> fs/ocfs2/file.c:1345:16: error: called from here
>    has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
>                  ^
> In file included from fs/ocfs2/file.c:49:0:
> fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
>   inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
>                               ^
> fs/ocfs2/file.c:1345:16: error: called from here
>    has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
>                  ^
> In file included from fs/ocfs2/file.c:49:0:
> fs/ocfs2/dlmglue.h:185:13: error: inlining failed in call to always_inline 'ocfs2_add_holder': function body not available
>   inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
>               ^
> fs/ocfs2/file.c:1353:3: error: called from here
>     ocfs2_add_holder(lockres, &oh);
>     ^
> In file included from fs/ocfs2/file.c:49:0:
> fs/ocfs2/dlmglue.h:187:13: error: inlining failed in call to always_inline 'ocfs2_remove_holder': function body not available
>   inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
>               ^
> fs/ocfs2/file.c:1359:3: error: called from here
>     ocfs2_remove_holder(lockres, &oh);
>     ^
> In file included from fs/ocfs2/acl.c:31:0:
> fs/ocfs2/acl.c: In function 'ocfs2_iop_set_acl':
> fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
>   inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
>                               ^
> fs/ocfs2/acl.c:292:16: error: called from here
>    has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
>                  ^
> In file included from fs/ocfs2/acl.c:31:0:
> fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
>   inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
>                               ^
> fs/ocfs2/acl.c:292:16: error: called from here
>    has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
>                  ^
> In file included from fs/ocfs2/acl.c:31:0:
> fs/ocfs2/dlmglue.h:185:13: error: inlining failed in call to always_inline 'ocfs2_add_holder': function body not available
>   inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
>               ^
> fs/ocfs2/acl.c:302:3: error: called from here
>     ocfs2_add_holder(lockres, &oh);
>     ^
> In file included from fs/ocfs2/acl.c:31:0:
> fs/ocfs2/dlmglue.h:187:13: error: inlining failed in call to always_inline 'ocfs2_remove_holder': function body not available
>   inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
>               ^
> fs/ocfs2/acl.c:307:3: error: called from here
>     ocfs2_remove_holder(lockres, &oh);
>     ^
>
> Caused by commits
>
>    984c4659d463 ("ocfs2/dlmglue: prepare tracking logic to avoid recursive cluster lock")
>    0ca17730270e ("ocfs2: fix deadlocks when taking inode lock at vfs entry points")
>
> I applied this fix patch for today:
>
> From: Stephen Rothwell <sfr@canb.auug.org.au>
> Date: Thu, 12 Jan 2017 14:40:03 +1100
> Subject: [PATCH] ocfs2/dmglue: do not inline functions whose bodies are not in
>   scope
>
> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
> ---
>   fs/ocfs2/dlmglue.c | 6 +++---
>   fs/ocfs2/dlmglue.h | 6 +++---
>   2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c
> index 951f5d9a0884..f0823f4d0afd 100644
> --- a/fs/ocfs2/dlmglue.c
> +++ b/fs/ocfs2/dlmglue.c
> @@ -750,7 +750,7 @@ void ocfs2_lock_res_free(struct ocfs2_lock_res *res)
>   	res->l_flags = 0UL;
>   }
>   
> -inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
> +void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
>   				   struct ocfs2_holder *oh)
>   {
>   	INIT_LIST_HEAD(&oh->oh_list);
> @@ -761,7 +761,7 @@ inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
>   	spin_unlock(&lockres->l_lock);
>   }
>   
> -inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
> +void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
>   				       struct ocfs2_holder *oh)
>   {
>   	spin_lock(&lockres->l_lock);
> @@ -771,7 +771,7 @@ inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
>   	put_pid(oh->oh_owner_pid);
>   }
>   
> -inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres)
> +struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres)
>   {
>   	struct ocfs2_holder *oh;
>   	struct pid *pid;
> diff --git a/fs/ocfs2/dlmglue.h b/fs/ocfs2/dlmglue.h
> index d65ff1e49552..7f0c07bb30a3 100644
> --- a/fs/ocfs2/dlmglue.h
> +++ b/fs/ocfs2/dlmglue.h
> @@ -182,10 +182,10 @@ void ocfs2_set_locking_protocol(void);
>    * Keep a list of processes who have interest in a lockres.
>    * Note: this is now only uesed for check recursive cluster lock.
>    */
> -inline void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
> +void ocfs2_add_holder(struct ocfs2_lock_res *lockres,
>   			     struct ocfs2_holder *oh);
> -inline void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
> +void ocfs2_remove_holder(struct ocfs2_lock_res *lockres,
>   			     struct ocfs2_holder *oh);
> -inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
> +struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
>   
>   #endif	/* DLMGLUE_H */

[toc] | [prev] | [next] | [standalone]


#1557918

FromAndrew Morton <akpm@linux-foundation.org>
Date2017-01-13 00:40 +0100
Message-ID<sYX8l-1Li-5@gated-at.bofh.it>
In reply to#1557120
On Thu, 12 Jan 2017 13:06:01 +0800 Eric Ren <zren@suse.com> wrote:

> On 01/12/2017 11:49 AM, Stephen Rothwell wrote:
> > Hi Andrew,
> >
> > After merging the akpm tree, today's linux-next build (powerpc
> > allyesconfig) failed like this:
> >
> > In file included from fs/ocfs2/file.c:49:0:
> > fs/ocfs2/file.c: In function 'ocfs2_permission':
> > fs/ocfs2/dlmglue.h:189:29: error: inlining failed in call to always_inline 'ocfs2_is_locked_by_me': function body not available
> >   inline struct ocfs2_holder *ocfs2_is_locked_by_me(struct ocfs2_lock_res *lockres);
> >                               ^
> > fs/ocfs2/file.c:1345:16: error: called from here
> >    has_locked = (ocfs2_is_locked_by_me(lockres) != NULL);
> >                  ^
> ...
> >
> > Caused by commits
> >
> >    984c4659d463 ("ocfs2/dlmglue: prepare tracking logic to avoid recursive cluster lock")
> >    0ca17730270e ("ocfs2: fix deadlocks when taking inode lock at vfs entry points")
> >

(top-posting repaired.  Please don't do that)

> Hi  Stephen,
> 
> Thanks for your report and the fix for it. The 0-day project has reported several days ago,
> but this patch set is still in discussion, so I am waiting for more days to see if  other 
> developers
> have any other questions.
> 
> I am confused that how to deal with your patch if I need to work out the V2 patch set. Perhaps,
> pick up your fix and  add your efforts in the change log?
> 

I'll drop

ocfs2-dlmglue-prepare-tracking-logic-to-avoid-recursive-cluster-lock.patch
and
ocfs2-fix-deadlocks-when-taking-inode-lock-at-vfs-entry-points.patch

[toc] | [prev] | [next] | [standalone]


#1557986

FromStephen Rothwell <sfr@canb.auug.org.au>
Date2017-01-13 04:40 +0100
Message-ID<sZ0SB-4cE-5@gated-at.bofh.it>
In reply to#1557918
Hi Andrew,

On Thu, 12 Jan 2017 15:33:53 -0800 Andrew Morton <akpm@linux-foundation.org> wrote:
>
> I'll drop
> 
> ocfs2-dlmglue-prepare-tracking-logic-to-avoid-recursive-cluster-lock.patch
> and
> ocfs2-fix-deadlocks-when-taking-inode-lock-at-vfs-entry-points.patch

I removed them from linux-next today.

-- 
Cheers,
Stephen Rothwell

[toc] | [prev] | [next] | [standalone]


#1557996

FromStephen Rothwell <sfr@canb.auug.org.au>
Date2017-01-13 04:50 +0100
Message-ID<sZ12h-4fJ-9@gated-at.bofh.it>
In reply to#1557120
Hi Eric,

On Thu, 12 Jan 2017 13:06:01 +0800 Eric Ren <zren@suse.com> wrote:
>
> Thanks for your report and the fix for it. The 0-day project has reported several days ago,
> but this patch set is still in discussion, so I am waiting for more days to see if  other 
> developers
> have any other questions.
> 
> I am confused that how to deal with your patch if I need to work out the V2 patch set. Perhaps,
> pick up your fix and  add your efforts in the change log?

If you had already fixed the problem, then just submit your new
version.  You only need to give credit when you use someone's work.

If you want to give credit, then maybe a line like:

[sfr@canb.auug.org.au remove some inlines]

among the Signed-off-by: lines
-- 
Cheers,
Stephen Rothwell

[toc] | [prev] | [next] | [standalone]


#1558043

FromEric Ren <zren@suse.com>
Date2017-01-13 07:10 +0100
Message-ID<sZ3dM-5M4-5@gated-at.bofh.it>
In reply to#1557996
Hi,

On 01/13/2017 11:42 AM, Stephen Rothwell wrote:
> Hi Eric,
>
> On Thu, 12 Jan 2017 13:06:01 +0800 Eric Ren <zren@suse.com> wrote:
>> Thanks for your report and the fix for it. The 0-day project has reported several days ago,
>> but this patch set is still in discussion, so I am waiting for more days to see if  other
>> developers
>> have any other questions.
>>
>> I am confused that how to deal with your patch if I need to work out the V2 patch set. Perhaps,
>> pick up your fix and  add your efforts in the change log?
> If you had already fixed the problem, then just submit your new
> version.  You only need to give credit when you use someone's work.
>
> If you want to give credit, then maybe a line like:
>
> [sfr@canb.auug.org.au remove some inlines]
>
> among the Signed-off-by: lines
Sure! I always keep it in mind;-)

Thanks,
Eric

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web