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 | 26 | * tunables |
| 27 | 27 | */ |
| 28 | −static int cfq_quantum = 4; /* max queue in one round of service */ | |
| 29 | −static int cfq_queued = 8; /* minimum rq allocate limit per-queue*/ | |
| 30 | −static int cfq_fifo_expire[2] = { HZ / 4, HZ / 8 }; | |
| 31 | −static int cfq_back_max = 16 * 1024; /* maximum backwards seek, in KiB */ | |
| 32 | −static int cfq_back_penalty = 2; /* penalty of a backwards seek */ | |
| 28 | +static const int cfq_quantum = 4; /* max queue in one round of service */ | |
| 29 | +static const int cfq_queued = 8; /* minimum rq allocate limit per-queue*/ | |
| 30 | +static const int cfq_fifo_expire[2] = { HZ / 4, HZ / 8 }; | |
| 31 | +static const int cfq_back_max = 16 * 1024; /* maximum backwards seek, in KiB */ | |
| 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 | 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 | 37 | static int cfq_slice_idle = HZ / 100; |
| 38 | 38 | |
| 39 | 39 | #define CFQ_IDLE_GRACE (HZ / 10) |
| @@ -45,7 +45,7 @@ static int cfq_slice_idle = HZ / 100; · 5 unmodified lines | ||
| 45 | 45 | /* |
| 46 | 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 | 51 | * for the hash of cfqq inside the cfqd |
| @@ -19,10 +19,10 @@ · 18 unmodified lines | ||
| 19 | 19 | /* |
| 20 | 20 | * See Documentation/block/deadline-iosched.txt |
| 21 | 21 | */ |
| 22 | −static 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! */ | |
| 24 | −static int writes_starved = 2; /* max times reads can starve a write */ | |
| 25 | −static int fifo_batch = 16; /* # of sequential requests treated as one | |
| 22 | +static const int read_expire = HZ / 2; /* max time before a read is submitted. */ | |
| 23 | +static const int write_expire = 5 * HZ; /* ditto for writes, these limits are SOFT! */ | |
| 24 | +static const int writes_starved = 2; /* max times reads can starve a write */ | |
| 25 | +static const int fifo_batch = 16; /* # of sequential requests treated as one | |
| 26 | 26 | by the above parameters. For throughput. */ |
| 27 | 27 | |
| 28 | 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 | 1040 | EXPORT_SYMBOL(blk_queue_invalidate_tags); |
| 1041 | 1041 | |
| 1042 | −static char *rq_flags[] = { | |
| 1042 | +static const char * const rq_flags[] = { | |
| 1043 | 1043 | "REQ_RW", |
| 1044 | 1044 | "REQ_FAILFAST", |
| 1045 | 1045 | "REQ_SORTED", |
| @@ -46,7 +46,7 @@ EXPORT_SYMBOL(scsi_command_size); · 45 unmodified lines | ||
| 46 | 46 | |
| 47 | 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 | 50 | return put_user(sg_version_num, p); |
| 51 | 51 | } |
| 52 | 52 | |