From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Monakhov Subject: [PATCH 00/19] quota: RFC SMP improvements for generic quota V2 Date: Fri, 22 Oct 2010 21:34:45 +0400 Message-ID: <1287768904-27810-1-git-send-email-dmonakhov@openvz.org> Cc: jack@suse.cz, hch@infradead.org, Dmitry Monakhov To: linux-fsdevel@vger.kernel.org Return-path: Received: from mail-ew0-f46.google.com ([209.85.215.46]:52708 "EHLO mail-ew0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755463Ab0JVRfP (ORCPT ); Fri, 22 Oct 2010 13:35:15 -0400 Received: by ewy7 with SMTP id 7so1449491ewy.19 for ; Fri, 22 Oct 2010 10:35:13 -0700 (PDT) Sender: linux-fsdevel-owner@vger.kernel.org List-ID: This patch set is my attempt to make quota code more scalable. Main goal of this patch-set is to split global locking to per-sb basis. Actually it consists of several parts * Fixes : trivial fixes which i hope will be accepted w/o any complain * Splitup global locks: Imho this part clean and simple. I hope it is also a sane candidate for for_testing branch. * More scalability for single sb : Some of this patches was already submitted previously, some wasn't. This part is just my first vision of the way we can move. This way result in real speedup, but i'm not shure about design solutions, please do not punch me too strong if you dont like that direction. This patch-set survived after some stress testing * parallel quota{on,off} * fssress * triggering ENOSPC Performance: I've prepared some basic benchmarks results http://download.openvz.org/~dmonakhov/docs/quota/quota-v2.html Changes from V1 * random fixes according to Jan's comments + fix spelling + fix deadlock on dquot_transfer, and lock_dep issues - list_lock patches split is still the same as before. * move quota data from sb to dedicated pointer. * Basic improvements fore per-sb scalability patch against 2.6.36-rc5, linux-fs-2.6.git for_testing branch quota: protect getfmt call with dqonoff_mutex lock quota: Wrap common expression to helper function quota: mode quota internals from sb to quota_info quota: Convert dq_state_lock to per-sb dq_state_lock quota: add quota format lock quota: make dquot lists per-sb quota: make per-sb hash array quota: remove global dq_list_lock quota: rename dq_lock quota: make per-sb dq_data_lock quota: protect dquot mem info with object's lock quota: drop dq_data_lock where possible quota: relax dq_data_lock dq_lock locking consistency quota: protect dqget() from parallels quotaoff via RCU quota: remove dq_state_lock fs: add unlocked helpers quota: Some stylistic cleanup for dquot interface quota: remove dqptr_sem quota: redesign dquot reference counting