On Fri, Dec 15, 2017 at 3:24 PM, Theodore Ts'o <tytso@xxxxxxx> wrote: > seems that lock classification as a solution to cross-release false > positives seems.... unlikely: For this, let me explain more. For example, either to use cross-release or to consider wait_for_completion() in submit_bio_wait() manually using lock_acquire() someday, classifying locks or waiters precisely is needed. All locks should belong to one class if each path of acquisition can be switchable each other within the class at any time. Otherwise, they should belong to a different class. Even though they are different classes but belong to one class roughly, no problem comes into view unless they are connected each other via extra dependency chains. But, once they get connected, we can see problems by the wrong classification. That can happen even w/o cross-release. Of course, as you pointed out, cross-release generates many chains between classes, assuming all classes are well- classified. But, practically well-classifying is not an easy work. So that's why I suggested the way since anyway that's better than removing all. If that's allowed, I can invalidate those waiters, using e.g. completion_init_nomap(). > From: Byungchul Park <byungchul.park@xxxxxxx> > Date: Fri, 8 Dec 2017 18:27:45 +0900 > Subject: Re: [PATCH v4 72/73] xfs: Convert mru cache to XArray > > 1) Firstly, it's hard to assign lock classes *properly*. By > default, it relies on the caller site of lockdep_init_map(), > but we need to assign another class manually, where ordering > rules are complicated so cannot rely on the caller site. That > *only* can be done by experts of the subsystem. > > - Ted -- Thanks, Byungchul