|
@@ -2389,12 +2389,12 @@ xfs_icsb_modify_counters(
|
|
|
{
|
|
|
xfs_icsb_cnts_t *icsbp;
|
|
|
long long lcounter; /* long counter for 64 bit fields */
|
|
|
- int cpu, ret = 0;
|
|
|
+ int ret = 0;
|
|
|
|
|
|
might_sleep();
|
|
|
again:
|
|
|
- cpu = get_cpu();
|
|
|
- icsbp = (xfs_icsb_cnts_t *)per_cpu_ptr(mp->m_sb_cnts, cpu);
|
|
|
+ preempt_disable();
|
|
|
+ icsbp = this_cpu_ptr(mp->m_sb_cnts);
|
|
|
|
|
|
/*
|
|
|
* if the counter is disabled, go to slow path
|
|
@@ -2438,11 +2438,11 @@ again:
|
|
|
break;
|
|
|
}
|
|
|
xfs_icsb_unlock_cntr(icsbp);
|
|
|
- put_cpu();
|
|
|
+ preempt_enable();
|
|
|
return 0;
|
|
|
|
|
|
slow_path:
|
|
|
- put_cpu();
|
|
|
+ preempt_enable();
|
|
|
|
|
|
/*
|
|
|
* serialise with a mutex so we don't burn lots of cpu on
|
|
@@ -2490,7 +2490,7 @@ slow_path:
|
|
|
|
|
|
balance_counter:
|
|
|
xfs_icsb_unlock_cntr(icsbp);
|
|
|
- put_cpu();
|
|
|
+ preempt_enable();
|
|
|
|
|
|
/*
|
|
|
* We may have multiple threads here if multiple per-cpu
|