fs: Convert nr_inodes and nr_unused to per-cpu counters

The number of inodes allocated does not need to be tied to the
addition or removal of an inode to/from a list. If we are not tied
to a list lock, we could update the counters when inodes are
initialised or destroyed, but to do that we need to convert the
counters to be per-cpu (i.e. independent of a lock). This means that
we have the freedom to change the list/locking implementation
without needing to care about the counters.

Based on a patch originally from Eric Dumazet.

[AV: cleaned up a bit, fixed build breakage on weird configs

Signed-off-by: Dave Chinner <[email protected]>
Reviewed-by: Christoph Hellwig <[email protected]>
Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
Dave Chinner 2010-10-23 05:03:02 -04:00 • committed by Al Viro
commit cffbc8aa33
5 changed files with 52 additions and 25 deletions

View file

@ -105,4 +105,5 @@ extern void release_open_intent(struct nameidata *);
/*
* inode.c
*/
extern int get_nr_dirty_inodes(void);
extern int invalidate_inodes(struct super_block *);