From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx3-rdu2.redhat.com ([66.187.233.73]:60874 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752172AbeEPKsd (ORCPT ); Wed, 16 May 2018 06:48:33 -0400 Date: Wed, 16 May 2018 12:48:30 +0200 From: Oleg Nesterov To: Waiman Long Cc: Ingo Molnar , Peter Zijlstra , Thomas Gleixner , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, Davidlohr Bueso , "Theodore Y. Ts'o" , Amir Goldstein , Jan Kara , Matthew Wilcox Subject: Re: [PATCH v4 1/2] locking/rwsem: Add a new RWSEM_ANONYMOUSLY_OWNED flag Message-ID: <20180516104829.GA24332@redhat.com> References: <1526420991-21213-1-git-send-email-longman@redhat.com> <1526420991-21213-2-git-send-email-longman@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1526420991-21213-2-git-send-email-longman@redhat.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On 05/15, Waiman Long wrote: > > There are use cases where a rwsem can be acquired by one task, but > released by another task. In thess cases, optimistic spinning may need > to be disabled. One example will be the filesystem freeze/thaw code You do not read my emails ;) Let me repeat once again that in this particular case the writer will never spin because of owner == NULL. freeze_super() checks SB_UNFROZEN under sb->s_umount and only then calls sb_wait_write(). IOW, sb_wait_write() can only be called when this rwsem was already released by the previous writer. I am not arguing with this change, percpu_rwsem_release/acquire may have another user sometime, but the changelog is not accurate. > +static inline bool is_rwsem_owner_spinnable(struct task_struct *owner) > { > - return owner && owner != RWSEM_READER_OWNED; > + return !((unsigned long)owner & RWSEM_ANONYMOUSLY_OWNED); > } Perhaps you should add __attribute__(aligned) to struct rw_semaphore then... I don't think it is really needed, but see the comment under struct address_space. Oleg.