linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* btrfs_direct_IO oops
@ 2016-10-08 18:08 Dave Jones
  2016-10-08 18:29 ` Al Viro
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Jones @ 2016-10-08 18:08 UTC (permalink / raw)
  To: Chris Mason; +Cc: Josef Bacik, David Sterba, linux-btrfs, Linux Kernel

Found this in logs this morning. First time I've seen this one.
Might be related to some direct IO related changes I made in Trinity
that is tickling some new path.

Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
CPU: 2 PID: 25313 Comm: trinity-c18 Not tainted 4.8.0-think+ #7 
task: ffff88040f7b1c00 task.stack: ffffc9000076c000
 RIP: 0010:[<ffffffffc0289d5c>] 
  [<ffffffffc0289d5c>] btrfs_direct_IO+0x13c/0x480 [btrfs]
RSP: 0018:ffffc9000076fb40  EFLAGS: 00010202
RAX: 0000000000002580 RBX: 0000000000000258 RCX: 0000000000000018
RDX: 0000000000000000 RSI: ffff8804f4d16868 RDI: ffffc9000076fc40
RBP: ffffc9000076fbd8 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000006 R12: ffff880300000000
R13: ffff8803643e1a88 R14: 0000000000000001 R15: 0000000000000258
FS:  00007efc0af88b40(0000) GS:ffff880507c00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffff8803643e4008 CR3: 00000003ad69e000 CR4: 00000000001406e0
DR0: 0000006f00200000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000600
Stack:
  ffff88050174dda0 ffffc9000076fb60 ffff8804ffaab3f8 ffffc9000076fcd8
  0000000000000000 0000000000000001 00000001c93b8050 ffff8804f4d16868
  ffffc9000076fc40 0000000000000000 0000000000000000 0000000000000000
 
Call Trace:
 [<ffffffff89195d9d>] generic_file_read_iter+0x33d/0xce0
 [<ffffffff8920be97>] ? ___slab_alloc.constprop.86+0x277/0x5c0
 [<ffffffff89275edd>] generic_file_splice_read+0xfd/0x230
 [<ffffffff89275de0>] ? pipe_to_user+0x40/0x40
 [<ffffffff892758f8>] do_splice_to+0x98/0xd0
 [<ffffffff89275a04>] splice_direct_to_actor+0xd4/0x2c0
 [<ffffffff89275050>] ? generic_pipe_buf_nosteal+0x10/0x10
 [<ffffffff89275cb5>] do_splice_direct+0xc5/0x110
 [<ffffffff89237c52>] do_sendfile+0x242/0x470
 [<ffffffff89238d2d>] SyS_sendfile64+0x7d/0xf0
 [<ffffffff8900279f>] do_syscall_64+0x7f/0x200
 [<ffffffff899ddbcb>] entry_SYSCALL64_slow_path+0x25/0x25
 Code:  4d 8b 74 1d 00 4d 3b 74 1d 10 74 26 44 89 fb e8 3b de eb c8 83 c3 01 4c 63 fb 4d 39 e7 73 a5 e8 2b de eb c8 4c 89 f8 48 c1 e0 04 <4d> 3b 74 05 00 75 dd 31 db e8 16 de eb c8 48 89 d8 48 8b 7d d0 
 
 RIP 
  [<ffffffffc0289d5c>] btrfs_direct_IO+0x13c/0x480 [btrfs]
 RSP <ffffc9000076fb40>
CR2: ffff8803643e4008


That code: matches this dissembly:

                for (i = seg + 1; i < iter->nr_segs; i++) {
   41d40:       e8 00 00 00 00          callq  41d45 <btrfs_direct_IO+0x125>
   41d45:       83 c3 01                add    $0x1,%ebx
   41d48:       4c 63 fb                movslq %ebx,%r15
   41d4b:       4d 39 e7                cmp    %r12,%r15
   41d4e:       73 a5                   jae    41cf5 <btrfs_direct_IO+0xd5>
                        if (iter->iov[seg].iov_base == iter->iov[i].iov_base)
   41d50:       e8 00 00 00 00          callq  41d55 <btrfs_direct_IO+0x135>
   41d55:       4c 89 f8                mov    %r15,%rax
   41d58:       48 c1 e0 04             shl    $0x4,%rax
   41d5c:       4d 3b 74 05 00          cmp    0x0(%r13,%rax,1),%r14
   41d61:       75 dd                   jne    41d40 <btrfs_direct_IO+0x120>
                return 0;

 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: btrfs_direct_IO oops
  2016-10-08 18:08 btrfs_direct_IO oops Dave Jones
@ 2016-10-08 18:29 ` Al Viro
  2016-10-08 23:20   ` Dave Jones
  0 siblings, 1 reply; 8+ messages in thread
From: Al Viro @ 2016-10-08 18:29 UTC (permalink / raw)
  To: Dave Jones, Chris Mason, Josef Bacik, David Sterba, linux-btrfs,
	Linux Kernel

On Sat, Oct 08, 2016 at 02:08:06PM -0400, Dave Jones wrote:
> That code: matches this dissembly:
> 
>                 for (i = seg + 1; i < iter->nr_segs; i++) {

*whoa*

OK, that loop in check_direct_IO() should be done *ONLY* for
iovec iter - even for a bvec one it's completely bogus, and
for pipe ones it blows up immediately.

Sorry, I'd missed that bogosity - replace
        if (iov_iter_rw(iter) == WRITE)
		return 0;
with
	if (iov_iter_rw(iter) != READ || !iter_is_iovec(iter))
		return 0;
in there; that should fix the damn thing.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: btrfs_direct_IO oops
  2016-10-08 18:29 ` Al Viro
@ 2016-10-08 23:20   ` Dave Jones
  2016-10-09 15:11     ` Dave Jones
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Jones @ 2016-10-08 23:20 UTC (permalink / raw)
  To: Al Viro; +Cc: Chris Mason, Josef Bacik, David Sterba, linux-btrfs, Linux Kernel

On Sat, Oct 08, 2016 at 07:29:03PM +0100, Al Viro wrote:
 > On Sat, Oct 08, 2016 at 02:08:06PM -0400, Dave Jones wrote:
 > > That code: matches this dissembly:
 > > 
 > >                 for (i = seg + 1; i < iter->nr_segs; i++) {
 > 
 > *whoa*
 > 
 > OK, that loop in check_direct_IO() should be done *ONLY* for
 > iovec iter - even for a bvec one it's completely bogus, and
 > for pipe ones it blows up immediately.
 > 
 > Sorry, I'd missed that bogosity - replace
 >         if (iov_iter_rw(iter) == WRITE)
 > 		return 0;
 > with
 > 	if (iov_iter_rw(iter) != READ || !iter_is_iovec(iter))
 > 		return 0;
 > in there; that should fix the damn thing.

Yep, seems to do the trick. Have been running the last six hours
without seeing it or anything similar since.

	Dave

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: btrfs_direct_IO oops
  2016-10-08 23:20   ` Dave Jones
@ 2016-10-09 15:11     ` Dave Jones
  2016-10-10  3:43       ` Al Viro
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Jones @ 2016-10-09 15:11 UTC (permalink / raw)
  To: Al Viro, Chris Mason, Josef Bacik, David Sterba, linux-btrfs,
	Linux Kernel

On Sat, Oct 08, 2016 at 07:20:08PM -0400, Dave Jones wrote:
 > On Sat, Oct 08, 2016 at 07:29:03PM +0100, Al Viro wrote:
 >  > On Sat, Oct 08, 2016 at 02:08:06PM -0400, Dave Jones wrote:
 >  > > That code: matches this dissembly:
 >  > > 
 >  > >                 for (i = seg + 1; i < iter->nr_segs; i++) {
 >  > 
 >  > *whoa*
 >  > 
 >  > OK, that loop in check_direct_IO() should be done *ONLY* for
 >  > iovec iter - even for a bvec one it's completely bogus, and
 >  > for pipe ones it blows up immediately.
 >  > 
 >  > Sorry, I'd missed that bogosity - replace
 >  >         if (iov_iter_rw(iter) == WRITE)
 >  > 		return 0;
 >  > with
 >  > 	if (iov_iter_rw(iter) != READ || !iter_is_iovec(iter))
 >  > 		return 0;
 >  > in there; that should fix the damn thing.
 > 
 > Yep, seems to do the trick. Have been running the last six hours
 > without seeing it or anything similar since.

Overnight, I did hit another iov related warning..

idx = 0, offset = 0
curbuf = 0, nrbufs = 1, buffers = 16
[ffffffff9fa21100 ffffea00065f6d80 0 4096]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]

WARNING: CPU: 0 PID: 29610 at lib/iov_iter.c:327 sanity+0x102/0x150
CPU: 0 PID: 29610 Comm: trinity-c9 Not tainted 4.8.0-think+ #8 
 ffffc900007b7ae8
 ffffffff9f3e2011
 0000000000000000
 0000000000000000

 ffffffff9fc1e22b
 ffffffff9f3fa2f2
 ffffc900007b7b28
 ffffffff9f08b010

 0000014734c3d60f
 ffffffff9fc1e22b
 0000000000000147
 0000000000000010

Call Trace:
 [<ffffffff9f3e2011>] dump_stack+0x6c/0x9b
 [<ffffffff9f3fa2f2>] ? sanity+0x102/0x150
 [<ffffffff9f08b010>] __warn+0x110/0x130
 [<ffffffff9f08b19c>] warn_slowpath_null+0x2c/0x40
 [<ffffffff9f3fa2f2>] sanity+0x102/0x150
 [<ffffffff9f3fe62e>] copy_page_to_iter+0x2be/0x480
 [<ffffffff9f1932da>] ? pagecache_get_page+0xba/0x4f0
 [<ffffffff9f195b85>] generic_file_read_iter+0x245/0xd30
 [<ffffffff9f2764ed>] generic_file_splice_read+0xfd/0x230
 [<ffffffff9f2763f0>] ? pipe_to_user+0x40/0x40
 [<ffffffff9f275f08>] do_splice_to+0x98/0xd0
 [<ffffffff9f276014>] splice_direct_to_actor+0xd4/0x2c0
 [<ffffffff9f275660>] ? generic_pipe_buf_nosteal+0x10/0x10
 [<ffffffff9f2762c5>] do_splice_direct+0xc5/0x110
 [<ffffffff9f2381c2>] do_sendfile+0x242/0x470
 [<ffffffff9f23929d>] SyS_sendfile64+0x7d/0xf0
 [<ffffffff9f00279f>] do_syscall_64+0x7f/0x200
 [<ffffffff9f9de5cb>] entry_SYSCALL64_slow_path+0x25/0x25
---[ end trace 2c7bd411d4aa0491 ]---

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: btrfs_direct_IO oops
  2016-10-09 15:11     ` Dave Jones
@ 2016-10-10  3:43       ` Al Viro
  2016-10-10 13:11         ` Dave Jones
  0 siblings, 1 reply; 8+ messages in thread
From: Al Viro @ 2016-10-10  3:43 UTC (permalink / raw)
  To: Dave Jones, Chris Mason, Josef Bacik, David Sterba, linux-btrfs,
	Linux Kernel

On Sun, Oct 09, 2016 at 11:11:06AM -0400, Dave Jones wrote:
> idx = 0, offset = 0

== starts at slot 0, nothing put into it yet, but

> curbuf = 0, nrbufs = 1, buffers = 16
> [ffffffff9fa21100 ffffea00065f6d80 0 4096]

the underlying pipe has something stored into slot 0.  That definitely
should not happen.

> WARNING: CPU: 0 PID: 29610 at lib/iov_iter.c:327 sanity+0x102/0x150
> CPU: 0 PID: 29610 Comm: trinity-c9 Not tainted 4.8.0-think+ #8 
>  ffffc900007b7ae8
>  ffffffff9f3e2011
>  0000000000000000
>  0000000000000000

>  ffffffff9fc1e22b
>  ffffffff9f3fa2f2
>  ffffc900007b7b28
>  ffffffff9f08b010
> 
>  0000014734c3d60f
>  ffffffff9fc1e22b
>  0000000000000147
>  0000000000000010

*blink*

where have those come from?
 
> Call Trace:
>  [<ffffffff9f3e2011>] dump_stack+0x6c/0x9b
>  [<ffffffff9f3fa2f2>] ? sanity+0x102/0x150
>  [<ffffffff9f08b010>] __warn+0x110/0x130
>  [<ffffffff9f08b19c>] warn_slowpath_null+0x2c/0x40
>  [<ffffffff9f3fa2f2>] sanity+0x102/0x150
>  [<ffffffff9f3fe62e>] copy_page_to_iter+0x2be/0x480
>  [<ffffffff9f1932da>] ? pagecache_get_page+0xba/0x4f0
>  [<ffffffff9f195b85>] generic_file_read_iter+0x245/0xd30
>  [<ffffffff9f2764ed>] generic_file_splice_read+0xfd/0x230
>  [<ffffffff9f2763f0>] ? pipe_to_user+0x40/0x40
>  [<ffffffff9f275f08>] do_splice_to+0x98/0xd0
>  [<ffffffff9f276014>] splice_direct_to_actor+0xd4/0x2c0
>  [<ffffffff9f275660>] ? generic_pipe_buf_nosteal+0x10/0x10
>  [<ffffffff9f2762c5>] do_splice_direct+0xc5/0x110
>  [<ffffffff9f2381c2>] do_sendfile+0x242/0x470
>  [<ffffffff9f23929d>] SyS_sendfile64+0x7d/0xf0
>  [<ffffffff9f00279f>] do_syscall_64+0x7f/0x200
>  [<ffffffff9f9de5cb>] entry_SYSCALL64_slow_path+0x25/0x25
> ---[ end trace 2c7bd411d4aa0491 ]---

Very interesting.  Could you slap something like
diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index 0ce3411..1ef00e7 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -682,8 +682,9 @@ static void pipe_advance(struct iov_iter *i, size_t size)
 {
 	struct pipe_inode_info *pipe = i->pipe;
 	struct pipe_buffer *buf;
-	int idx = i->idx;
-	size_t off = i->iov_offset;
+	int old_idx = idx = i->idx;
+	size_t old_off = off = i->iov_offset;
+	size_t old_size = size;
 	
 	if (unlikely(i->count < size))
 		size = i->count;
@@ -713,6 +714,9 @@ static void pipe_advance(struct iov_iter *i, size_t size)
 			pipe->nrbufs--;
 		}
 	}
+	if (!sanity(i))
+		printk(KERN_ERR "buggered pipe_advance(%zd) [%d,%zd]",
+				old_size, old_idx, old_off);
 }
 
 void iov_iter_advance(struct iov_iter *i, size_t size)

in there and try to reproduce that one?

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: btrfs_direct_IO oops
  2016-10-10  3:43       ` Al Viro
@ 2016-10-10 13:11         ` Dave Jones
  2016-10-10 15:55           ` Al Viro
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Jones @ 2016-10-10 13:11 UTC (permalink / raw)
  To: Al Viro; +Cc: Chris Mason, Josef Bacik, David Sterba, linux-btrfs, Linux Kernel

On Mon, Oct 10, 2016 at 04:43:57AM +0100, Al Viro wrote:
 
 > Very interesting.  Could you slap something like
 > diff --git a/lib/iov_iter.c b/lib/iov_iter.c
 > index 0ce3411..1ef00e7 100644
 > --- a/lib/iov_iter.c
 > +++ b/lib/iov_iter.c
 > @@ -682,8 +682,9 @@ static void pipe_advance(struct iov_iter *i, size_t size)
 >  {
 >  	struct pipe_inode_info *pipe = i->pipe;
 >  	struct pipe_buffer *buf;
 > -	int idx = i->idx;
 > -	size_t off = i->iov_offset;
 > +	int old_idx = idx = i->idx;
 > +	size_t old_off = off = i->iov_offset;
 > +	size_t old_size = size;
 >  	
 >  	if (unlikely(i->count < size))
 >  		size = i->count;
 > @@ -713,6 +714,9 @@ static void pipe_advance(struct iov_iter *i, size_t size)
 >  			pipe->nrbufs--;
 >  		}
 >  	}
 > +	if (!sanity(i))
 > +		printk(KERN_ERR "buggered pipe_advance(%zd) [%d,%zd]",
 > +				old_size, old_idx, old_off);
 >  }
 >  
 >  void iov_iter_advance(struct iov_iter *i, size_t size)
 > 
 > in there and try to reproduce that one?

My compiler choked on that, but I fixed it up. The printk didn't
trigger though..


idx = 0, offset = 0
curbuf = 0, nrbufs = 1, buffers = 16
[ffffffffb9a21100 ffffea00126019c0 0 4096]
[          (null) ffffea0013746440 0 0]
[          (null) ffffea00132956c0 0 0]
[          (null) ffffea0013295700 0 0]
[          (null) ffffea0013295740 0 0]
[          (null) ffffea0013295780 0 0]
[          (null) ffffea00132957c0 0 0]
[          (null) ffffea0013595c00 0 0]
[          (null) ffffea0012b1b6c0 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
[          (null)           (null) 0 0]
------------[ cut here ]------------
WARNING: CPU: 1 PID: 13581 at lib/iov_iter.c:327 sanity+0x102/0x150
CPU: 1 PID: 13581 Comm: trinity-c17 Not tainted 4.8.0-think+ #9 
 ffffc90000963ae8
 ffffffffb93e22d1
 0000000000000000
 0000000000000000

 ffffffffb9c1e1cb
 ffffffffb93fa5b2
 ffffc90000963b28
 ffffffffb908b010

 00000147d43c0e7f
 ffffffffb9c1e1cb
 0000000000000147
 0000000000000010

Call Trace:
 [<ffffffffb93e22d1>] dump_stack+0x6c/0x9b
 [<ffffffffb93fa5b2>] ? sanity+0x102/0x150
 [<ffffffffb908b010>] __warn+0x110/0x130
 [<ffffffffb908b19c>] warn_slowpath_null+0x2c/0x40
 [<ffffffffb93fa5b2>] sanity+0x102/0x150
 [<ffffffffb93fe94e>] copy_page_to_iter+0x2be/0x480
 [<ffffffffb91cc8b1>] ? workingset_activation+0xc1/0x120
 [<ffffffffb91cc7f0>] ? workingset_refault+0x190/0x190
 [<ffffffffb9195b85>] generic_file_read_iter+0x245/0xd30
 [<ffffffffb92764ed>] generic_file_splice_read+0xfd/0x230
 [<ffffffffb92763f0>] ? pipe_to_user+0x40/0x40
 [<ffffffffb9275f08>] do_splice_to+0x98/0xd0
 [<ffffffffb9276014>] splice_direct_to_actor+0xd4/0x2c0
 [<ffffffffb9275660>] ? generic_pipe_buf_nosteal+0x10/0x10
 [<ffffffffb92762c5>] do_splice_direct+0xc5/0x110
 [<ffffffffb92381c2>] do_sendfile+0x242/0x470
 [<ffffffffb923929d>] SyS_sendfile64+0x7d/0xf0
 [<ffffffffb900279f>] do_syscall_64+0x7f/0x200
 [<ffffffffb99de8cb>] entry_SYSCALL64_slow_path+0x25/0x25
---[ end trace 6773f425063b7f84 ]---

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: btrfs_direct_IO oops
  2016-10-10 13:11         ` Dave Jones
@ 2016-10-10 15:55           ` Al Viro
  2016-10-10 17:17             ` Dave Jones
  0 siblings, 1 reply; 8+ messages in thread
From: Al Viro @ 2016-10-10 15:55 UTC (permalink / raw)
  To: Dave Jones, Chris Mason, Josef Bacik, David Sterba, linux-btrfs,
	Linux Kernel

On Mon, Oct 10, 2016 at 09:11:22AM -0400, Dave Jones wrote:

> My compiler choked on that, but I fixed it up. The printk didn't
> trigger though..
> 
> idx = 0, offset = 0
> curbuf = 0, nrbufs = 1, buffers = 16
> [ffffffffb9a21100 ffffea00126019c0 0 4096]
> [          (null) ffffea0013746440 0 0]
> [          (null) ffffea00132956c0 0 0]
> [          (null) ffffea0013295700 0 0]
> [          (null) ffffea0013295740 0 0]
> [          (null) ffffea0013295780 0 0]
> [          (null) ffffea00132957c0 0 0]
> [          (null) ffffea0013595c00 0 0]
> [          (null) ffffea0012b1b6c0 0 0]
> [          (null)           (null) 0 0]
> [          (null)           (null) 0 0]
> [          (null)           (null) 0 0]
> [          (null)           (null) 0 0]
> [          (null)           (null) 0 0]
> [          (null)           (null) 0 0]
> [          (null)           (null) 0 0]
> ------------[ cut here ]------------
> WARNING: CPU: 1 PID: 13581 at lib/iov_iter.c:327 sanity+0x102/0x150
> CPU: 1 PID: 13581 Comm: trinity-c17 Not tainted 4.8.0-think+ #9 
>  ffffc90000963ae8
>  ffffffffb93e22d1
>  0000000000000000
>  0000000000000000
> 
>  ffffffffb9c1e1cb
>  ffffffffb93fa5b2
>  ffffc90000963b28
>  ffffffffb908b010
> 
>  00000147d43c0e7f
>  ffffffffb9c1e1cb
>  0000000000000147
>  0000000000000010

What are these from?  Confused...

> Call Trace:

[via splice_direct_to_actor()]

Hmmm...  I think I see it.  Could you try the following (on top of debugging
in lib/iov_iter.c) and see if anything triggers?

diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index bfc2aa7..b63d8c5 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -319,7 +319,7 @@ xfs_file_dio_aio_read(
 	data = *to;
 	ret = __blockdev_direct_IO(iocb, inode, target->bt_bdev, &data,
 			xfs_get_blocks_direct, NULL, NULL, 0);
-	if (ret > 0) {
+	if (ret >= 0) {
 		iocb->ki_pos += ret;
 		iov_iter_advance(to, ret);
 	}
diff --git a/mm/filemap.c b/mm/filemap.c
index 68f1813..88e5ddd 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1935,7 +1935,7 @@ generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
 		file_accessed(file);
 
 		retval = mapping->a_ops->direct_IO(iocb, &data);
-		if (retval > 0) {
+		if (retval >= 0) {
 			iocb->ki_pos += retval;
 			iov_iter_advance(iter, retval);
 		}

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: btrfs_direct_IO oops
  2016-10-10 15:55           ` Al Viro
@ 2016-10-10 17:17             ` Dave Jones
  0 siblings, 0 replies; 8+ messages in thread
From: Dave Jones @ 2016-10-10 17:17 UTC (permalink / raw)
  To: Al Viro; +Cc: Chris Mason, Josef Bacik, David Sterba, linux-btrfs, Linux Kernel

On Mon, Oct 10, 2016 at 04:55:03PM +0100, Al Viro wrote:
 
 > > WARNING: CPU: 1 PID: 13581 at lib/iov_iter.c:327 sanity+0x102/0x150
 > > CPU: 1 PID: 13581 Comm: trinity-c17 Not tainted 4.8.0-think+ #9 
 > >  ffffc90000963ae8
 > >  ffffffffb93e22d1
 > >  0000000000000000
 > >  0000000000000000
 > > 
 > >  ffffffffb9c1e1cb
 > >  ffffffffb93fa5b2
 > >  ffffc90000963b28
 > >  ffffffffb908b010
 > > 
 > >  00000147d43c0e7f
 > >  ffffffffb9c1e1cb
 > >  0000000000000147
 > >  0000000000000010
 > 
 > What are these from?  Confused...

That's the stack I think. I don't know why it started printing all weird..

 > [via splice_direct_to_actor()]
 > 
 > Hmmm...  I think I see it.  Could you try the following (on top of debugging
 > in lib/iov_iter.c) and see if anything triggers?
 
Been running for an hour without incident so far, so this looks promising.
I'll follow-up if anything jumps out, but normally I'd have seen this by now.

	Dave

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-10-10 17:17 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-08 18:08 btrfs_direct_IO oops Dave Jones
2016-10-08 18:29 ` Al Viro
2016-10-08 23:20   ` Dave Jones
2016-10-09 15:11     ` Dave Jones
2016-10-10  3:43       ` Al Viro
2016-10-10 13:11         ` Dave Jones
2016-10-10 15:55           ` Al Viro
2016-10-10 17:17             ` Dave Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).