Re: Zoned counters V1 [14/14]: Remove wbs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2005/12/21, Christoph Lameter <[email protected]>:
> Remove writeback state
>
> We can remove some functions now that were needed to calculate the page
> state for writeback control since these statistics are now directly
> available.
>
> Signed-off-by: Christoph Lameter <[email protected]>
>
> Index: linux-2.6.15-rc5-mm3/mm/page-writeback.c
> ===================================================================
> --- linux-2.6.15-rc5-mm3.orig/mm/page-writeback.c       2005-12-20 12:59:17.000000000 -0800
> +++ linux-2.6.15-rc5-mm3/mm/page-writeback.c    2005-12-20 13:16:34.000000000 -0800
> @@ -99,22 +99,6 @@ EXPORT_SYMBOL(laptop_mode);
>
>  static void background_writeout(unsigned long _min_pages);
>
> -struct writeback_state
> -{
> -       unsigned long nr_dirty;
> -       unsigned long nr_unstable;
> -       unsigned long nr_mapped;
> -       unsigned long nr_writeback;
> -};
> -
> -static void get_writeback_state(struct writeback_state *wbs)
> -{
> -       wbs->nr_dirty = global_page_state(NR_DIRTY);
> -       wbs->nr_unstable = global_page_state(NR_UNSTABLE);
> -       wbs->nr_mapped = global_page_state(NR_MAPPED);
> -       wbs->nr_writeback = global_page_state(NR_WRITEBACK);
> -}
> -
>  /*
>   * Work out the current dirty-memory clamping and background writeout
>   * thresholds.
> @@ -133,8 +117,7 @@ static void get_writeback_state(struct w
>   * clamping level.
>   */
>  static void
> -get_dirty_limits(struct writeback_state *wbs, long *pbackground, long *pdirty,
> -               struct address_space *mapping)
> +get_dirty_limits(long *pbackground, long *pdirty, struct address_space *mapping)

Maybe get rid of the odd Hungarian naming too.

-- Coywolf

>  {
>         int background_ratio;           /* Percentages */
>         int dirty_ratio;
> @@ -144,8 +127,6 @@ get_dirty_limits(struct writeback_state
>         unsigned long available_memory = total_pages;
>         struct task_struct *tsk;
>
> -       get_writeback_state(wbs);
> -
>  #ifdef CONFIG_HIGHMEM
>         /*
>          * If this mapping can only allocate from low memory,
> @@ -156,7 +137,7 @@ get_dirty_limits(struct writeback_state
>  #endif
>
>
> -       unmapped_ratio = 100 - (wbs->nr_mapped * 100) / total_pages;
> +       unmapped_ratio = 100 - (global_page_state(NR_MAPPED) * 100) / total_pages;
>
>         dirty_ratio = vm_dirty_ratio;
>         if (dirty_ratio > unmapped_ratio / 2)
> @@ -189,7 +170,6 @@ get_dirty_limits(struct writeback_state
>   */
>  static void balance_dirty_pages(struct address_space *mapping)
>  {
> -       struct writeback_state wbs;
>         long nr_reclaimable;
>         long background_thresh;
>         long dirty_thresh;
> @@ -206,10 +186,9 @@ static void balance_dirty_pages(struct a
>                         .nr_to_write    = write_chunk,
>                 };
>
> -               get_dirty_limits(&wbs, &background_thresh,
> -                                       &dirty_thresh, mapping);
> -               nr_reclaimable = wbs.nr_dirty + wbs.nr_unstable;
> -               if (nr_reclaimable + wbs.nr_writeback <= dirty_thresh)
> +               get_dirty_limits(&background_thresh, &dirty_thresh, mapping);
> +               nr_reclaimable = global_page_state(NR_DIRTY) + global_page_state(NR_UNSTABLE);
> +               if (nr_reclaimable + global_page_state(NR_WRITEBACK) <= dirty_thresh)
>                         break;
>
>                 dirty_exceeded = 1;
> @@ -222,10 +201,9 @@ static void balance_dirty_pages(struct a
>                  */
>                 if (nr_reclaimable) {
>                         writeback_inodes(&wbc);
> -                       get_dirty_limits(&wbs, &background_thresh,
> -                                       &dirty_thresh, mapping);
> -                       nr_reclaimable = wbs.nr_dirty + wbs.nr_unstable;
> -                       if (nr_reclaimable + wbs.nr_writeback <= dirty_thresh)
> +                       get_dirty_limits(&background_thresh, &dirty_thresh, mapping);
> +                       nr_reclaimable = global_page_state(NR_DIRTY) + global_page_state(NR_UNSTABLE);
> +                       if (nr_reclaimable + global_page_state(NR_WRITEBACK) <= dirty_thresh)
>                                 break;
>                         pages_written += write_chunk - wbc.nr_to_write;
>                         if (pages_written >= write_chunk)
> @@ -234,7 +212,7 @@ static void balance_dirty_pages(struct a
>                 blk_congestion_wait(WRITE, HZ/10);
>         }
>
> -       if (nr_reclaimable + wbs.nr_writeback <= dirty_thresh)
> +       if (nr_reclaimable + global_page_state(NR_WRITEBACK) <= dirty_thresh)
>                 dirty_exceeded = 0;
>
>         if (writeback_in_progress(bdi))
> @@ -291,12 +269,11 @@ EXPORT_SYMBOL(balance_dirty_pages_rateli
>
>  void throttle_vm_writeout(void)
>  {
> -       struct writeback_state wbs;
>         long background_thresh;
>         long dirty_thresh;
>
>          for ( ; ; ) {
> -               get_dirty_limits(&wbs, &background_thresh, &dirty_thresh, NULL);
> +               get_dirty_limits(&background_thresh, &dirty_thresh, NULL);
>
>                  /*
>                   * Boost the allowable dirty threshold a bit for page
> @@ -304,7 +281,7 @@ void throttle_vm_writeout(void)
>                   */
>                  dirty_thresh += dirty_thresh / 10;      /* wheeee... */
>
> -                if (wbs.nr_unstable + wbs.nr_writeback <= dirty_thresh)
> +                if (global_page_state(NR_UNSTABLE) + global_page_state(NR_WRITEBACK) <= dirty_thresh)
>                          break;
>                  blk_congestion_wait(WRITE, HZ/10);
>          }
> @@ -327,12 +304,11 @@ static void background_writeout(unsigned
>         };
>
>         for ( ; ; ) {
> -               struct writeback_state wbs;
>                 long background_thresh;
>                 long dirty_thresh;
>
> -               get_dirty_limits(&wbs, &background_thresh, &dirty_thresh, NULL);
> -               if (wbs.nr_dirty + wbs.nr_unstable < background_thresh
> +               get_dirty_limits(&background_thresh, &dirty_thresh, NULL);
> +               if (global_page_state(NR_DIRTY) + global_page_state(NR_UNSTABLE) < background_thresh
>                                 && min_pages <= 0)
>                         break;
>                 wbc.encountered_congestion = 0;
> @@ -356,12 +332,8 @@ static void background_writeout(unsigned
>   */
>  int wakeup_pdflush(long nr_pages)
>  {
> -       if (nr_pages == 0) {
> -               struct writeback_state wbs;
> -
> -               get_writeback_state(&wbs);
> -               nr_pages = wbs.nr_dirty + wbs.nr_unstable;
> -       }
> +       if (nr_pages == 0)
> +               nr_pages = global_page_state(NR_DIRTY) + global_page_state(NR_UNSTABLE);
>         return pdflush_operation(background_writeout, nr_pages);
>  }
>
> @@ -392,7 +364,6 @@ static void wb_kupdate(unsigned long arg
>         unsigned long start_jif;
>         unsigned long next_jif;
>         long nr_to_write;
> -       struct writeback_state wbs;
>         struct writeback_control wbc = {
>                 .bdi            = NULL,
>                 .sync_mode      = WB_SYNC_NONE,
> @@ -404,11 +375,10 @@ static void wb_kupdate(unsigned long arg
>
>         sync_supers();
>
> -       get_writeback_state(&wbs);
>         oldest_jif = jiffies - (dirty_expire_centisecs * HZ) / 100;
>         start_jif = jiffies;
>         next_jif = start_jif + (dirty_writeback_centisecs * HZ) / 100;
> -       nr_to_write = wbs.nr_dirty + wbs.nr_unstable +
> +       nr_to_write = global_page_state(NR_DIRTY) + global_page_state(NR_UNSTABLE) +
>                         (inodes_stat.nr_inodes - inodes_stat.nr_unused);
>         while (nr_to_write > 0) {
>                 wbc.encountered_congestion = 0;
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux