xt_quota: use per-rule spin lock
Subsystems (3)
PATCH 1/1 xt_quota: use per-rule spin lock
xt_quota: use per-rule spin lock
use per-rule spin lock to improve the scalability.
Signed-off-by Changli Gao <[email protected]>
----
net/netfilter/xt_quota.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
net/netfilter/xt_quota.c +5 -5
@@ -11,7 +11,8 @@#include <linux/netfilter/xt_quota.h> struct xt_quota_priv { -uint64_t quota; +spinlock_t lock; +uint64_t quota; };MODULE_LICENSE ("GPL" );
@@ -20,8 +21,6 @@ MODULE_DESCRIPTION("Xtables: countdown quota match");MODULE_ALIAS ("ipt_quota" );MODULE_ALIAS ("ip6t_quota" ); -static DEFINE_SPINLOCK (quota_lock); -static bool quota_mt (const struct sk_buff *skb,struct xt_action_param *par) {
@@ -29,7 +28,7 @@ quota_mt(const struct sk_buff *skb, struct xt_action_param *par)struct xt_quota_priv *priv = q->master;bool ret = q->flags &XT_QUOTA_INVERT ; -spin_lock_bh ("a_lock); +spin_lock_bh (&priv->lock);if (priv->quota >= skb->len) { priv->quota -= skb->len; ret = !ret;
@@ -39,7 +38,7 @@ quota_mt(const struct sk_buff *skb, struct xt_action_param *par) }/* Copy quota back to matchinfo so that iptables can display it */ q->quota = priv->quota; -spin_unlock_bh ("a_lock); +spin_unlock_bh (&priv->lock);return ret; }
@@ -55,6 +54,7 @@ static int quota_mt_check(const struct xt_mtchk_param *par)if (q->master ==NULL )return -ENOMEM ; +spin_lock_init (&q->master->lock); q->master->quota = q->quota;return 0 ; }
Patrick McHardy
AppliedQuoted 3 lines · Changli Gao
xt_quota: use per-rule spin lockuse per-rule spin lock to improve the scalability.
Applied, thanks.