diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2013-11-04 05:15:08 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2013-11-04 06:17:49 -0500 |
commit | 2147dbfd059eb7fefcfd5934f74f25f0693d4a1f (patch) | |
tree | 8cc89a827bcc48f529698bef65eb61216562425a /fs/gfs2/quota.h | |
parent | 7d80823e1d83e35977d77ae201bf63af3317ad0a (diff) |
GFS2: Use generic list_lru for quota
By using the generic list_lru code, we can now separate the
per sb quota list locking from the lru locking. The lru
lock is made into the inner-most lock.
As a result of this new lock order, we may occasionally see
items on the per-sb quota list which are "dead" so that the
two places where we traverse that list are updated to take
account of that.
As a result of this patch, the gfs2 quota shrinker is now
NUMA zone aware, and we are also laying the foundations for
further improvments in due course.
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Signed-off-by: Abhijith Das <adas@redhat.com>
Tested-by: Abhijith Das <adas@redhat.com>
Cc: Dave Chinner <dchinner@redhat.com>
Diffstat (limited to 'fs/gfs2/quota.h')
-rw-r--r-- | fs/gfs2/quota.h | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/gfs2/quota.h b/fs/gfs2/quota.h index 0f64d9deb1b0..96e4f34a03b0 100644 --- a/fs/gfs2/quota.h +++ b/fs/gfs2/quota.h | |||
@@ -10,9 +10,10 @@ | |||
10 | #ifndef __QUOTA_DOT_H__ | 10 | #ifndef __QUOTA_DOT_H__ |
11 | #define __QUOTA_DOT_H__ | 11 | #define __QUOTA_DOT_H__ |
12 | 12 | ||
13 | #include <linux/list_lru.h> | ||
14 | |||
13 | struct gfs2_inode; | 15 | struct gfs2_inode; |
14 | struct gfs2_sbd; | 16 | struct gfs2_sbd; |
15 | struct shrink_control; | ||
16 | 17 | ||
17 | #define NO_UID_QUOTA_CHANGE INVALID_UID | 18 | #define NO_UID_QUOTA_CHANGE INVALID_UID |
18 | #define NO_GID_QUOTA_CHANGE INVALID_GID | 19 | #define NO_GID_QUOTA_CHANGE INVALID_GID |
@@ -53,10 +54,8 @@ static inline int gfs2_quota_lock_check(struct gfs2_inode *ip) | |||
53 | return ret; | 54 | return ret; |
54 | } | 55 | } |
55 | 56 | ||
56 | extern unsigned long gfs2_qd_shrink_count(struct shrinker *shrink, | ||
57 | struct shrink_control *sc); | ||
58 | extern unsigned long gfs2_qd_shrink_scan(struct shrinker *shrink, | ||
59 | struct shrink_control *sc); | ||
60 | extern const struct quotactl_ops gfs2_quotactl_ops; | 57 | extern const struct quotactl_ops gfs2_quotactl_ops; |
58 | extern struct shrinker gfs2_qd_shrinker; | ||
59 | extern struct list_lru gfs2_qd_lru; | ||
61 | 60 | ||
62 | #endif /* __QUOTA_DOT_H__ */ | 61 | #endif /* __QUOTA_DOT_H__ */ |