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>
Tento commit je obsažen v:
@@ -10,9 +10,10 @@
|
||||
#ifndef __QUOTA_DOT_H__
|
||||
#define __QUOTA_DOT_H__
|
||||
|
||||
#include <linux/list_lru.h>
|
||||
|
||||
struct gfs2_inode;
|
||||
struct gfs2_sbd;
|
||||
struct shrink_control;
|
||||
|
||||
#define NO_UID_QUOTA_CHANGE INVALID_UID
|
||||
#define NO_GID_QUOTA_CHANGE INVALID_GID
|
||||
@@ -53,10 +54,8 @@ static inline int gfs2_quota_lock_check(struct gfs2_inode *ip)
|
||||
return ret;
|
||||
}
|
||||
|
||||
extern unsigned long gfs2_qd_shrink_count(struct shrinker *shrink,
|
||||
struct shrink_control *sc);
|
||||
extern unsigned long gfs2_qd_shrink_scan(struct shrinker *shrink,
|
||||
struct shrink_control *sc);
|
||||
extern const struct quotactl_ops gfs2_quotactl_ops;
|
||||
extern struct shrinker gfs2_qd_shrinker;
|
||||
extern struct list_lru gfs2_qd_lru;
|
||||
|
||||
#endif /* __QUOTA_DOT_H__ */
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele