You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge commit 'v2.6.28' into core/core
This commit is contained in:
@@ -135,7 +135,7 @@ int unregister_dynamic_debug_module(char *mod_name)
|
||||
nr_entries--;
|
||||
out:
|
||||
up(&debug_list_mutex);
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(unregister_dynamic_debug_module);
|
||||
|
||||
@@ -289,7 +289,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
|
||||
dynamic_enabled = DYNAMIC_ENABLED_SOME;
|
||||
err = 0;
|
||||
printk(KERN_DEBUG
|
||||
"debugging enabled for module %s",
|
||||
"debugging enabled for module %s\n",
|
||||
elem->name);
|
||||
} else if (!value && (elem->enable == 1)) {
|
||||
elem->enable = 0;
|
||||
@@ -309,7 +309,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
|
||||
err = 0;
|
||||
printk(KERN_DEBUG
|
||||
"debugging disabled for module "
|
||||
"%s", elem->name);
|
||||
"%s\n", elem->name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,6 +185,7 @@ static int sub_alloc(struct idr *idp, int *starting_id, struct idr_layer **pa)
|
||||
new = get_from_free_list(idp);
|
||||
if (!new)
|
||||
return -1;
|
||||
new->layer = l-1;
|
||||
rcu_assign_pointer(p->ary[m], new);
|
||||
p->count++;
|
||||
}
|
||||
@@ -210,6 +211,7 @@ build_up:
|
||||
if (unlikely(!p)) {
|
||||
if (!(p = get_from_free_list(idp)))
|
||||
return -1;
|
||||
p->layer = 0;
|
||||
layers = 1;
|
||||
}
|
||||
/*
|
||||
@@ -218,8 +220,14 @@ build_up:
|
||||
*/
|
||||
while ((layers < (MAX_LEVEL - 1)) && (id >= (1 << (layers*IDR_BITS)))) {
|
||||
layers++;
|
||||
if (!p->count)
|
||||
if (!p->count) {
|
||||
/* special case: if the tree is currently empty,
|
||||
* then we grow the tree by moving the top node
|
||||
* upwards.
|
||||
*/
|
||||
p->layer++;
|
||||
continue;
|
||||
}
|
||||
if (!(new = get_from_free_list(idp))) {
|
||||
/*
|
||||
* The allocation failed. If we built part of
|
||||
@@ -237,6 +245,7 @@ build_up:
|
||||
}
|
||||
new->ary[0] = p;
|
||||
new->count = 1;
|
||||
new->layer = layers-1;
|
||||
if (p->bitmap == IDR_FULL)
|
||||
__set_bit(0, &new->bitmap);
|
||||
p = new;
|
||||
@@ -493,17 +502,21 @@ void *idr_find(struct idr *idp, int id)
|
||||
int n;
|
||||
struct idr_layer *p;
|
||||
|
||||
n = idp->layers * IDR_BITS;
|
||||
p = rcu_dereference(idp->top);
|
||||
if (!p)
|
||||
return NULL;
|
||||
n = (p->layer+1) * IDR_BITS;
|
||||
|
||||
/* Mask off upper bits we don't use for the search. */
|
||||
id &= MAX_ID_MASK;
|
||||
|
||||
if (id >= (1 << n))
|
||||
return NULL;
|
||||
BUG_ON(n == 0);
|
||||
|
||||
while (n > 0 && p) {
|
||||
n -= IDR_BITS;
|
||||
BUG_ON(n != p->layer*IDR_BITS);
|
||||
p = rcu_dereference(p->ary[(id >> n) & IDR_MASK]);
|
||||
}
|
||||
return((void *)p);
|
||||
@@ -582,8 +595,11 @@ void *idr_replace(struct idr *idp, void *ptr, int id)
|
||||
int n;
|
||||
struct idr_layer *p, *old_p;
|
||||
|
||||
n = idp->layers * IDR_BITS;
|
||||
p = idp->top;
|
||||
if (!p)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
n = (p->layer+1) * IDR_BITS;
|
||||
|
||||
id &= MAX_ID_MASK;
|
||||
|
||||
|
||||
@@ -62,10 +62,7 @@ s64 __percpu_counter_sum(struct percpu_counter *fbc)
|
||||
for_each_online_cpu(cpu) {
|
||||
s32 *pcount = per_cpu_ptr(fbc->counters, cpu);
|
||||
ret += *pcount;
|
||||
*pcount = 0;
|
||||
}
|
||||
fbc->count = ret;
|
||||
|
||||
spin_unlock(&fbc->lock);
|
||||
return ret;
|
||||
}
|
||||
@@ -104,13 +101,13 @@ void percpu_counter_destroy(struct percpu_counter *fbc)
|
||||
if (!fbc->counters)
|
||||
return;
|
||||
|
||||
free_percpu(fbc->counters);
|
||||
fbc->counters = NULL;
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
mutex_lock(&percpu_counters_lock);
|
||||
list_del(&fbc->list);
|
||||
mutex_unlock(&percpu_counters_lock);
|
||||
#endif
|
||||
free_percpu(fbc->counters);
|
||||
fbc->counters = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(percpu_counter_destroy);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user