diff options
Diffstat (limited to 'mm/backing-dev.c')
| -rw-r--r-- | mm/backing-dev.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index f13e067e1467..707d0dc6da0f 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c | |||
| @@ -11,6 +11,8 @@ | |||
| 11 | #include <linux/writeback.h> | 11 | #include <linux/writeback.h> |
| 12 | #include <linux/device.h> | 12 | #include <linux/device.h> |
| 13 | 13 | ||
| 14 | static atomic_long_t bdi_seq = ATOMIC_LONG_INIT(0); | ||
| 15 | |||
| 14 | void default_unplug_io_fn(struct backing_dev_info *bdi, struct page *page) | 16 | void default_unplug_io_fn(struct backing_dev_info *bdi, struct page *page) |
| 15 | { | 17 | { |
| 16 | } | 18 | } |
| @@ -25,6 +27,11 @@ struct backing_dev_info default_backing_dev_info = { | |||
| 25 | }; | 27 | }; |
| 26 | EXPORT_SYMBOL_GPL(default_backing_dev_info); | 28 | EXPORT_SYMBOL_GPL(default_backing_dev_info); |
| 27 | 29 | ||
| 30 | struct backing_dev_info noop_backing_dev_info = { | ||
| 31 | .name = "noop", | ||
| 32 | }; | ||
| 33 | EXPORT_SYMBOL_GPL(noop_backing_dev_info); | ||
| 34 | |||
| 28 | static struct class *bdi_class; | 35 | static struct class *bdi_class; |
| 29 | 36 | ||
| 30 | /* | 37 | /* |
| @@ -715,6 +722,33 @@ void bdi_destroy(struct backing_dev_info *bdi) | |||
| 715 | } | 722 | } |
| 716 | EXPORT_SYMBOL(bdi_destroy); | 723 | EXPORT_SYMBOL(bdi_destroy); |
| 717 | 724 | ||
| 725 | /* | ||
| 726 | * For use from filesystems to quickly init and register a bdi associated | ||
| 727 | * with dirty writeback | ||
| 728 | */ | ||
| 729 | int bdi_setup_and_register(struct backing_dev_info *bdi, char *name, | ||
| 730 | unsigned int cap) | ||
| 731 | { | ||
| 732 | char tmp[32]; | ||
| 733 | int err; | ||
| 734 | |||
| 735 | bdi->name = name; | ||
| 736 | bdi->capabilities = cap; | ||
| 737 | err = bdi_init(bdi); | ||
| 738 | if (err) | ||
| 739 | return err; | ||
| 740 | |||
| 741 | sprintf(tmp, "%.28s%s", name, "-%d"); | ||
| 742 | err = bdi_register(bdi, NULL, tmp, atomic_long_inc_return(&bdi_seq)); | ||
| 743 | if (err) { | ||
| 744 | bdi_destroy(bdi); | ||
| 745 | return err; | ||
| 746 | } | ||
| 747 | |||
| 748 | return 0; | ||
| 749 | } | ||
| 750 | EXPORT_SYMBOL(bdi_setup_and_register); | ||
| 751 | |||
| 718 | static wait_queue_head_t congestion_wqh[2] = { | 752 | static wait_queue_head_t congestion_wqh[2] = { |
| 719 | __WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[0]), | 753 | __WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[0]), |
| 720 | __WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[1]) | 754 | __WAIT_QUEUE_HEAD_INITIALIZER(congestion_wqh[1]) |
