-static ssize_t cpu_list_store(struct device *dev,
- struct device_attribute *attr, const char *buf, size_t count)
-{
- struct backing_dev_info *bdi = dev_get_drvdata(dev);
- struct bdi_writeback *wb = &bdi->wb;
- cpumask_var_t newmask;
- ssize_t ret;
- struct task_struct *task;
-
- if (!alloc_cpumask_var(&newmask, GFP_KERNEL))
- return -ENOMEM;
-
- ret = cpulist_parse(buf, newmask);
- if (!ret) {
- spin_lock_bh(&bdi->wb_lock);
- task = wb->task;
- if (task)
- get_task_struct(task);
- spin_unlock_bh(&bdi->wb_lock);
-
- mutex_lock(&bdi->flusher_cpumask_lock);
- if (task) {
- ret = set_cpus_allowed_ptr(task, newmask);
- put_task_struct(task);
- }
- if (ret == 0) {
- cpumask_copy(bdi->flusher_cpumask, newmask);
- ret = count;
- }
- mutex_unlock(&bdi->flusher_cpumask_lock);
-
- }
- free_cpumask_var(newmask);
-
- return ret;
-}
-
-static ssize_t cpu_list_show(struct device *dev,
- struct device_attribute *attr, char *page)
-{
- struct backing_dev_info *bdi = dev_get_drvdata(dev);
- ssize_t ret;
-
- mutex_lock(&bdi->flusher_cpumask_lock);
- ret = cpulist_scnprintf(page, PAGE_SIZE-1, bdi->flusher_cpumask);
- mutex_unlock(&bdi->flusher_cpumask_lock);
-
- return ret;
-}
-