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


Groups > linux.kernel > #1715306

Re: [PATCH v2] blktrace: Fix potentail deadlock between delete & sysfs ops

From Bart Van Assche <Bart.VanAssche@wdc.com>
Newsgroups linux.kernel
Subject Re: [PATCH v2] blktrace: Fix potentail deadlock between delete & sysfs ops
Date 2017-08-18 18:30 +0200
Message-ID <ufSjL-6dn-13@gated-at.bofh.it> (permalink)
References (1 earlier) <uftbH-5uW-3@gated-at.bofh.it> <ufvQd-7mK-5@gated-at.bofh.it> <ufAmS-21P-33@gated-at.bofh.it> <ufAGe-2aJ-31@gated-at.bofh.it> <ufPYC-4vA-37@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Fri, 2017-08-18 at 09:55 -0400, Waiman Long wrote:
> On 08/17/2017 05:30 PM, Steven Rostedt wrote:
> > On Thu, 17 Aug 2017 17:10:07 -0400
> > Steven Rostedt <rostedt@goodmis.org> wrote:
> > > Instead of playing games with taking the lock, the only way this race
> > > is hit, is if the partition is being deleted and the sysfs attribute is
> > > being read at the same time, correct? In that case, just return
> > > -ENODEV, and be done with it.
> > 
> > Nevermind that wont work. Too bad there's not a mutex_lock_timeout()
> > that we could use in a loop. It would solve the issue of forward
> > progress with RT tasks, and will break after a timeout in case of
> > deadlock.
> 
> I think it will be useful to have mutex_timed_lock(). RT-mutex does have
> a timed version, so I guess it shouldn't be hard to implement one for
> mutex. I can take a shot at trying to do that.

(just caught up with the entire e-mail thread)

Sorry Waiman but personally I thoroughly detest loops around mutex_trylock() or
mutex_timed_lock() because such loops are usually used to paper over a problem
instead of fixing the root cause. What I understood from the comment in v1 of your
patch is that bd_mutex is not only held during block device creation and removal
but additionally that bd_mutex is obtained inside sysfs attribute callback methods?
That pattern is guaranteed to lead to deadlocks. Since the block device removal
code waits until all sysfs callback methods have finished there is no need to
protect against block device removal inside the sysfs callback methods. My proposal
is to split bd_mutex: one global mutex that serializes block device creation and
removal and one mutex per block device that serializes changes to a single block
device. Obtaining the global mutex from inside a block device sysfs callback
function is not safe but obtaining the per-block-device mutex from inside a sysfs
callback function is safe.

Bart.

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2] blktrace: Fix potentail deadlock between delete & sysfs ops Waiman Long <longman@redhat.com> - 2017-08-16 22:50 +0200
  Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-17 15:40 +0200
    Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Waiman Long <longman@redhat.com> - 2017-08-17 18:30 +0200
      Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-17 22:40 +0200
        Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Bart Van Assche <Bart.VanAssche@wdc.com> - 2017-08-17 22:50 +0200
          Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-17 23:00 +0200
      Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-17 23:20 +0200
        Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Waiman Long <longman@redhat.com> - 2017-08-17 23:30 +0200
          Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-18 00:20 +0200
            Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-18 01:30 +0200
              Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Waiman Long <longman@redhat.com> - 2017-08-18 15:50 +0200
          Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-18 00:20 +0200
        Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-17 23:40 +0200
          Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Waiman Long <longman@redhat.com> - 2017-08-18 16:00 +0200
            Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Bart Van Assche <Bart.VanAssche@wdc.com> - 2017-08-18 18:30 +0200
              Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Waiman Long <longman@redhat.com> - 2017-08-18 19:30 +0200
              Re: [PATCH v2] blktrace: Fix potentail deadlock between delete &  sysfs ops Steven Rostedt <rostedt@goodmis.org> - 2017-08-18 19:30 +0200

csiph-web