Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-23 Thread Sagi Grimberg
I also commented over there regarding this specific problem. I think my wording was inaccurate perhaps. It's not so much direct recursion, but a dependency chain connecting the handler_mutex class back to itself. This is how lockdep finds problems, it doesn't consider actual *instances* but o

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-23 Thread Johannes Berg
On Tue, 2018-10-23 at 21:50 +0200, Johannes Berg wrote: > > The reason for the report is that with the workqueue annotations, we've > added new links to the chains that lockdep sees. I _think_ those > annotations are correct and only create links in the chain when they are > actually present, but

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-23 Thread Johannes Berg
On Tue, 2018-10-23 at 21:44 +0200, Johannes Berg wrote: > > There is > > no agreement however that the kind of checking implemented by the > > "crosslock" > > code made sense. My understanding is that you are trying to reintroduce > > through a backdoor some of the crosslock code. > > Not at al

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-23 Thread Johannes Berg
On Mon, 2018-10-22 at 18:17 -0700, Bart Van Assche wrote: > It seems to me that the inode lock has been annotated correctly as an > rwsem. It's not clear to me however why lockdep complains about a > deadlock for the direct I/O code. I hope someone has the time to go to > the bottom of this. I

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-23 Thread Johannes Berg
On Mon, 2018-10-22 at 14:26 -0700, Bart Van Assche wrote: > On Mon, 2018-10-22 at 23:04 +0200, Johannes Berg wrote: > > When lockdep was added, the networking socket locks also were (mostly) > > fine, recursion there only happened on different types of sockets. Yet, > > lockdep did in fact report i

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-23 Thread Johannes Berg
On Mon, 2018-10-22 at 17:43 -0700, Sagi Grimberg wrote: > > > I must also say that I'm disappointed you'd try to do things this way. > > > I'd be (have been?) willing to actually help you understand the problem > > > and add the annotations, but rather than answer my question ("where do I > > > fin

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Bart Van Assche
On 10/22/18 2:04 PM, Johannes Berg wrote: On Mon, 2018-10-22 at 13:54 -0700, Bart Van Assche wrote: The code in the column with label "CPU0" is code called by do_blockdev_direct_IO(). From the body of that function: /* will be released by direct_io_worker */

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Sagi Grimberg
I must also say that I'm disappointed you'd try to do things this way. I'd be (have been?) willing to actually help you understand the problem and add the annotations, but rather than answer my question ("where do I find the right git tree"!) you just send a revert patch. Sorry that I had not

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Bart Van Assche
On Mon, 2018-10-22 at 22:14 +0200, Johannes Berg wrote: > I must also say that I'm disappointed you'd try to do things this way. > I'd be (have been?) willing to actually help you understand the problem > and add the annotations, but rather than answer my question ("where do I > find the right git

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Bart Van Assche
On Mon, 2018-10-22 at 23:04 +0200, Johannes Berg wrote: > When lockdep was added, the networking socket locks also were (mostly) > fine, recursion there only happened on different types of sockets. Yet, > lockdep did in fact report issues with it, because originally they > weren't split into differ

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Johannes Berg
On Mon, 2018-10-22 at 13:54 -0700, Bart Van Assche wrote: > On Mon, 2018-10-22 at 22:28 +0200, Johannes Berg wrote: > > The lockdep report even more or less tells you what's going on. Perhaps > > we need to find a way to make lockdep not print "lock()" but "start()" > > or "flush()" for work items

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Bart Van Assche
On Mon, 2018-10-22 at 22:28 +0200, Johannes Berg wrote: > The lockdep report even more or less tells you what's going on. Perhaps > we need to find a way to make lockdep not print "lock()" but "start()" > or "flush()" for work items ... but if you read it this way, you see: > > CPU0

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Johannes Berg
On Mon, 2018-10-22 at 22:14 +0200, Johannes Berg wrote: > "False positives" - which in this case really should more accurately be > called "bad lockdep annotations" - of the kind you report here are > inherent in how lockdep works, and thus following your argument to the > ultimate conclusion you

Re: [PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Johannes Berg
On Mon, 2018-10-22 at 15:18 +, Bart Van Assche wrote: > Lockdep is a tool that developers rely on to find actual bugs. False > positive lockdep warnings are very annoying because it takes time to > analyze these and to verify that the warning is really a false positive > report. Since commit 87

[PATCH] Revert "workqueue: re-add lockdep dependencies for flushing"

2018-10-22 Thread Bart Van Assche
Lockdep is a tool that developers rely on to find actual bugs. False positive lockdep warnings are very annoying because it takes time to analyze these and to verify that the warning is really a false positive report. Since commit 87915adc3f0a ("workqueue: re-add lockdep dependencies for flushing")