Hello, this is a series of patches that address scalability issues in quota subsystem. For my testing I've used a synthetic benchmark where 50 different processes are creating files 10000 files each in separate directories (either for different or the same user). I've been testing on a machine with 48 CPUs with 64GB of RAM over either SATA drive or ramdisk. Different patches have shown improvements in different configs (see details in the changelog). Also Wang Shilong gave some testing to my patches and in his setup he saw about 100% improvement for file creation and about 50% improvement for file unlink. The patches have passed xfstests on ext4. First 14 patches convert users of a global dqio_mutex to rw semaphore and also avoid using the semaphore altogether in cases where we don't need it - in particular we now use dquot->dq_lock for protecting writeout of dquot (which happens very frequently on every usage change). Patches 15-18 are smaller fixes / cleanups. Patches 19-22 allow filesystem to not use dirty dquot list (as e.g. ext4 does not need it), reducing contention on global dq_list_lock significantly. Patches 23-27 remove use of global dq_data_lock for quota usage changes (by using new dquot->dq_dqb_lock). Full series can be also fetched from my tree at: git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git quota_scaling Unless someone objects, I'll queue the patches in my tree for the next merge window. Changes since v1: * Improvements from Andreas Dilger * Added Andreas' Reviewed-by tags Honza