|
@@ -265,18 +265,19 @@ static void bdi_writeout_fraction(struct backing_dev_info *bdi,
|
|
|
* This avoids exceeding the total dirty_limit when the floating averages
|
|
|
* fluctuate too quickly.
|
|
|
*/
|
|
|
-static void
|
|
|
-clip_bdi_dirty_limit(struct backing_dev_info *bdi, long dirty, long *pbdi_dirty)
|
|
|
+static void clip_bdi_dirty_limit(struct backing_dev_info *bdi,
|
|
|
+ unsigned long dirty, unsigned long *pbdi_dirty)
|
|
|
{
|
|
|
- long avail_dirty;
|
|
|
+ unsigned long avail_dirty;
|
|
|
|
|
|
- avail_dirty = dirty -
|
|
|
- (global_page_state(NR_FILE_DIRTY) +
|
|
|
+ avail_dirty = global_page_state(NR_FILE_DIRTY) +
|
|
|
global_page_state(NR_WRITEBACK) +
|
|
|
global_page_state(NR_UNSTABLE_NFS) +
|
|
|
- global_page_state(NR_WRITEBACK_TEMP));
|
|
|
+ global_page_state(NR_WRITEBACK_TEMP);
|
|
|
|
|
|
- if (avail_dirty < 0)
|
|
|
+ if (avail_dirty < dirty)
|
|
|
+ avail_dirty = dirty - avail_dirty;
|
|
|
+ else
|
|
|
avail_dirty = 0;
|
|
|
|
|
|
avail_dirty += bdi_stat(bdi, BDI_RECLAIMABLE) +
|
|
@@ -299,10 +300,10 @@ static inline void task_dirties_fraction(struct task_struct *tsk,
|
|
|
*
|
|
|
* dirty -= (dirty/8) * p_{t}
|
|
|
*/
|
|
|
-static void task_dirty_limit(struct task_struct *tsk, long *pdirty)
|
|
|
+static void task_dirty_limit(struct task_struct *tsk, unsigned long *pdirty)
|
|
|
{
|
|
|
long numerator, denominator;
|
|
|
- long dirty = *pdirty;
|
|
|
+ unsigned long dirty = *pdirty;
|
|
|
u64 inv = dirty >> 3;
|
|
|
|
|
|
task_dirties_fraction(tsk, &numerator, &denominator);
|