mm: add context argument to shrinker callback
The current shrinker implementation requires the registered callback to have global state to work from. This makes it difficult to shrink caches that are not global (e.g. per-filesystem caches). Pass the shrinker structure to the callback so that users can embed the shrinker structure in the context the shrinker needs to operate on and get back to it in the callback via container_of(). Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:

committed by
Dave Chinner

parent
d0c6f62584
commit
7f8275d0d6
@@ -69,7 +69,7 @@ STATIC void xfs_qm_list_destroy(xfs_dqlist_t *);
|
||||
|
||||
STATIC int xfs_qm_init_quotainos(xfs_mount_t *);
|
||||
STATIC int xfs_qm_init_quotainfo(xfs_mount_t *);
|
||||
STATIC int xfs_qm_shake(int, gfp_t);
|
||||
STATIC int xfs_qm_shake(struct shrinker *, int, gfp_t);
|
||||
|
||||
static struct shrinker xfs_qm_shaker = {
|
||||
.shrink = xfs_qm_shake,
|
||||
@@ -2117,7 +2117,10 @@ xfs_qm_shake_freelist(
|
||||
*/
|
||||
/* ARGSUSED */
|
||||
STATIC int
|
||||
xfs_qm_shake(int nr_to_scan, gfp_t gfp_mask)
|
||||
xfs_qm_shake(
|
||||
struct shrinker *shrink,
|
||||
int nr_to_scan,
|
||||
gfp_t gfp_mask)
|
||||
{
|
||||
int ndqused, nfree, n;
|
||||
|
||||
|
Reference in New Issue
Block a user