the patch below marks various read-only variables in block/* as const, so that gcc can optimize the use of them; eg gcc will replace the use by the value directly now and will even remove the memory usage of these.
Unified · Split
| @@ -25,15 +25,15 @@ · 24 unmodified lines | |||
| 25 | /* | 25 | /* |
| 26 | * tunables | 26 | * tunables |
| 27 | */ | 27 | */ |
| 28 | static int cfq_quantum = 4; /* max queue in one round of service */ | 28 | static const int cfq_quantum = 4; /* max queue in one round of service */ |
| 29 | static int cfq_queued = 8; /* minimum rq allocate limit per-queue*/ | 29 | static const int cfq_queued = 8; /* minimum rq allocate limit per-queue*/ |
| 30 | static int cfq_fifo_expire[2] = { HZ / 4, HZ / 8 }; | 30 | static const int cfq_fifo_expire[2] = { HZ / 4, HZ / 8 }; |
| 31 | static int cfq_back_max = 16 * 1024; /* maximum backwards seek, in KiB */ | 31 | static const int cfq_back_max = 16 * 1024; /* maximum backwards seek, in KiB */ |
| 32 | static int cfq_back_penalty = 2; /* penalty of a backwards seek */ | 32 | static const int cfq_back_penalty = 2; /* penalty of a backwards seek */ |
| 33 | 33 | ||
| 34 | static int cfq_slice_sync = HZ / 10; | 34 | static const int cfq_slice_sync = HZ / 10; |
| 35 | static int cfq_slice_async = HZ / 25; | 35 | static int cfq_slice_async = HZ / 25; |
| 36 | static int cfq_slice_async_rq = 2; | 36 | static const int cfq_slice_async_rq = 2; |
| 37 | static int cfq_slice_idle = HZ / 100; | 37 | static int cfq_slice_idle = HZ / 100; |
| 38 | 38 | ||
| 39 | #define CFQ_IDLE_GRACE (HZ / 10) | 39 | #define CFQ_IDLE_GRACE (HZ / 10) |
| @@ -45,7 +45,7 @@ static int cfq_slice_idle = HZ / 100; · 5 unmodified lines | |||
| 45 | /* | 45 | /* |
| 46 | * disable queueing at the driver/hardware level | 46 | * disable queueing at the driver/hardware level |
| 47 | */ | 47 | */ |
| 48 | static int cfq_max_depth = 2; | 48 | static const int cfq_max_depth = 2; |
| 49 | 49 | ||
| 50 | /* | 50 | /* |
| 51 | * for the hash of cfqq inside the cfqd | 51 | * for the hash of cfqq inside the cfqd |
| @@ -19,10 +19,10 @@ · 18 unmodified lines | |||
| 19 | /* | 19 | /* |
| 20 | * See Documentation/block/deadline-iosched.txt | 20 | * See Documentation/block/deadline-iosched.txt |
| 21 | */ | 21 | */ |
| 22 | static int read_expire = HZ / 2; /* max time before a read is submitted. */ | 22 | static const int read_expire = HZ / 2; /* max time before a read is submitted. */ |
| 23 | static int write_expire = 5 * HZ; /* ditto for writes, these limits are SOFT! */ | 23 | static const int write_expire = 5 * HZ; /* ditto for writes, these limits are SOFT! */ |
| 24 | static int writes_starved = 2; /* max times reads can starve a write */ | 24 | static const int writes_starved = 2; /* max times reads can starve a write */ |
| 25 | static int fifo_batch = 16; /* # of sequential requests treated as one | 25 | static const int fifo_batch = 16; /* # of sequential requests treated as one |
| 26 | by the above parameters. For throughput. */ | 26 | by the above parameters. For throughput. */ |
| 27 | 27 | ||
| 28 | static const int deadline_hash_shift = 5; | 28 | static const int deadline_hash_shift = 5; |
| @@ -1039,7 +1039,7 @@ void blk_queue_invalidate_tags(request_queue_t *q) · 1038 unmodified lines | |||
| 1039 | 1039 | ||
| 1040 | EXPORT_SYMBOL(blk_queue_invalidate_tags); | 1040 | EXPORT_SYMBOL(blk_queue_invalidate_tags); |
| 1041 | 1041 | ||
| 1042 | static char *rq_flags[] = { | 1042 | static const char * const rq_flags[] = { |
| 1043 | "REQ_RW", | 1043 | "REQ_RW", |
| 1044 | "REQ_FAILFAST", | 1044 | "REQ_FAILFAST", |
| 1045 | "REQ_SORTED", | 1045 | "REQ_SORTED", |
| @@ -46,7 +46,7 @@ EXPORT_SYMBOL(scsi_command_size); · 45 unmodified lines | |||
| 46 | 46 | ||
| 47 | static int sg_get_version(int __user *p) | 47 | static int sg_get_version(int __user *p) |
| 48 | { | 48 | { |
| 49 | static int sg_version_num = 30527; | 49 | static const int sg_version_num = 30527; |
| 50 | return put_user(sg_version_num, p); | 50 | return put_user(sg_version_num, p); |
| 51 | } | 51 | } |
| 52 | 52 | ||