diff options
Diffstat (limited to 'include/linux/writeback.h')
| -rw-r--r-- | include/linux/writeback.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 3148db1296a2..5fdd4e1805e6 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -95,6 +95,8 @@ struct writeback_control { | |||
| 95 | * dirtyable memory accordingly. | 95 | * dirtyable memory accordingly. |
| 96 | */ | 96 | */ |
| 97 | struct wb_domain { | 97 | struct wb_domain { |
| 98 | spinlock_t lock; | ||
| 99 | |||
| 98 | /* | 100 | /* |
| 99 | * Scale the writeback cache size proportional to the relative | 101 | * Scale the writeback cache size proportional to the relative |
| 100 | * writeout speed. | 102 | * writeout speed. |
| @@ -115,6 +117,19 @@ struct wb_domain { | |||
| 115 | struct fprop_global completions; | 117 | struct fprop_global completions; |
| 116 | struct timer_list period_timer; /* timer for aging of completions */ | 118 | struct timer_list period_timer; /* timer for aging of completions */ |
| 117 | unsigned long period_time; | 119 | unsigned long period_time; |
| 120 | |||
| 121 | /* | ||
| 122 | * The dirtyable memory and dirty threshold could be suddenly | ||
| 123 | * knocked down by a large amount (eg. on the startup of KVM in a | ||
| 124 | * swapless system). This may throw the system into deep dirty | ||
| 125 | * exceeded state and throttle heavy/light dirtiers alike. To | ||
| 126 | * retain good responsiveness, maintain global_dirty_limit for | ||
| 127 | * tracking slowly down to the knocked down dirty threshold. | ||
| 128 | * | ||
| 129 | * Both fields are protected by ->lock. | ||
| 130 | */ | ||
| 131 | unsigned long dirty_limit_tstamp; | ||
| 132 | unsigned long dirty_limit; | ||
| 118 | }; | 133 | }; |
| 119 | 134 | ||
| 120 | /* | 135 | /* |
| @@ -153,7 +168,7 @@ void throttle_vm_writeout(gfp_t gfp_mask); | |||
| 153 | bool zone_dirty_ok(struct zone *zone); | 168 | bool zone_dirty_ok(struct zone *zone); |
| 154 | int wb_domain_init(struct wb_domain *dom, gfp_t gfp); | 169 | int wb_domain_init(struct wb_domain *dom, gfp_t gfp); |
| 155 | 170 | ||
| 156 | extern unsigned long global_dirty_limit; | 171 | extern struct wb_domain global_wb_domain; |
| 157 | 172 | ||
| 158 | /* These are exported to sysctl. */ | 173 | /* These are exported to sysctl. */ |
| 159 | extern int dirty_background_ratio; | 174 | extern int dirty_background_ratio; |
