Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 64759646 authored by threader's avatar threader Committed by Bernhard Thoben
Browse files

Revert "list_lru: dynamically adjust node arrays"

This reverts commit b72bdd1bf94b9d538c53c95a85c67e5bc07b45aa.
parent 80a5357c
Loading
Loading
Loading
Loading
+2 −10
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@
#include <linux/cleancache.h>
#include <linux/fsnotify.h>
#include <linux/lockdep.h>
#include <linux/list_lru.h>
#include "internal.h"


@@ -171,12 +170,8 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags)
		INIT_HLIST_NODE(&s->s_instances);
		INIT_HLIST_BL_HEAD(&s->s_anon);
		INIT_LIST_HEAD(&s->s_inodes);

		if (list_lru_init(&s->s_dentry_lru))
			goto err_out;
		if (list_lru_init(&s->s_inode_lru))
			goto err_out_dentry_lru;

		INIT_LIST_HEAD(&s->s_dentry_lru);
		INIT_LIST_HEAD(&s->s_inode_lru);
		spin_lock_init(&s->s_inode_lru_lock);
		INIT_LIST_HEAD(&s->s_mounts);
		init_rwsem(&s->s_umount);
@@ -215,9 +210,6 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags)
	}
out:
	return s;

err_out_dentry_lru:
	list_lru_destroy(&s->s_dentry_lru);
err_out:
	security_sb_free(s);
	destroy_sb_writers(s);
+0 −7
Original line number Diff line number Diff line
@@ -1586,7 +1586,6 @@ xfs_free_buftarg(
	struct xfs_mount	*mp,
	struct xfs_buftarg	*btp)
{
	list_lru_destroy(&btp->bt_lru);
	unregister_shrinker(&btp->bt_shrinker);

	if (mp->m_flags & XFS_MOUNT_BARRIER)
@@ -1661,12 +1660,6 @@ xfs_alloc_buftarg(
	if (!btp->bt_bdi)
		goto error;

	if (xfs_setsize_buftarg_early(btp, bdev))
		goto error;

	if (list_lru_init(&btp->bt_lru))
		goto error;

	INIT_LIST_HEAD(&btp->bt_lru);
	spin_lock_init(&btp->bt_lru_lock);
	if (xfs_setsize_buftarg_early(btp, bdev))
+0 −11
Original line number Diff line number Diff line
@@ -648,18 +648,11 @@ xfs_qm_init_quotainfo(

	qinf = mp->m_quotainfo = kmem_zalloc(sizeof(xfs_quotainfo_t), KM_SLEEP);

	if ((error = list_lru_init(&qinf->qi_lru))) {
		kmem_free(qinf);
		mp->m_quotainfo = NULL;
		return error;
	}

	/*
	 * See if quotainodes are setup, and if not, allocate them,
	 * and change the superblock accordingly.
	 */
	if ((error = xfs_qm_init_quotainos(mp))) {
		list_lru_destroy(&qinf->qi_lru);
		kmem_free(qinf);
		mp->m_quotainfo = NULL;
		return error;
@@ -669,13 +662,10 @@ xfs_qm_init_quotainfo(
	INIT_RADIX_TREE(&qinf->qi_gquota_tree, GFP_NOFS);
	mutex_init(&qinf->qi_tree_lock);

<<<<<<< HEAD
	INIT_LIST_HEAD(&qinf->qi_lru_list);
	qinf->qi_lru_count = 0;
	mutex_init(&qinf->qi_lru_lock);

=======
>>>>>>> 5ca302c8e502 (list_lru: dynamically adjust node arrays)
	/* mutex used to serialize quotaoffs */
	mutex_init(&qinf->qi_quotaofflock);

@@ -761,7 +751,6 @@ xfs_qm_destroy_quotainfo(
	qi = mp->m_quotainfo;
	ASSERT(qi != NULL);

	list_lru_destroy(&qi->qi_lru);
	unregister_shrinker(&qi->qi_shrinker);

	if (qi->qi_uquotaip) {
+11 −2
Original line number Diff line number Diff line
@@ -27,11 +27,20 @@ struct list_lru_node {
} ____cacheline_aligned_in_smp;

struct list_lru {
	struct list_lru_node	*node;
	/*
	 * Because we use a fixed-size array, this struct can be very big if
	 * MAX_NUMNODES is big. If this becomes a problem this is fixable by
	 * turning this into a pointer and dynamically allocating this to
	 * nr_node_ids. This quantity is firwmare-provided, and still would
	 * provide room for all nodes at the cost of a pointer lookup and an
	 * extra allocation. Because that allocation will most likely come from
	 * a different slab cache than the main structure holding this
	 * structure, we may very well fail.
	 */
	struct list_lru_node	node[MAX_NUMNODES];
	nodemask_t		active_nodes;
};

void list_lru_destroy(struct list_lru *lru);
int list_lru_init(struct list_lru *lru);

/**
+1 −13
Original line number Diff line number Diff line
@@ -8,7 +8,6 @@
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/list_lru.h>
#include <linux/slab.h>

bool list_lru_add(struct list_lru *lru, struct list_head *item)
{
@@ -159,14 +158,9 @@ unsigned long list_lru_dispose_all(struct list_lru *lru,
int list_lru_init(struct list_lru *lru)
{
	int i;
	size_t size = sizeof(*lru->node) * nr_node_ids;

	lru->node = kzalloc(size, GFP_KERNEL);
	if (!lru->node)
		return -ENOMEM;

	nodes_clear(lru->active_nodes);
	for (i = 0; i < nr_node_ids; i++) {
	for (i = 0; i < MAX_NUMNODES; i++) {
		spin_lock_init(&lru->node[i].lock);
		INIT_LIST_HEAD(&lru->node[i].list);
		lru->node[i].nr_items = 0;
@@ -174,9 +168,3 @@ int list_lru_init(struct list_lru *lru)
	return 0;
}
EXPORT_SYMBOL_GPL(list_lru_init);

void list_lru_destroy(struct list_lru *lru)
{
	kfree(lru->node);
}
EXPORT_SYMBOL_GPL(list_lru_destroy);