[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150521081534.GA13975@debian>
Date: Thu, 21 May 2015 10:15:34 +0200
From: AdrianRemonda <adrianremonda@...il.com>
To: Dan Carpenter <dan.carpenter@...cle.com>
Cc: "open list:STAGING SUBSYSTEM" <devel@...verdev.osuosl.org>,
"moderated list:STAGING - LUSTRE..." <HPDD-discuss@...1.01.org>,
Andreas Dilger <andreas.dilger@...el.com>,
Greg Donald <gdonald@...il.com>,
open list <linux-kernel@...r.kernel.org>,
Oleg Drokin <oleg.drokin@...el.com>,
Julia Lawall <Julia.Lawall@...6.fr>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Joe Perches <joe@...ches.com>
Subject: Re: [PATCH 4/4] Staging: lustre: sparse lock warning fix
On Tue, May 19, 2015 at 12:21:15AM +0300, Dan Carpenter wrote:
> On Mon, May 18, 2015 at 08:34:51PM +0200, Adrian Remonda wrote:
> > Fixed sparse warning: context imbalance in 'nrs_resource_put_safe' -
> > 'different lock contexts for basic block' by releasing the lock on each
> > iteration of the for loop.
> >
>
> That changelog doesn't sound correct at all. That's not a correct
> motivation or explanation.
>
> I reviewed the patch and it's likely going to cause dead locks. The code
> is trying to take the spinlock for the first pointer in the array and
> release it at the end. Now it takes the first pointer's spinlock a
> bunch of times (dead lock) and releases it once (will not happen because
> we are already dead).
>
>
Hello Dan,
thanks for the comments. The code would end up looking as next, I don't
undertand where the deadlock would be.
I know the older code would work, I just changed it to keep the lock
locked the less time as possible.
for (i = 0; i < NRS_RES_MAX; i++) {
if (pols[i] == NULL)
continue;
if (nrs == NULL) {
nrs = pols[i]->pol_nrs;
}
spin_lock(&nrs->nrs_lock);
nrs_policy_put_locked(pols[i]);
spin_unlock(&nrs->nrs_lock);
}
best regards,
Adrian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists