aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-06-16 14:46:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-16 14:46:45 -0400
commitd613839ef987d20f7c9347732b452efd921b97d9 (patch)
tree5998f460596d8dca129d0f116add8f9abddfad38
parent609106b9ac968adbc76ce78c979fc3903a56e16c (diff)
parente212d6f25084e8e9b02a04ba514d7bb1e4a4924a (diff)
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: block: remove some includings of blktrace_api.h mg_disk: seperate mg_disk.h again block: Introduce helper to reset queue limits to default values cfq: remove extraneous '\n' in blktrace output ubifs: register backing_dev_info btrfs: properly register fs backing device block: don't overwrite bdi->state after bdi_init() has been run cfq: cleanup for last_end_request in cfq_data
-rw-r--r--block/blk-core.c6
-rw-r--r--block/blk-settings.c37
-rw-r--r--block/cfq-iosched.c7
-rw-r--r--drivers/block/cciss.c1
-rw-r--r--drivers/block/mg_disk.c28
-rw-r--r--drivers/md/dm.c1
-rw-r--r--fs/bio.c1
-rw-r--r--fs/btrfs/disk-io.c26
-rw-r--r--fs/ubifs/super.c3
-rw-r--r--include/linux/blkdev.h1
-rw-r--r--include/linux/mg_disk.h45
-rw-r--r--mm/bounce.c1
-rw-r--r--mm/highmem.c1
13 files changed, 104 insertions, 54 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index f6452f692501..b06cf5c2a829 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -26,7 +26,6 @@
26#include <linux/swap.h> 26#include <linux/swap.h>
27#include <linux/writeback.h> 27#include <linux/writeback.h>
28#include <linux/task_io_accounting_ops.h> 28#include <linux/task_io_accounting_ops.h>
29#include <linux/blktrace_api.h>
30#include <linux/fault-inject.h> 29#include <linux/fault-inject.h>
31 30
32#define CREATE_TRACE_POINTS 31#define CREATE_TRACE_POINTS
@@ -498,6 +497,11 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
498 497
499 q->backing_dev_info.unplug_io_fn = blk_backing_dev_unplug; 498 q->backing_dev_info.unplug_io_fn = blk_backing_dev_unplug;
500 q->backing_dev_info.unplug_io_data = q; 499 q->backing_dev_info.unplug_io_data = q;
500 q->backing_dev_info.ra_pages =
501 (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
502 q->backing_dev_info.state = 0;
503 q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
504
501 err = bdi_init(&q->backing_dev_info); 505 err = bdi_init(&q->backing_dev_info);
502 if (err) { 506 if (err) {
503 kmem_cache_free(blk_requestq_cachep, q); 507 kmem_cache_free(blk_requestq_cachep, q);
diff --git a/block/blk-settings.c b/block/blk-settings.c
index d71cedc09c4e..7541ea4bf9fe 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -96,6 +96,31 @@ void blk_queue_lld_busy(struct request_queue *q, lld_busy_fn *fn)
96EXPORT_SYMBOL_GPL(blk_queue_lld_busy); 96EXPORT_SYMBOL_GPL(blk_queue_lld_busy);
97 97
98/** 98/**
99 * blk_set_default_limits - reset limits to default values
100 * @limits: the queue_limits structure to reset
101 *
102 * Description:
103 * Returns a queue_limit struct to its default state. Can be used by
104 * stacking drivers like DM that stage table swaps and reuse an
105 * existing device queue.
106 */
107void blk_set_default_limits(struct queue_limits *lim)
108{
109 lim->max_phys_segments = MAX_PHYS_SEGMENTS;
110 lim->max_hw_segments = MAX_HW_SEGMENTS;
111 lim->seg_boundary_mask = BLK_SEG_BOUNDARY_MASK;
112 lim->max_segment_size = MAX_SEGMENT_SIZE;
113 lim->max_sectors = lim->max_hw_sectors = SAFE_MAX_SECTORS;
114 lim->logical_block_size = lim->physical_block_size = lim->io_min = 512;
115 lim->bounce_pfn = BLK_BOUNCE_ANY;
116 lim->alignment_offset = 0;
117 lim->io_opt = 0;
118 lim->misaligned = 0;
119 lim->no_cluster = 0;
120}
121EXPORT_SYMBOL(blk_set_default_limits);
122
123/**
99 * blk_queue_make_request - define an alternate make_request function for a device 124 * blk_queue_make_request - define an alternate make_request function for a device
100 * @q: the request queue for the device to be affected 125 * @q: the request queue for the device to be affected
101 * @mfn: the alternate make_request function 126 * @mfn: the alternate make_request function
@@ -123,18 +148,8 @@ void blk_queue_make_request(struct request_queue *q, make_request_fn *mfn)
123 * set defaults 148 * set defaults
124 */ 149 */
125 q->nr_requests = BLKDEV_MAX_RQ; 150 q->nr_requests = BLKDEV_MAX_RQ;
126 blk_queue_max_phys_segments(q, MAX_PHYS_SEGMENTS);
127 blk_queue_max_hw_segments(q, MAX_HW_SEGMENTS);
128 blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);
129 blk_queue_max_segment_size(q, MAX_SEGMENT_SIZE);
130 151
131 q->make_request_fn = mfn; 152 q->make_request_fn = mfn;
132 q->backing_dev_info.ra_pages =
133 (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
134 q->backing_dev_info.state = 0;
135 q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
136 blk_queue_max_sectors(q, SAFE_MAX_SECTORS);
137 blk_queue_logical_block_size(q, 512);
138 blk_queue_dma_alignment(q, 511); 153 blk_queue_dma_alignment(q, 511);
139 blk_queue_congestion_threshold(q); 154 blk_queue_congestion_threshold(q);
140 q->nr_batching = BLK_BATCH_REQ; 155 q->nr_batching = BLK_BATCH_REQ;
@@ -147,6 +162,8 @@ void blk_queue_make_request(struct request_queue *q, make_request_fn *mfn)
147 q->unplug_timer.function = blk_unplug_timeout; 162 q->unplug_timer.function = blk_unplug_timeout;
148 q->unplug_timer.data = (unsigned long)q; 163 q->unplug_timer.data = (unsigned long)q;
149 164
165 blk_set_default_limits(&q->limits);
166
150 /* 167 /*
151 * by default assume old behaviour and bounce for any highmem page 168 * by default assume old behaviour and bounce for any highmem page
152 */ 169 */
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index ef2f72d42434..833ec18eaa63 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -122,7 +122,6 @@ struct cfq_data {
122 struct cfq_queue *async_idle_cfqq; 122 struct cfq_queue *async_idle_cfqq;
123 123
124 sector_t last_position; 124 sector_t last_position;
125 unsigned long last_end_request;
126 125
127 /* 126 /*
128 * tunables, see top of file 127 * tunables, see top of file
@@ -1253,7 +1252,7 @@ static int cfq_forced_dispatch(struct cfq_data *cfqd)
1253 1252
1254 BUG_ON(cfqd->busy_queues); 1253 BUG_ON(cfqd->busy_queues);
1255 1254
1256 cfq_log(cfqd, "forced_dispatch=%d\n", dispatched); 1255 cfq_log(cfqd, "forced_dispatch=%d", dispatched);
1257 return dispatched; 1256 return dispatched;
1258} 1257}
1259 1258
@@ -2164,9 +2163,6 @@ static void cfq_completed_request(struct request_queue *q, struct request *rq)
2164 if (cfq_cfqq_sync(cfqq)) 2163 if (cfq_cfqq_sync(cfqq))
2165 cfqd->sync_flight--; 2164 cfqd->sync_flight--;
2166 2165
2167 if (!cfq_class_idle(cfqq))
2168 cfqd->last_end_request = now;
2169
2170 if (sync) 2166 if (sync)
2171 RQ_CIC(rq)->last_end_request = now; 2167 RQ_CIC(rq)->last_end_request = now;
2172 2168
@@ -2479,7 +2475,6 @@ static void *cfq_init_queue(struct request_queue *q)
2479 2475
2480 INIT_WORK(&cfqd->unplug_work, cfq_kick_queue); 2476 INIT_WORK(&cfqd->unplug_work, cfq_kick_queue);
2481 2477
2482 cfqd->last_end_request = jiffies;
2483 cfqd->cfq_quantum = cfq_quantum; 2478 cfqd->cfq_quantum = cfq_quantum;
2484 cfqd->cfq_fifo_expire[0] = cfq_fifo_expire[0]; 2479 cfqd->cfq_fifo_expire[0] = cfq_fifo_expire[0];
2485 cfqd->cfq_fifo_expire[1] = cfq_fifo_expire[1]; 2480 cfqd->cfq_fifo_expire[1] = cfq_fifo_expire[1];
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index b22cec97ea19..c7a527c08a09 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -38,7 +38,6 @@
38#include <linux/hdreg.h> 38#include <linux/hdreg.h>
39#include <linux/spinlock.h> 39#include <linux/spinlock.h>
40#include <linux/compat.h> 40#include <linux/compat.h>
41#include <linux/blktrace_api.h>
42#include <asm/uaccess.h> 41#include <asm/uaccess.h>
43#include <asm/io.h> 42#include <asm/io.h>
44 43
diff --git a/drivers/block/mg_disk.c b/drivers/block/mg_disk.c
index 60de5a01e71e..f703f5478246 100644
--- a/drivers/block/mg_disk.c
+++ b/drivers/block/mg_disk.c
@@ -22,13 +22,12 @@
22#include <linux/delay.h> 22#include <linux/delay.h>
23#include <linux/platform_device.h> 23#include <linux/platform_device.h>
24#include <linux/gpio.h> 24#include <linux/gpio.h>
25#include <linux/mg_disk.h>
25 26
26#define MG_RES_SEC (CONFIG_MG_DISK_RES << 1) 27#define MG_RES_SEC (CONFIG_MG_DISK_RES << 1)
27 28
28/* name for block device */ 29/* name for block device */
29#define MG_DISK_NAME "mgd" 30#define MG_DISK_NAME "mgd"
30/* name for platform device */
31#define MG_DEV_NAME "mg_disk"
32 31
33#define MG_DISK_MAJ 0 32#define MG_DISK_MAJ 0
34#define MG_DISK_MAX_PART 16 33#define MG_DISK_MAX_PART 16
@@ -103,33 +102,8 @@
103#define MG_TMAX_SWRST_TO_RDY 500 102#define MG_TMAX_SWRST_TO_RDY 500
104#define MG_TMAX_RSTOUT 3000 103#define MG_TMAX_RSTOUT 3000
105 104
106/* device attribution */
107/* use mflash as boot device */
108#define MG_BOOT_DEV (1 << 0)
109/* use mflash as storage device */
110#define MG_STORAGE_DEV (1 << 1)
111/* same as MG_STORAGE_DEV, but bootloader already done reset sequence */
112#define MG_STORAGE_DEV_SKIP_RST (1 << 2)
113
114#define MG_DEV_MASK (MG_BOOT_DEV | MG_STORAGE_DEV | MG_STORAGE_DEV_SKIP_RST) 105#define MG_DEV_MASK (MG_BOOT_DEV | MG_STORAGE_DEV | MG_STORAGE_DEV_SKIP_RST)
115 106
116/* names of GPIO resource */
117#define MG_RST_PIN "mg_rst"
118/* except MG_BOOT_DEV, reset-out pin should be assigned */
119#define MG_RSTOUT_PIN "mg_rstout"
120
121/* private driver data */
122struct mg_drv_data {
123 /* disk resource */
124 u32 use_polling;
125
126 /* device attribution */
127 u32 dev_attr;
128
129 /* internally used */
130 struct mg_host *host;
131};
132
133/* main structure for mflash driver */ 107/* main structure for mflash driver */
134struct mg_host { 108struct mg_host {
135 struct device *dev; 109 struct device *dev;
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 3fd8b1e65483..48db308fae67 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -19,7 +19,6 @@
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include <linux/idr.h> 20#include <linux/idr.h>
21#include <linux/hdreg.h> 21#include <linux/hdreg.h>
22#include <linux/blktrace_api.h>
23 22
24#include <trace/events/block.h> 23#include <trace/events/block.h>
25 24
diff --git a/fs/bio.c b/fs/bio.c
index 5f80848c320c..24c914043532 100644
--- a/fs/bio.c
+++ b/fs/bio.c
@@ -25,7 +25,6 @@
25#include <linux/module.h> 25#include <linux/module.h>
26#include <linux/mempool.h> 26#include <linux/mempool.h>
27#include <linux/workqueue.h> 27#include <linux/workqueue.h>
28#include <linux/blktrace_api.h>
29#include <scsi/sg.h> /* for struct sg_iovec */ 28#include <scsi/sg.h> /* for struct sg_iovec */
30 29
31#include <trace/events/block.h> 30#include <trace/events/block.h>
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 0d50d49d990a..d28d29c95f7c 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -42,6 +42,8 @@
42static struct extent_io_ops btree_extent_io_ops; 42static struct extent_io_ops btree_extent_io_ops;
43static void end_workqueue_fn(struct btrfs_work *work); 43static void end_workqueue_fn(struct btrfs_work *work);
44 44
45static atomic_t btrfs_bdi_num = ATOMIC_INIT(0);
46
45/* 47/*
46 * end_io_wq structs are used to do processing in task context when an IO is 48 * end_io_wq structs are used to do processing in task context when an IO is
47 * complete. This is used during reads to verify checksums, and it is used 49 * complete. This is used during reads to verify checksums, and it is used
@@ -1342,12 +1344,25 @@ static void btrfs_unplug_io_fn(struct backing_dev_info *bdi, struct page *page)
1342 free_extent_map(em); 1344 free_extent_map(em);
1343} 1345}
1344 1346
1347/*
1348 * If this fails, caller must call bdi_destroy() to get rid of the
1349 * bdi again.
1350 */
1345static int setup_bdi(struct btrfs_fs_info *info, struct backing_dev_info *bdi) 1351static int setup_bdi(struct btrfs_fs_info *info, struct backing_dev_info *bdi)
1346{ 1352{
1347 bdi_init(bdi); 1353 int err;
1354
1355 bdi->capabilities = BDI_CAP_MAP_COPY;
1356 err = bdi_init(bdi);
1357 if (err)
1358 return err;
1359
1360 err = bdi_register(bdi, NULL, "btrfs-%d",
1361 atomic_inc_return(&btrfs_bdi_num));
1362 if (err)
1363 return err;
1364
1348 bdi->ra_pages = default_backing_dev_info.ra_pages; 1365 bdi->ra_pages = default_backing_dev_info.ra_pages;
1349 bdi->state = 0;
1350 bdi->capabilities = default_backing_dev_info.capabilities;
1351 bdi->unplug_io_fn = btrfs_unplug_io_fn; 1366 bdi->unplug_io_fn = btrfs_unplug_io_fn;
1352 bdi->unplug_io_data = info; 1367 bdi->unplug_io_data = info;
1353 bdi->congested_fn = btrfs_congested_fn; 1368 bdi->congested_fn = btrfs_congested_fn;
@@ -1569,7 +1584,8 @@ struct btrfs_root *open_ctree(struct super_block *sb,
1569 fs_info->sb = sb; 1584 fs_info->sb = sb;
1570 fs_info->max_extent = (u64)-1; 1585 fs_info->max_extent = (u64)-1;
1571 fs_info->max_inline = 8192 * 1024; 1586 fs_info->max_inline = 8192 * 1024;
1572 setup_bdi(fs_info, &fs_info->bdi); 1587 if (setup_bdi(fs_info, &fs_info->bdi))
1588 goto fail_bdi;
1573 fs_info->btree_inode = new_inode(sb); 1589 fs_info->btree_inode = new_inode(sb);
1574 fs_info->btree_inode->i_ino = 1; 1590 fs_info->btree_inode->i_ino = 1;
1575 fs_info->btree_inode->i_nlink = 1; 1591 fs_info->btree_inode->i_nlink = 1;
@@ -1946,8 +1962,8 @@ fail_iput:
1946 1962
1947 btrfs_close_devices(fs_info->fs_devices); 1963 btrfs_close_devices(fs_info->fs_devices);
1948 btrfs_mapping_tree_free(&fs_info->mapping_tree); 1964 btrfs_mapping_tree_free(&fs_info->mapping_tree);
1965fail_bdi:
1949 bdi_destroy(&fs_info->bdi); 1966 bdi_destroy(&fs_info->bdi);
1950
1951fail: 1967fail:
1952 kfree(extent_root); 1968 kfree(extent_root);
1953 kfree(tree_root); 1969 kfree(tree_root);
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 3589eab02a2f..3260b73abe29 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1937,6 +1937,9 @@ static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
1937 err = bdi_init(&c->bdi); 1937 err = bdi_init(&c->bdi);
1938 if (err) 1938 if (err)
1939 goto out_close; 1939 goto out_close;
1940 err = bdi_register(&c->bdi, NULL, "ubifs");
1941 if (err)
1942 goto out_bdi;
1940 1943
1941 err = ubifs_parse_options(c, data, 0); 1944 err = ubifs_parse_options(c, data, 0);
1942 if (err) 1945 if (err)
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 0b1a6cae9de1..8963d9149b5f 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -926,6 +926,7 @@ extern void blk_queue_alignment_offset(struct request_queue *q,
926 unsigned int alignment); 926 unsigned int alignment);
927extern void blk_queue_io_min(struct request_queue *q, unsigned int min); 927extern void blk_queue_io_min(struct request_queue *q, unsigned int min);
928extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); 928extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt);
929extern void blk_set_default_limits(struct queue_limits *lim);
929extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, 930extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b,
930 sector_t offset); 931 sector_t offset);
931extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, 932extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev,
diff --git a/include/linux/mg_disk.h b/include/linux/mg_disk.h
new file mode 100644
index 000000000000..e11f4d9f1c2e
--- /dev/null
+++ b/include/linux/mg_disk.h
@@ -0,0 +1,45 @@
1/*
2 * include/linux/mg_disk.c
3 *
4 * Private data for mflash platform driver
5 *
6 * (c) 2008 mGine Co.,LTD
7 * (c) 2008 unsik Kim <donari75@gmail.com>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12 */
13
14#ifndef __MG_DISK_H__
15#define __MG_DISK_H__
16
17/* name for platform device */
18#define MG_DEV_NAME "mg_disk"
19
20/* names of GPIO resource */
21#define MG_RST_PIN "mg_rst"
22/* except MG_BOOT_DEV, reset-out pin should be assigned */
23#define MG_RSTOUT_PIN "mg_rstout"
24
25/* device attribution */
26/* use mflash as boot device */
27#define MG_BOOT_DEV (1 << 0)
28/* use mflash as storage device */
29#define MG_STORAGE_DEV (1 << 1)
30/* same as MG_STORAGE_DEV, but bootloader already done reset sequence */
31#define MG_STORAGE_DEV_SKIP_RST (1 << 2)
32
33/* private driver data */
34struct mg_drv_data {
35 /* disk resource */
36 u32 use_polling;
37
38 /* device attribution */
39 u32 dev_attr;
40
41 /* internally used */
42 void *host;
43};
44
45#endif
diff --git a/mm/bounce.c b/mm/bounce.c
index 4ebe3ea83795..a2b76a588e34 100644
--- a/mm/bounce.c
+++ b/mm/bounce.c
@@ -13,7 +13,6 @@
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/hash.h> 14#include <linux/hash.h>
15#include <linux/highmem.h> 15#include <linux/highmem.h>
16#include <linux/blktrace_api.h>
17#include <asm/tlbflush.h> 16#include <asm/tlbflush.h>
18 17
19#include <trace/events/block.h> 18#include <trace/events/block.h>
diff --git a/mm/highmem.c b/mm/highmem.c
index 68eb1d9b63fa..25878cc49daa 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -26,7 +26,6 @@
26#include <linux/init.h> 26#include <linux/init.h>
27#include <linux/hash.h> 27#include <linux/hash.h>
28#include <linux/highmem.h> 28#include <linux/highmem.h>
29#include <linux/blktrace_api.h>
30#include <asm/tlbflush.h> 29#include <asm/tlbflush.h>
31 30
32/* 31/*