Re: [PATCH 12/19] kernel: convert css_set.refcount from atomic_t to refcount_t
From: Tejun Heo <hidden>
Date: 2017-03-06 19:54:42
Also in:
linux-fsdevel, lkml
From: Tejun Heo <hidden>
Date: 2017-03-06 19:54:42
Also in:
linux-fsdevel, lkml
Hello, On Mon, Feb 20, 2017 at 12:19:01PM +0200, Elena Reshetova wrote:
@@ -134,10 +135,13 @@ static inline void put_css_set(struct css_set *cset) * can see it. Similar to atomic_dec_and_lock(), but for an * rwlock */ - if (atomic_add_unless(&cset->refcount, -1, 1)) + spin_lock_irqsave(&css_set_lock, flags); + if (refcount_read(&cset->refcount) != 1) { + WARN_ON(refcount_dec_and_test(&cset->refcount)); + spin_unlock_irqrestore(&css_set_lock, flags); return; + }
This isn't an equivalent conversion and should have been mentioned in the patch description. Hmm... and I'm not sure this is a good idea. Can't we add the matching operation on refcount_t rather than adding extra locking like this? Thanks. -- tejun