mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: cciss: make device attrs static Thaw refrigerated bdi flusher threads before invoking kthread_stop on them
This commit is contained in:
commit
b54eb1795c
2 changed files with 14 additions and 10 deletions
|
@ -482,7 +482,7 @@ static ssize_t host_store_rescan(struct device *dev,
|
|||
|
||||
return count;
|
||||
}
|
||||
DEVICE_ATTR(rescan, S_IWUSR, NULL, host_store_rescan);
|
||||
static DEVICE_ATTR(rescan, S_IWUSR, NULL, host_store_rescan);
|
||||
|
||||
static ssize_t dev_show_unique_id(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
|
@ -512,7 +512,7 @@ static ssize_t dev_show_unique_id(struct device *dev,
|
|||
sn[8], sn[9], sn[10], sn[11],
|
||||
sn[12], sn[13], sn[14], sn[15]);
|
||||
}
|
||||
DEVICE_ATTR(unique_id, S_IRUGO, dev_show_unique_id, NULL);
|
||||
static DEVICE_ATTR(unique_id, S_IRUGO, dev_show_unique_id, NULL);
|
||||
|
||||
static ssize_t dev_show_vendor(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
|
@ -536,7 +536,7 @@ static ssize_t dev_show_vendor(struct device *dev,
|
|||
else
|
||||
return snprintf(buf, sizeof(vendor) + 1, "%s\n", drv->vendor);
|
||||
}
|
||||
DEVICE_ATTR(vendor, S_IRUGO, dev_show_vendor, NULL);
|
||||
static DEVICE_ATTR(vendor, S_IRUGO, dev_show_vendor, NULL);
|
||||
|
||||
static ssize_t dev_show_model(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
|
@ -560,7 +560,7 @@ static ssize_t dev_show_model(struct device *dev,
|
|||
else
|
||||
return snprintf(buf, sizeof(model) + 1, "%s\n", drv->model);
|
||||
}
|
||||
DEVICE_ATTR(model, S_IRUGO, dev_show_model, NULL);
|
||||
static DEVICE_ATTR(model, S_IRUGO, dev_show_model, NULL);
|
||||
|
||||
static ssize_t dev_show_rev(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
|
@ -584,7 +584,7 @@ static ssize_t dev_show_rev(struct device *dev,
|
|||
else
|
||||
return snprintf(buf, sizeof(rev) + 1, "%s\n", drv->rev);
|
||||
}
|
||||
DEVICE_ATTR(rev, S_IRUGO, dev_show_rev, NULL);
|
||||
static DEVICE_ATTR(rev, S_IRUGO, dev_show_rev, NULL);
|
||||
|
||||
static ssize_t cciss_show_lunid(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
|
@ -609,7 +609,7 @@ static ssize_t cciss_show_lunid(struct device *dev,
|
|||
lunid[0], lunid[1], lunid[2], lunid[3],
|
||||
lunid[4], lunid[5], lunid[6], lunid[7]);
|
||||
}
|
||||
DEVICE_ATTR(lunid, S_IRUGO, cciss_show_lunid, NULL);
|
||||
static DEVICE_ATTR(lunid, S_IRUGO, cciss_show_lunid, NULL);
|
||||
|
||||
static ssize_t cciss_show_raid_level(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
|
@ -632,7 +632,7 @@ static ssize_t cciss_show_raid_level(struct device *dev,
|
|||
return snprintf(buf, strlen(raid_label[raid]) + 7, "RAID %s\n",
|
||||
raid_label[raid]);
|
||||
}
|
||||
DEVICE_ATTR(raid_level, S_IRUGO, cciss_show_raid_level, NULL);
|
||||
static DEVICE_ATTR(raid_level, S_IRUGO, cciss_show_raid_level, NULL);
|
||||
|
||||
static ssize_t cciss_show_usage_count(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
|
@ -651,7 +651,7 @@ static ssize_t cciss_show_usage_count(struct device *dev,
|
|||
spin_unlock_irqrestore(CCISS_LOCK(h->ctlr), flags);
|
||||
return snprintf(buf, 20, "%d\n", count);
|
||||
}
|
||||
DEVICE_ATTR(usage_count, S_IRUGO, cciss_show_usage_count, NULL);
|
||||
static DEVICE_ATTR(usage_count, S_IRUGO, cciss_show_usage_count, NULL);
|
||||
|
||||
static struct attribute *cciss_host_attrs[] = {
|
||||
&dev_attr_rescan.attr,
|
||||
|
|
|
@ -604,11 +604,15 @@ static void bdi_wb_shutdown(struct backing_dev_info *bdi)
|
|||
|
||||
/*
|
||||
* Finally, kill the kernel threads. We don't need to be RCU
|
||||
* safe anymore, since the bdi is gone from visibility.
|
||||
* safe anymore, since the bdi is gone from visibility. Force
|
||||
* unfreeze of the thread before calling kthread_stop(), otherwise
|
||||
* it would never exet if it is currently stuck in the refrigerator.
|
||||
*/
|
||||
list_for_each_entry(wb, &bdi->wb_list, list)
|
||||
list_for_each_entry(wb, &bdi->wb_list, list) {
|
||||
wb->task->flags &= ~PF_FROZEN;
|
||||
kthread_stop(wb->task);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This bdi is going away now, make sure that no super_blocks point to it
|
||||
|
|
Loading…
Reference in a new issue