From owner-freebsd-hackers@FreeBSD.ORG Thu Mar 12 04:14:52 2015 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2C0FA95B for ; Thu, 12 Mar 2015 04:14:52 +0000 (UTC) Received: from mail-lb0-x231.google.com (mail-lb0-x231.google.com [IPv6:2a00:1450:4010:c04::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9DBECFA1 for ; Thu, 12 Mar 2015 04:14:51 +0000 (UTC) Received: by lbiz11 with SMTP id z11so13252149lbi.13; Wed, 11 Mar 2015 21:14:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=uYesIyMHSg7oLZIgI4T3WhutmX4AXbdD9+Q5JxObirE=; b=r4+a2/bttsVj4EFEQpnC+u0Lhsnu/RuEWGL5VkAp2zPiNRfD7sti6M58HmxLMhocO6 A9j91C3aRYxbGP8VV3h2tBiviZ7LzFQKps5ThrC/KvrXZj3GifRBDvAg/EGbYtPR375+ BXRsB9GTz/+RIEgoBkCC1NV8YuGqI089nP/aNA7/Hp5q26TTSYq390vPA8RHUfWfx3/l ZN7YAJX2bw+p1KjmF0DlDuq1zYud6j6g7FMsrNUEXSfXnQA1gQsmrZUrmWAk6bu+fv1F 3n/3AiBQiAzucKQQ0cjzFqjR0/fxYdx84jpU//gzDE61S5VKttX+y8nTtrtAz7eYh17E kZEA== MIME-Version: 1.0 X-Received: by 10.152.204.42 with SMTP id kv10mr30653540lac.52.1426133689691; Wed, 11 Mar 2015 21:14:49 -0700 (PDT) Sender: davide.italiano@gmail.com Received: by 10.25.217.6 with HTTP; Wed, 11 Mar 2015 21:14:49 -0700 (PDT) In-Reply-To: References: <1426079434-51568-1-git-send-email-btw@mail.ustc.edu.cn> Date: Wed, 11 Mar 2015 21:14:49 -0700 X-Google-Sender-Auth: R3uwdB8jvJMcbI61Fcvq-tRvpNc Message-ID: Subject: Re: [PATCH] Finish the task 'Convert mountlist_mtx to rwlock' From: Davide Italiano To: Ryan Stone Content-Type: text/plain; charset=UTF-8 Cc: "freebsd-hackers@freebsd.org" , Tiwei Bie , Mateusz Guzik , wca@freebsd.org X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Mar 2015 04:14:52 -0000 On Wed, Mar 11, 2015 at 9:06 PM, Ryan Stone wrote: > On Wed, Mar 11, 2015 at 9:10 AM, Tiwei Bie wrote: >> Hi, Mateusz! >> >> I have finished the task: Convert mountlist_mtx to rwlock [1]. > > My first comment is, are we sure that we actually want an rwlock here > instead of an rmlock? An rmlock will offer much better performance in > workloads that mostly only take read locks, and rmlocks do not suffer > the priority inversion problems that rwlocks do. From the description > on the wiki page, it sounds like an rmlock would be ideal here: > Snippet: [...] - mtx_unlock(&mountlist_mtx); + rw_runlock(&mountlist_lock); mp->mnt_kern_flag |= MNTK_MWAIT; msleep(mp, MNT_MTX(mp), PVFS | PDROP, "vfs_busy", 0); if (flags & MBF_MNTLSTLOCK) - mtx_lock(&mountlist_mtx); + rw_rlock(&mountlist_lock); [...] My understanding is that readers are not allowed to sleep while holding an rmlock() so a drop-in replacement don't work in this case. -- Davide "There are no solved problems; there are only problems that are more or less solved" -- Henri Poincare