LCOV - code coverage report
Current view: top level - fs - fs-writeback.c (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc4-xfsx @ Mon Jul 31 20:08:34 PDT 2023 Lines: 943 1013 93.1 %
Date: 2023-07-31 20:08:34 Functions: 61 66 92.4 %

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0-only
       2             : /*
       3             :  * fs/fs-writeback.c
       4             :  *
       5             :  * Copyright (C) 2002, Linus Torvalds.
       6             :  *
       7             :  * Contains all the functions related to writing back and waiting
       8             :  * upon dirty inodes against superblocks, and writing back dirty
       9             :  * pages against inodes.  ie: data writeback.  Writeout of the
      10             :  * inode itself is not handled here.
      11             :  *
      12             :  * 10Apr2002    Andrew Morton
      13             :  *              Split out of fs/inode.c
      14             :  *              Additions for address_space-based writeback
      15             :  */
      16             : 
      17             : #include <linux/kernel.h>
      18             : #include <linux/export.h>
      19             : #include <linux/spinlock.h>
      20             : #include <linux/slab.h>
      21             : #include <linux/sched.h>
      22             : #include <linux/fs.h>
      23             : #include <linux/mm.h>
      24             : #include <linux/pagemap.h>
      25             : #include <linux/kthread.h>
      26             : #include <linux/writeback.h>
      27             : #include <linux/blkdev.h>
      28             : #include <linux/backing-dev.h>
      29             : #include <linux/tracepoint.h>
      30             : #include <linux/device.h>
      31             : #include <linux/memcontrol.h>
      32             : #include "internal.h"
      33             : 
      34             : /*
      35             :  * 4MB minimal write chunk size
      36             :  */
      37             : #define MIN_WRITEBACK_PAGES     (4096UL >> (PAGE_SHIFT - 10))
      38             : 
      39             : /*
      40             :  * Passed into wb_writeback(), essentially a subset of writeback_control
      41             :  */
      42             : struct wb_writeback_work {
      43             :         long nr_pages;
      44             :         struct super_block *sb;
      45             :         enum writeback_sync_modes sync_mode;
      46             :         unsigned int tagged_writepages:1;
      47             :         unsigned int for_kupdate:1;
      48             :         unsigned int range_cyclic:1;
      49             :         unsigned int for_background:1;
      50             :         unsigned int for_sync:1;        /* sync(2) WB_SYNC_ALL writeback */
      51             :         unsigned int auto_free:1;       /* free on completion */
      52             :         enum wb_reason reason;          /* why was writeback initiated? */
      53             : 
      54             :         struct list_head list;          /* pending work list */
      55             :         struct wb_completion *done;     /* set if the caller waits */
      56             : };
      57             : 
      58             : /*
      59             :  * If an inode is constantly having its pages dirtied, but then the
      60             :  * updates stop dirtytime_expire_interval seconds in the past, it's
      61             :  * possible for the worst case time between when an inode has its
      62             :  * timestamps updated and when they finally get written out to be two
      63             :  * dirtytime_expire_intervals.  We set the default to 12 hours (in
      64             :  * seconds), which means most of the time inodes will have their
      65             :  * timestamps written to disk after 12 hours, but in the worst case a
      66             :  * few inodes might not their timestamps updated for 24 hours.
      67             :  */
      68             : unsigned int dirtytime_expire_interval = 12 * 60 * 60;
      69             : 
      70             : static inline struct inode *wb_inode(struct list_head *head)
      71             : {
      72    55896657 :         return list_entry(head, struct inode, i_io_list);
      73             : }
      74             : 
      75             : /*
      76             :  * Include the creation of the trace points after defining the
      77             :  * wb_writeback_work structure and inline functions so that the definition
      78             :  * remains local to this file.
      79             :  */
      80             : #define CREATE_TRACE_POINTS
      81             : #include <trace/events/writeback.h>
      82             : 
      83             : EXPORT_TRACEPOINT_SYMBOL_GPL(wbc_writepage);
      84             : 
      85    77759368 : static bool wb_io_lists_populated(struct bdi_writeback *wb)
      86             : {
      87   155518736 :         if (wb_has_dirty_io(wb)) {
      88             :                 return false;
      89             :         } else {
      90     2480255 :                 set_bit(WB_has_dirty_io, &wb->state);
      91     2480257 :                 WARN_ON_ONCE(!wb->avg_write_bandwidth);
      92     2480257 :                 atomic_long_add(wb->avg_write_bandwidth,
      93     2480257 :                                 &wb->bdi->tot_write_bandwidth);
      94     2480257 :                 return true;
      95             :         }
      96             : }
      97             : 
      98    76646446 : static void wb_io_lists_depopulated(struct bdi_writeback *wb)
      99             : {
     100   153292892 :         if (wb_has_dirty_io(wb) && list_empty(&wb->b_dirty) &&
     101    25105735 :             list_empty(&wb->b_io) && list_empty(&wb->b_more_io)) {
     102     2480145 :                 clear_bit(WB_has_dirty_io, &wb->state);
     103     2480170 :                 WARN_ON_ONCE(atomic_long_sub_return(wb->avg_write_bandwidth,
     104             :                                         &wb->bdi->tot_write_bandwidth) < 0);
     105             :         }
     106    76646470 : }
     107             : 
     108             : /**
     109             :  * inode_io_list_move_locked - move an inode onto a bdi_writeback IO list
     110             :  * @inode: inode to be moved
     111             :  * @wb: target bdi_writeback
     112             :  * @head: one of @wb->b_{dirty|io|more_io|dirty_time}
     113             :  *
     114             :  * Move @inode->i_io_list to @list of @wb and set %WB_has_dirty_io.
     115             :  * Returns %true if @inode is the first occupant of the !dirty_time IO
     116             :  * lists; otherwise, %false.
     117             :  */
     118    73704753 : static bool inode_io_list_move_locked(struct inode *inode,
     119             :                                       struct bdi_writeback *wb,
     120             :                                       struct list_head *head)
     121             : {
     122    73704753 :         assert_spin_locked(&wb->list_lock);
     123    73704753 :         assert_spin_locked(&inode->i_lock);
     124    73704753 :         WARN_ON_ONCE(inode->i_state & I_FREEING);
     125             : 
     126    73704753 :         list_move(&inode->i_io_list, head);
     127             : 
     128             :         /* dirty_time doesn't count as dirty_io until expiration */
     129    73704743 :         if (head != &wb->b_dirty_time)
     130    73704670 :                 return wb_io_lists_populated(wb);
     131             : 
     132          73 :         wb_io_lists_depopulated(wb);
     133          73 :         return false;
     134             : }
     135             : 
     136     2222234 : static void wb_wakeup(struct bdi_writeback *wb)
     137             : {
     138     2222234 :         spin_lock_irq(&wb->work_lock);
     139     4444470 :         if (test_bit(WB_registered, &wb->state))
     140     2222235 :                 mod_delayed_work(bdi_wq, &wb->dwork, 0);
     141     2222236 :         spin_unlock_irq(&wb->work_lock);
     142     2222236 : }
     143             : 
     144     3883862 : static void finish_writeback_work(struct bdi_writeback *wb,
     145             :                                   struct wb_writeback_work *work)
     146             : {
     147     3883862 :         struct wb_completion *done = work->done;
     148             : 
     149     3883862 :         if (work->auto_free)
     150     3883861 :                 kfree(work);
     151     3884103 :         if (done) {
     152     3884103 :                 wait_queue_head_t *waitq = done->waitq;
     153             : 
     154             :                 /* @done can't be accessed after the following dec */
     155     3884103 :                 if (atomic_dec_and_test(&done->cnt))
     156     2602665 :                         wake_up_all(waitq);
     157             :         }
     158     3884106 : }
     159             : 
     160     3882152 : static void wb_queue_work(struct bdi_writeback *wb,
     161             :                           struct wb_writeback_work *work)
     162             : {
     163     3882152 :         trace_writeback_queue(wb, work);
     164             : 
     165     3881372 :         if (work->done)
     166     3881372 :                 atomic_inc(&work->done->cnt);
     167             : 
     168     3883608 :         spin_lock_irq(&wb->work_lock);
     169             : 
     170     7765838 :         if (test_bit(WB_registered, &wb->state)) {
     171     3882919 :                 list_add_tail(&work->list, &wb->work_list);
     172     3881610 :                 mod_delayed_work(bdi_wq, &wb->dwork, 0);
     173             :         } else
     174           0 :                 finish_writeback_work(wb, work);
     175             : 
     176     3884221 :         spin_unlock_irq(&wb->work_lock);
     177     3884214 : }
     178             : 
     179             : /**
     180             :  * wb_wait_for_completion - wait for completion of bdi_writeback_works
     181             :  * @done: target wb_completion
     182             :  *
     183             :  * Wait for one or more work items issued to @bdi with their ->done field
     184             :  * set to @done, which should have been initialized with
     185             :  * DEFINE_WB_COMPLETION().  This function returns after all such work items
     186             :  * are completed.  Work items which are waited upon aren't freed
     187             :  * automatically on completion.
     188             :  */
     189    14379835 : void wb_wait_for_completion(struct wb_completion *done)
     190             : {
     191    14379835 :         atomic_dec(&done->cnt);          /* put down the initial count */
     192    17123090 :         wait_event(*done->waitq, !atomic_read(&done->cnt));
     193    14379875 : }
     194             : 
     195             : #ifdef CONFIG_CGROUP_WRITEBACK
     196             : 
     197             : /*
     198             :  * Parameters for foreign inode detection, see wbc_detach_inode() to see
     199             :  * how they're used.
     200             :  *
     201             :  * These paramters are inherently heuristical as the detection target
     202             :  * itself is fuzzy.  All we want to do is detaching an inode from the
     203             :  * current owner if it's being written to by some other cgroups too much.
     204             :  *
     205             :  * The current cgroup writeback is built on the assumption that multiple
     206             :  * cgroups writing to the same inode concurrently is very rare and a mode
     207             :  * of operation which isn't well supported.  As such, the goal is not
     208             :  * taking too long when a different cgroup takes over an inode while
     209             :  * avoiding too aggressive flip-flops from occasional foreign writes.
     210             :  *
     211             :  * We record, very roughly, 2s worth of IO time history and if more than
     212             :  * half of that is foreign, trigger the switch.  The recording is quantized
     213             :  * to 16 slots.  To avoid tiny writes from swinging the decision too much,
     214             :  * writes smaller than 1/8 of avg size are ignored.
     215             :  */
     216             : #define WB_FRN_TIME_SHIFT       13      /* 1s = 2^13, upto 8 secs w/ 16bit */
     217             : #define WB_FRN_TIME_AVG_SHIFT   3       /* avg = avg * 7/8 + new * 1/8 */
     218             : #define WB_FRN_TIME_CUT_DIV     8       /* ignore rounds < avg / 8 */
     219             : #define WB_FRN_TIME_PERIOD      (2 * (1 << WB_FRN_TIME_SHIFT))    /* 2s */
     220             : 
     221             : #define WB_FRN_HIST_SLOTS       16      /* inode->i_wb_frn_history is 16bit */
     222             : #define WB_FRN_HIST_UNIT        (WB_FRN_TIME_PERIOD / WB_FRN_HIST_SLOTS)
     223             :                                         /* each slot's duration is 2s / 16 */
     224             : #define WB_FRN_HIST_THR_SLOTS   (WB_FRN_HIST_SLOTS / 2)
     225             :                                         /* if foreign slots >= 8, switch */
     226             : #define WB_FRN_HIST_MAX_SLOTS   (WB_FRN_HIST_THR_SLOTS / 2 + 1)
     227             :                                         /* one round can affect upto 5 slots */
     228             : #define WB_FRN_MAX_IN_FLIGHT    1024    /* don't queue too many concurrently */
     229             : 
     230             : /*
     231             :  * Maximum inodes per isw.  A specific value has been chosen to make
     232             :  * struct inode_switch_wbs_context fit into 1024 bytes kmalloc.
     233             :  */
     234             : #define WB_MAX_INODES_PER_ISW  ((1024UL - sizeof(struct inode_switch_wbs_context)) \
     235             :                                 / sizeof(struct inode *))
     236             : 
     237             : static atomic_t isw_nr_in_flight = ATOMIC_INIT(0);
     238             : static struct workqueue_struct *isw_wq;
     239             : 
     240    34064043 : void __inode_attach_wb(struct inode *inode, struct folio *folio)
     241             : {
     242    34064043 :         struct backing_dev_info *bdi = inode_to_bdi(inode);
     243    33615908 :         struct bdi_writeback *wb = NULL;
     244             : 
     245    33615908 :         if (inode_cgwb_enabled(inode)) {
     246    31206093 :                 struct cgroup_subsys_state *memcg_css;
     247             : 
     248    31206093 :                 if (folio) {
     249    21982729 :                         memcg_css = mem_cgroup_css_from_folio(folio);
     250    21946045 :                         wb = wb_get_create(bdi, memcg_css, GFP_ATOMIC);
     251             :                 } else {
     252             :                         /* must pin memcg_css, see wb_get_create() */
     253     9223364 :                         memcg_css = task_get_css(current, memory_cgrp_id);
     254     9085331 :                         wb = wb_get_create(bdi, memcg_css, GFP_ATOMIC);
     255     8883720 :                         css_put(memcg_css);
     256             :                 }
     257             :         }
     258             : 
     259    31063193 :         if (!wb)
     260     2752466 :                 wb = &bdi->wb;
     261             : 
     262             :         /*
     263             :          * There may be multiple instances of this function racing to
     264             :          * update the same inode.  Use cmpxchg() to tell the winner.
     265             :          */
     266    33815659 :         if (unlikely(cmpxchg(&inode->i_wb, NULL, wb)))
     267           0 :                 wb_put(wb);
     268    34329165 : }
     269             : EXPORT_SYMBOL_GPL(__inode_attach_wb);
     270             : 
     271             : /**
     272             :  * inode_cgwb_move_to_attached - put the inode onto wb->b_attached list
     273             :  * @inode: inode of interest with i_lock held
     274             :  * @wb: target bdi_writeback
     275             :  *
     276             :  * Remove the inode from wb's io lists and if necessarily put onto b_attached
     277             :  * list.  Only inodes attached to cgwb's are kept on this list.
     278             :  */
     279    44694680 : static void inode_cgwb_move_to_attached(struct inode *inode,
     280             :                                         struct bdi_writeback *wb)
     281             : {
     282    44694680 :         assert_spin_locked(&wb->list_lock);
     283    44694680 :         assert_spin_locked(&inode->i_lock);
     284    44694680 :         WARN_ON_ONCE(inode->i_state & I_FREEING);
     285             : 
     286    44694680 :         inode->i_state &= ~I_SYNC_QUEUED;
     287    44694680 :         if (wb != &wb->bdi->wb)
     288    44480985 :                 list_move(&inode->i_io_list, &wb->b_attached);
     289             :         else
     290      213695 :                 list_del_init(&inode->i_io_list);
     291    44694665 :         wb_io_lists_depopulated(wb);
     292    44694635 : }
     293             : 
     294             : /**
     295             :  * locked_inode_to_wb_and_lock_list - determine a locked inode's wb and lock it
     296             :  * @inode: inode of interest with i_lock held
     297             :  *
     298             :  * Returns @inode's wb with its list_lock held.  @inode->i_lock must be
     299             :  * held on entry and is released on return.  The returned wb is guaranteed
     300             :  * to stay @inode's associated wb until its list_lock is released.
     301             :  */
     302             : static struct bdi_writeback *
     303   137469305 : locked_inode_to_wb_and_lock_list(struct inode *inode)
     304             :         __releases(&inode->i_lock)
     305             :         __acquires(&wb->list_lock)
     306             : {
     307   137469305 :         while (true) {
     308   137469305 :                 struct bdi_writeback *wb = inode_to_wb(inode);
     309             : 
     310             :                 /*
     311             :                  * inode_to_wb() association is protected by both
     312             :                  * @inode->i_lock and @wb->list_lock but list_lock nests
     313             :                  * outside i_lock.  Drop i_lock and verify that the
     314             :                  * association hasn't changed after acquiring list_lock.
     315             :                  */
     316   137469305 :                 wb_get(wb);
     317   137051508 :                 spin_unlock(&inode->i_lock);
     318   137646368 :                 spin_lock(&wb->list_lock);
     319             : 
     320             :                 /* i_wb may have changed inbetween, can't use inode_to_wb() */
     321   137862423 :                 if (likely(wb == inode->i_wb)) {
     322   137862423 :                         wb_put(wb);     /* @inode already has ref */
     323   137862401 :                         return wb;
     324             :                 }
     325             : 
     326           0 :                 spin_unlock(&wb->list_lock);
     327           0 :                 wb_put(wb);
     328           0 :                 cpu_relax();
     329           0 :                 spin_lock(&inode->i_lock);
     330             :         }
     331             : }
     332             : 
     333             : /**
     334             :  * inode_to_wb_and_lock_list - determine an inode's wb and lock it
     335             :  * @inode: inode of interest
     336             :  *
     337             :  * Same as locked_inode_to_wb_and_lock_list() but @inode->i_lock isn't held
     338             :  * on entry.
     339             :  */
     340             : static struct bdi_writeback *inode_to_wb_and_lock_list(struct inode *inode)
     341             :         __acquires(&wb->list_lock)
     342             : {
     343    74127449 :         spin_lock(&inode->i_lock);
     344    74133421 :         return locked_inode_to_wb_and_lock_list(inode);
     345             : }
     346             : 
     347             : struct inode_switch_wbs_context {
     348             :         struct rcu_work         work;
     349             : 
     350             :         /*
     351             :          * Multiple inodes can be switched at once.  The switching procedure
     352             :          * consists of two parts, separated by a RCU grace period.  To make
     353             :          * sure that the second part is executed for each inode gone through
     354             :          * the first part, all inode pointers are placed into a NULL-terminated
     355             :          * array embedded into struct inode_switch_wbs_context.  Otherwise
     356             :          * an inode could be left in a non-consistent state.
     357             :          */
     358             :         struct bdi_writeback    *new_wb;
     359             :         struct inode            *inodes[];
     360             : };
     361             : 
     362             : static void bdi_down_write_wb_switch_rwsem(struct backing_dev_info *bdi)
     363             : {
     364    13523234 :         down_write(&bdi->wb_switch_rwsem);
     365             : }
     366             : 
     367             : static void bdi_up_write_wb_switch_rwsem(struct backing_dev_info *bdi)
     368             : {
     369    13523281 :         up_write(&bdi->wb_switch_rwsem);
     370             : }
     371             : 
     372     3890561 : static bool inode_do_switch_wbs(struct inode *inode,
     373             :                                 struct bdi_writeback *old_wb,
     374             :                                 struct bdi_writeback *new_wb)
     375             : {
     376     3890561 :         struct address_space *mapping = inode->i_mapping;
     377     3890561 :         XA_STATE(xas, &mapping->i_pages, 0);
     378     3890561 :         struct folio *folio;
     379     3890561 :         bool switched = false;
     380             : 
     381     3890561 :         spin_lock(&inode->i_lock);
     382     3890561 :         xa_lock_irq(&mapping->i_pages);
     383             : 
     384             :         /*
     385             :          * Once I_FREEING or I_WILL_FREE are visible under i_lock, the eviction
     386             :          * path owns the inode and we shouldn't modify ->i_io_list.
     387             :          */
     388     3890561 :         if (unlikely(inode->i_state & (I_FREEING | I_WILL_FREE)))
     389           0 :                 goto skip_switch;
     390             : 
     391     3890561 :         trace_inode_switch_wbs(inode, old_wb, new_wb);
     392             : 
     393             :         /*
     394             :          * Count and transfer stats.  Note that PAGECACHE_TAG_DIRTY points
     395             :          * to possibly dirty folios while PAGECACHE_TAG_WRITEBACK points to
     396             :          * folios actually under writeback.
     397             :          */
     398    13148159 :         xas_for_each_marked(&xas, folio, ULONG_MAX, PAGECACHE_TAG_DIRTY) {
     399     9257598 :                 if (folio_test_dirty(folio)) {
     400     9257592 :                         long nr = folio_nr_pages(folio);
     401     9257592 :                         wb_stat_mod(old_wb, WB_RECLAIMABLE, -nr);
     402     9257592 :                         wb_stat_mod(new_wb, WB_RECLAIMABLE, nr);
     403             :                 }
     404             :         }
     405             : 
     406     3890561 :         xas_set(&xas, 0);
     407     6447053 :         xas_for_each_marked(&xas, folio, ULONG_MAX, PAGECACHE_TAG_WRITEBACK) {
     408     2556492 :                 long nr = folio_nr_pages(folio);
     409     2556492 :                 WARN_ON_ONCE(!folio_test_writeback(folio));
     410     2556492 :                 wb_stat_mod(old_wb, WB_WRITEBACK, -nr);
     411     2556492 :                 wb_stat_mod(new_wb, WB_WRITEBACK, nr);
     412             :         }
     413             : 
     414     3890561 :         if (mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) {
     415        3025 :                 atomic_dec(&old_wb->writeback_inodes);
     416        3025 :                 atomic_inc(&new_wb->writeback_inodes);
     417             :         }
     418             : 
     419     3890561 :         wb_get(new_wb);
     420             : 
     421             :         /*
     422             :          * Transfer to @new_wb's IO list if necessary.  If the @inode is dirty,
     423             :          * the specific list @inode was on is ignored and the @inode is put on
     424             :          * ->b_dirty which is always correct including from ->b_dirty_time.
     425             :          * The transfer preserves @inode->dirtied_when ordering.  If the @inode
     426             :          * was clean, it means it was on the b_attached list, so move it onto
     427             :          * the b_attached list of @new_wb.
     428             :          */
     429     3890561 :         if (!list_empty(&inode->i_io_list)) {
     430     3890526 :                 inode->i_wb = new_wb;
     431             : 
     432     3890526 :                 if (inode->i_state & I_DIRTY_ALL) {
     433        5877 :                         struct inode *pos;
     434             : 
     435    13535183 :                         list_for_each_entry(pos, &new_wb->b_dirty, i_io_list)
     436    13530117 :                                 if (time_after_eq(inode->dirtied_when,
     437             :                                                   pos->dirtied_when))
     438             :                                         break;
     439        5877 :                         inode_io_list_move_locked(inode, new_wb,
     440             :                                                   pos->i_io_list.prev);
     441             :                 } else {
     442     3884649 :                         inode_cgwb_move_to_attached(inode, new_wb);
     443             :                 }
     444             :         } else {
     445          35 :                 inode->i_wb = new_wb;
     446             :         }
     447             : 
     448             :         /* ->i_wb_frn updates may race wbc_detach_inode() but doesn't matter */
     449     3890561 :         inode->i_wb_frn_winner = 0;
     450     3890561 :         inode->i_wb_frn_avg_time = 0;
     451     3890561 :         inode->i_wb_frn_history = 0;
     452     3890561 :         switched = true;
     453     3890561 : skip_switch:
     454             :         /*
     455             :          * Paired with load_acquire in unlocked_inode_to_wb_begin() and
     456             :          * ensures that the new wb is visible if they see !I_WB_SWITCH.
     457             :          */
     458     3890561 :         smp_store_release(&inode->i_state, inode->i_state & ~I_WB_SWITCH);
     459             : 
     460     3890561 :         xa_unlock_irq(&mapping->i_pages);
     461     3890561 :         spin_unlock(&inode->i_lock);
     462             : 
     463     3890561 :         return switched;
     464             : }
     465             : 
     466       43271 : static void inode_switch_wbs_work_fn(struct work_struct *work)
     467             : {
     468       43271 :         struct inode_switch_wbs_context *isw =
     469       43271 :                 container_of(to_rcu_work(work), struct inode_switch_wbs_context, work);
     470       43271 :         struct backing_dev_info *bdi = inode_to_bdi(isw->inodes[0]);
     471       43273 :         struct bdi_writeback *old_wb = isw->inodes[0]->i_wb;
     472       43273 :         struct bdi_writeback *new_wb = isw->new_wb;
     473       43273 :         unsigned long nr_switched = 0;
     474       43273 :         struct inode **inodep;
     475             : 
     476             :         /*
     477             :          * If @inode switches cgwb membership while sync_inodes_sb() is
     478             :          * being issued, sync_inodes_sb() might miss it.  Synchronize.
     479             :          */
     480       43273 :         down_read(&bdi->wb_switch_rwsem);
     481             : 
     482             :         /*
     483             :          * By the time control reaches here, RCU grace period has passed
     484             :          * since I_WB_SWITCH assertion and all wb stat update transactions
     485             :          * between unlocked_inode_to_wb_begin/end() are guaranteed to be
     486             :          * synchronizing against the i_pages lock.
     487             :          *
     488             :          * Grabbing old_wb->list_lock, inode->i_lock and the i_pages lock
     489             :          * gives us exclusion against all wb related operations on @inode
     490             :          * including IO list manipulations and stat updates.
     491             :          */
     492       43273 :         if (old_wb < new_wb) {
     493       21829 :                 spin_lock(&old_wb->list_lock);
     494       21829 :                 spin_lock_nested(&new_wb->list_lock, SINGLE_DEPTH_NESTING);
     495             :         } else {
     496       21444 :                 spin_lock(&new_wb->list_lock);
     497       21444 :                 spin_lock_nested(&old_wb->list_lock, SINGLE_DEPTH_NESTING);
     498             :         }
     499             : 
     500     3933834 :         for (inodep = isw->inodes; *inodep; inodep++) {
     501     3890561 :                 WARN_ON_ONCE((*inodep)->i_wb != old_wb);
     502     3890561 :                 if (inode_do_switch_wbs(*inodep, old_wb, new_wb))
     503     3890561 :                         nr_switched++;
     504             :         }
     505             : 
     506       43273 :         spin_unlock(&new_wb->list_lock);
     507       43273 :         spin_unlock(&old_wb->list_lock);
     508             : 
     509       43273 :         up_read(&bdi->wb_switch_rwsem);
     510             : 
     511       43273 :         if (nr_switched) {
     512       43273 :                 wb_wakeup(new_wb);
     513       43273 :                 wb_put_many(old_wb, nr_switched);
     514             :         }
     515             : 
     516     3933010 :         for (inodep = isw->inodes; *inodep; inodep++)
     517     3889737 :                 iput(*inodep);
     518       43273 :         wb_put(new_wb);
     519       43273 :         kfree(isw);
     520       43273 :         atomic_dec(&isw_nr_in_flight);
     521       43273 : }
     522             : 
     523   278422393 : static bool inode_prepare_wbs_switch(struct inode *inode,
     524             :                                      struct bdi_writeback *new_wb)
     525             : {
     526             :         /*
     527             :          * Paired with smp_mb() in cgroup_writeback_umount().
     528             :          * isw_nr_in_flight must be increased before checking SB_ACTIVE and
     529             :          * grabbing an inode, otherwise isw_nr_in_flight can be observed as 0
     530             :          * in cgroup_writeback_umount() and the isw_wq will be not flushed.
     531             :          */
     532   278422393 :         smp_mb();
     533             : 
     534   278422393 :         if (IS_DAX(inode))
     535             :                 return false;
     536             : 
     537             :         /* while holding I_WB_SWITCH, no one else can update the association */
     538   278422393 :         spin_lock(&inode->i_lock);
     539   278422393 :         if (!(inode->i_sb->s_flags & SB_ACTIVE) ||
     540   278401740 :             inode->i_state & (I_WB_SWITCH | I_FREEING | I_WILL_FREE) ||
     541             :             inode_to_wb(inode) == new_wb) {
     542   274531832 :                 spin_unlock(&inode->i_lock);
     543   274531832 :                 return false;
     544             :         }
     545     3890561 :         inode->i_state |= I_WB_SWITCH;
     546     3890561 :         __iget(inode);
     547     3890561 :         spin_unlock(&inode->i_lock);
     548             : 
     549     3890561 :         return true;
     550             : }
     551             : 
     552             : /**
     553             :  * inode_switch_wbs - change the wb association of an inode
     554             :  * @inode: target inode
     555             :  * @new_wb_id: ID of the new wb
     556             :  *
     557             :  * Switch @inode's wb association to the wb identified by @new_wb_id.  The
     558             :  * switching is performed asynchronously and may fail silently.
     559             :  */
     560      109779 : static void inode_switch_wbs(struct inode *inode, int new_wb_id)
     561             : {
     562      109779 :         struct backing_dev_info *bdi = inode_to_bdi(inode);
     563      109779 :         struct cgroup_subsys_state *memcg_css;
     564      109779 :         struct inode_switch_wbs_context *isw;
     565             : 
     566             :         /* noop if seems to be already in progress */
     567      109779 :         if (inode->i_state & I_WB_SWITCH)
     568             :                 return;
     569             : 
     570             :         /* avoid queueing a new switch if too many are already in flight */
     571        7000 :         if (atomic_read(&isw_nr_in_flight) > WB_FRN_MAX_IN_FLIGHT)
     572             :                 return;
     573             : 
     574        7000 :         isw = kzalloc(struct_size(isw, inodes, 2), GFP_ATOMIC);
     575        7000 :         if (!isw)
     576             :                 return;
     577             : 
     578        7000 :         atomic_inc(&isw_nr_in_flight);
     579             : 
     580             :         /* find and pin the new wb */
     581        7000 :         rcu_read_lock();
     582        7000 :         memcg_css = css_from_id(new_wb_id, &memory_cgrp_subsys);
     583        7000 :         if (memcg_css && !css_tryget(memcg_css))
     584           0 :                 memcg_css = NULL;
     585        7000 :         rcu_read_unlock();
     586        7000 :         if (!memcg_css)
     587           0 :                 goto out_free;
     588             : 
     589        7000 :         isw->new_wb = wb_get_create(bdi, memcg_css, GFP_ATOMIC);
     590        7000 :         css_put(memcg_css);
     591        7000 :         if (!isw->new_wb)
     592          55 :                 goto out_free;
     593             : 
     594        6945 :         if (!inode_prepare_wbs_switch(inode, isw->new_wb))
     595         139 :                 goto out_free;
     596             : 
     597        6806 :         isw->inodes[0] = inode;
     598             : 
     599             :         /*
     600             :          * In addition to synchronizing among switchers, I_WB_SWITCH tells
     601             :          * the RCU protected stat update paths to grab the i_page
     602             :          * lock so that stat transfer can synchronize against them.
     603             :          * Let's continue after I_WB_SWITCH is guaranteed to be visible.
     604             :          */
     605        6806 :         INIT_RCU_WORK(&isw->work, inode_switch_wbs_work_fn);
     606        6806 :         queue_rcu_work(isw_wq, &isw->work);
     607        6806 :         return;
     608             : 
     609         194 : out_free:
     610         194 :         atomic_dec(&isw_nr_in_flight);
     611         194 :         if (isw->new_wb)
     612         139 :                 wb_put(isw->new_wb);
     613         194 :         kfree(isw);
     614             : }
     615             : 
     616             : /**
     617             :  * cleanup_offline_cgwb - detach associated inodes
     618             :  * @wb: target wb
     619             :  *
     620             :  * Switch all inodes attached to @wb to a nearest living ancestor's wb in order
     621             :  * to eventually release the dying @wb.  Returns %true if not all inodes were
     622             :  * switched and the function has to be restarted.
     623             :  */
     624       45640 : bool cleanup_offline_cgwb(struct bdi_writeback *wb)
     625             : {
     626       45640 :         struct cgroup_subsys_state *memcg_css;
     627       45640 :         struct inode_switch_wbs_context *isw;
     628       45640 :         struct inode *inode;
     629       45640 :         int nr;
     630       45640 :         bool restart = false;
     631             : 
     632       45640 :         isw = kzalloc(struct_size(isw, inodes, WB_MAX_INODES_PER_ISW),
     633             :                       GFP_KERNEL);
     634       45640 :         if (!isw)
     635             :                 return restart;
     636             : 
     637       45640 :         atomic_inc(&isw_nr_in_flight);
     638             : 
     639       45960 :         for (memcg_css = wb->memcg_css->parent; memcg_css;
     640         320 :              memcg_css = memcg_css->parent) {
     641       45960 :                 isw->new_wb = wb_get_create(wb->bdi, memcg_css, GFP_KERNEL);
     642       45960 :                 if (isw->new_wb)
     643             :                         break;
     644             :         }
     645       45640 :         if (unlikely(!isw->new_wb))
     646           0 :                 isw->new_wb = &wb->bdi->wb; /* wb_get() is noop for bdi's wb */
     647             : 
     648       45640 :         nr = 0;
     649       45640 :         spin_lock(&wb->list_lock);
     650   278428648 :         list_for_each_entry(inode, &wb->b_attached, i_io_list) {
     651   278415448 :                 if (!inode_prepare_wbs_switch(inode, isw->new_wb))
     652   274531693 :                         continue;
     653             : 
     654     3883755 :                 isw->inodes[nr++] = inode;
     655             : 
     656     3883755 :                 if (nr >= WB_MAX_INODES_PER_ISW - 1) {
     657             :                         restart = true;
     658             :                         break;
     659             :                 }
     660             :         }
     661       45640 :         spin_unlock(&wb->list_lock);
     662             : 
     663             :         /* no attached inodes? bail out */
     664       45640 :         if (nr == 0) {
     665        9173 :                 atomic_dec(&isw_nr_in_flight);
     666        9173 :                 wb_put(isw->new_wb);
     667        9173 :                 kfree(isw);
     668        9173 :                 return restart;
     669             :         }
     670             : 
     671             :         /*
     672             :          * In addition to synchronizing among switchers, I_WB_SWITCH tells
     673             :          * the RCU protected stat update paths to grab the i_page
     674             :          * lock so that stat transfer can synchronize against them.
     675             :          * Let's continue after I_WB_SWITCH is guaranteed to be visible.
     676             :          */
     677       36467 :         INIT_RCU_WORK(&isw->work, inode_switch_wbs_work_fn);
     678       36467 :         queue_rcu_work(isw_wq, &isw->work);
     679             : 
     680       36467 :         return restart;
     681             : }
     682             : 
     683             : /**
     684             :  * wbc_attach_and_unlock_inode - associate wbc with target inode and unlock it
     685             :  * @wbc: writeback_control of interest
     686             :  * @inode: target inode
     687             :  *
     688             :  * @inode is locked and about to be written back under the control of @wbc.
     689             :  * Record @inode's writeback context into @wbc and unlock the i_lock.  On
     690             :  * writeback completion, wbc_detach_inode() should be called.  This is used
     691             :  * to track the cgroup writeback context.
     692             :  */
     693   108143777 : void wbc_attach_and_unlock_inode(struct writeback_control *wbc,
     694             :                                  struct inode *inode)
     695             : {
     696   108143777 :         if (!inode_cgwb_enabled(inode)) {
     697      278906 :                 spin_unlock(&inode->i_lock);
     698      278906 :                 return;
     699             :         }
     700             : 
     701   107863888 :         wbc->wb = inode_to_wb(inode);
     702   107863888 :         wbc->inode = inode;
     703             : 
     704   107863888 :         wbc->wb_id = wbc->wb->memcg_css->id;
     705   107863888 :         wbc->wb_lcand_id = inode->i_wb_frn_winner;
     706   107863888 :         wbc->wb_tcand_id = 0;
     707   107863888 :         wbc->wb_bytes = 0;
     708   107863888 :         wbc->wb_lcand_bytes = 0;
     709   107863888 :         wbc->wb_tcand_bytes = 0;
     710             : 
     711   107863888 :         wb_get(wbc->wb);
     712   107864781 :         spin_unlock(&inode->i_lock);
     713             : 
     714             :         /*
     715             :          * A dying wb indicates that either the blkcg associated with the
     716             :          * memcg changed or the associated memcg is dying.  In the first
     717             :          * case, a replacement wb should already be available and we should
     718             :          * refresh the wb immediately.  In the second case, trying to
     719             :          * refresh will keep failing.
     720             :          */
     721   108652189 :         if (unlikely(wb_dying(wbc->wb) && !css_is_dying(wbc->wb->memcg_css)))
     722           0 :                 inode_switch_wbs(inode, wbc->wb_id);
     723             : }
     724             : EXPORT_SYMBOL_GPL(wbc_attach_and_unlock_inode);
     725             : 
     726             : /**
     727             :  * wbc_detach_inode - disassociate wbc from inode and perform foreign detection
     728             :  * @wbc: writeback_control of the just finished writeback
     729             :  *
     730             :  * To be called after a writeback attempt of an inode finishes and undoes
     731             :  * wbc_attach_and_unlock_inode().  Can be called under any context.
     732             :  *
     733             :  * As concurrent write sharing of an inode is expected to be very rare and
     734             :  * memcg only tracks page ownership on first-use basis severely confining
     735             :  * the usefulness of such sharing, cgroup writeback tracks ownership
     736             :  * per-inode.  While the support for concurrent write sharing of an inode
     737             :  * is deemed unnecessary, an inode being written to by different cgroups at
     738             :  * different points in time is a lot more common, and, more importantly,
     739             :  * charging only by first-use can too readily lead to grossly incorrect
     740             :  * behaviors (single foreign page can lead to gigabytes of writeback to be
     741             :  * incorrectly attributed).
     742             :  *
     743             :  * To resolve this issue, cgroup writeback detects the majority dirtier of
     744             :  * an inode and transfers the ownership to it.  To avoid unnecessary
     745             :  * oscillation, the detection mechanism keeps track of history and gives
     746             :  * out the switch verdict only if the foreign usage pattern is stable over
     747             :  * a certain amount of time and/or writeback attempts.
     748             :  *
     749             :  * On each writeback attempt, @wbc tries to detect the majority writer
     750             :  * using Boyer-Moore majority vote algorithm.  In addition to the byte
     751             :  * count from the majority voting, it also counts the bytes written for the
     752             :  * current wb and the last round's winner wb (max of last round's current
     753             :  * wb, the winner from two rounds ago, and the last round's majority
     754             :  * candidate).  Keeping track of the historical winner helps the algorithm
     755             :  * to semi-reliably detect the most active writer even when it's not the
     756             :  * absolute majority.
     757             :  *
     758             :  * Once the winner of the round is determined, whether the winner is
     759             :  * foreign or not and how much IO time the round consumed is recorded in
     760             :  * inode->i_wb_frn_history.  If the amount of recorded foreign IO time is
     761             :  * over a certain threshold, the switch verdict is given.
     762             :  */
     763   108141598 : void wbc_detach_inode(struct writeback_control *wbc)
     764             : {
     765   108141598 :         struct bdi_writeback *wb = wbc->wb;
     766   108141598 :         struct inode *inode = wbc->inode;
     767   108141598 :         unsigned long avg_time, max_bytes, max_time;
     768   108141598 :         u16 history;
     769   108141598 :         int max_id;
     770             : 
     771   108141598 :         if (!wb)
     772             :                 return;
     773             : 
     774   107862692 :         history = inode->i_wb_frn_history;
     775   107862692 :         avg_time = inode->i_wb_frn_avg_time;
     776             : 
     777             :         /* pick the winner of this round */
     778   107862692 :         if (wbc->wb_bytes >= wbc->wb_lcand_bytes &&
     779   107729540 :             wbc->wb_bytes >= wbc->wb_tcand_bytes) {
     780   107548862 :                 max_id = wbc->wb_id;
     781   107548862 :                 max_bytes = wbc->wb_bytes;
     782      313830 :         } else if (wbc->wb_lcand_bytes >= wbc->wb_tcand_bytes) {
     783      133490 :                 max_id = wbc->wb_lcand_id;
     784      133490 :                 max_bytes = wbc->wb_lcand_bytes;
     785             :         } else {
     786      180340 :                 max_id = wbc->wb_tcand_id;
     787      180340 :                 max_bytes = wbc->wb_tcand_bytes;
     788             :         }
     789             : 
     790             :         /*
     791             :          * Calculate the amount of IO time the winner consumed and fold it
     792             :          * into the running average kept per inode.  If the consumed IO
     793             :          * time is lower than avag / WB_FRN_TIME_CUT_DIV, ignore it for
     794             :          * deciding whether to switch or not.  This is to prevent one-off
     795             :          * small dirtiers from skewing the verdict.
     796             :          */
     797   107862692 :         max_time = DIV_ROUND_UP((max_bytes >> PAGE_SHIFT) << WB_FRN_TIME_SHIFT,
     798             :                                 wb->avg_write_bandwidth);
     799   107862692 :         if (avg_time)
     800    91227228 :                 avg_time += (max_time >> WB_FRN_TIME_AVG_SHIFT) -
     801    91227228 :                             (avg_time >> WB_FRN_TIME_AVG_SHIFT);
     802             :         else
     803             :                 avg_time = max_time;    /* immediate catch up on first run */
     804             : 
     805   107862692 :         if (max_time >= avg_time / WB_FRN_TIME_CUT_DIV) {
     806    89142352 :                 int slots;
     807             : 
     808             :                 /*
     809             :                  * The switch verdict is reached if foreign wb's consume
     810             :                  * more than a certain proportion of IO time in a
     811             :                  * WB_FRN_TIME_PERIOD.  This is loosely tracked by 16 slot
     812             :                  * history mask where each bit represents one sixteenth of
     813             :                  * the period.  Determine the number of slots to shift into
     814             :                  * history from @max_time.
     815             :                  */
     816    89142352 :                 slots = min(DIV_ROUND_UP(max_time, WB_FRN_HIST_UNIT),
     817             :                             (unsigned long)WB_FRN_HIST_MAX_SLOTS);
     818    89142352 :                 history <<= slots;
     819    89142352 :                 if (wbc->wb_id != max_id)
     820      304662 :                         history |= (1U << slots) - 1;
     821             : 
     822    89142352 :                 if (history)
     823     1053470 :                         trace_inode_foreign_history(inode, wbc, history);
     824             : 
     825             :                 /*
     826             :                  * Switch if the current wb isn't the consistent winner.
     827             :                  * If there are multiple closely competing dirtiers, the
     828             :                  * inode may switch across them repeatedly over time, which
     829             :                  * is okay.  The main goal is avoiding keeping an inode on
     830             :                  * the wrong wb for an extended period of time.
     831             :                  */
     832    89142352 :                 if (hweight16(history) > WB_FRN_HIST_THR_SLOTS)
     833      109779 :                         inode_switch_wbs(inode, max_id);
     834             :         }
     835             : 
     836             :         /*
     837             :          * Multiple instances of this function may race to update the
     838             :          * following fields but we don't mind occassional inaccuracies.
     839             :          */
     840   107862692 :         inode->i_wb_frn_winner = max_id;
     841   107862692 :         inode->i_wb_frn_avg_time = min(avg_time, (unsigned long)U16_MAX);
     842   107862692 :         inode->i_wb_frn_history = history;
     843             : 
     844   107862692 :         wb_put(wbc->wb);
     845   107861660 :         wbc->wb = NULL;
     846             : }
     847             : EXPORT_SYMBOL_GPL(wbc_detach_inode);
     848             : 
     849             : /**
     850             :  * wbc_account_cgroup_owner - account writeback to update inode cgroup ownership
     851             :  * @wbc: writeback_control of the writeback in progress
     852             :  * @page: page being written out
     853             :  * @bytes: number of bytes being written out
     854             :  *
     855             :  * @bytes from @page are about to written out during the writeback
     856             :  * controlled by @wbc.  Keep the book for foreign inode detection.  See
     857             :  * wbc_detach_inode().
     858             :  */
     859  1067819284 : void wbc_account_cgroup_owner(struct writeback_control *wbc, struct page *page,
     860             :                               size_t bytes)
     861             : {
     862  1067819284 :         struct folio *folio;
     863  1067819284 :         struct cgroup_subsys_state *css;
     864  1067819284 :         int id;
     865             : 
     866             :         /*
     867             :          * pageout() path doesn't attach @wbc to the inode being written
     868             :          * out.  This is intentional as we don't want the function to block
     869             :          * behind a slow cgroup.  Ultimately, we want pageout() to kick off
     870             :          * regular writeback instead of writing things out itself.
     871             :          */
     872  1067819284 :         if (!wbc->wb || wbc->no_cgroup_owner)
     873             :                 return;
     874             : 
     875  1067644153 :         folio = page_folio(page);
     876  1067630264 :         css = mem_cgroup_css_from_folio(folio);
     877             :         /* dead cgroups shouldn't contribute to inode ownership arbitration */
     878  1067633466 :         if (!(css->flags & CSS_ONLINE))
     879             :                 return;
     880             : 
     881  1053861233 :         id = css->id;
     882             : 
     883  1053861233 :         if (id == wbc->wb_id) {
     884  1036493606 :                 wbc->wb_bytes += bytes;
     885  1036493606 :                 return;
     886             :         }
     887             : 
     888    17367627 :         if (id == wbc->wb_lcand_id)
     889     4529179 :                 wbc->wb_lcand_bytes += bytes;
     890             : 
     891             :         /* Boyer-Moore majority vote algorithm */
     892    17367627 :         if (!wbc->wb_tcand_bytes)
     893      454797 :                 wbc->wb_tcand_id = id;
     894    17367627 :         if (id == wbc->wb_tcand_id)
     895    17292278 :                 wbc->wb_tcand_bytes += bytes;
     896             :         else
     897       75349 :                 wbc->wb_tcand_bytes -= min(bytes, wbc->wb_tcand_bytes);
     898             : }
     899             : EXPORT_SYMBOL_GPL(wbc_account_cgroup_owner);
     900             : 
     901             : /**
     902             :  * wb_split_bdi_pages - split nr_pages to write according to bandwidth
     903             :  * @wb: target bdi_writeback to split @nr_pages to
     904             :  * @nr_pages: number of pages to write for the whole bdi
     905             :  *
     906             :  * Split @wb's portion of @nr_pages according to @wb's write bandwidth in
     907             :  * relation to the total write bandwidth of all wb's w/ dirty inodes on
     908             :  * @wb->bdi.
     909             :  */
     910     6060199 : static long wb_split_bdi_pages(struct bdi_writeback *wb, long nr_pages)
     911             : {
     912     6060199 :         unsigned long this_bw = wb->avg_write_bandwidth;
     913     6060199 :         unsigned long tot_bw = atomic_long_read(&wb->bdi->tot_write_bandwidth);
     914             : 
     915     6060199 :         if (nr_pages == LONG_MAX)
     916             :                 return LONG_MAX;
     917             : 
     918             :         /*
     919             :          * This may be called on clean wb's and proportional distribution
     920             :          * may not make sense, just use the original @nr_pages in those
     921             :          * cases.  In general, we wanna err on the side of writing more.
     922             :          */
     923     2946625 :         if (!tot_bw || this_bw >= tot_bw)
     924             :                 return nr_pages;
     925             :         else
     926     1184549 :                 return DIV_ROUND_UP_ULL((u64)nr_pages * this_bw, tot_bw);
     927             : }
     928             : 
     929             : /**
     930             :  * bdi_split_work_to_wbs - split a wb_writeback_work to all wb's of a bdi
     931             :  * @bdi: target backing_dev_info
     932             :  * @base_work: wb_writeback_work to issue
     933             :  * @skip_if_busy: skip wb's which already have writeback in progress
     934             :  *
     935             :  * Split and issue @base_work to all wb's (bdi_writeback's) of @bdi which
     936             :  * have dirty inodes.  If @base_work->nr_page isn't %LONG_MAX, it's
     937             :  * distributed to the busy wbs according to each wb's proportion in the
     938             :  * total active write bandwidth of @bdi.
     939             :  */
     940    14176868 : static void bdi_split_work_to_wbs(struct backing_dev_info *bdi,
     941             :                                   struct wb_writeback_work *base_work,
     942             :                                   bool skip_if_busy)
     943             : {
     944    14176868 :         struct bdi_writeback *last_wb = NULL;
     945    14176868 :         struct bdi_writeback *wb = list_entry(&bdi->wb_list,
     946             :                                               struct bdi_writeback, bdi_node);
     947             : 
     948    14176868 :         might_sleep();
     949    14175732 : restart:
     950    14175732 :         rcu_read_lock();
     951    51330775 :         list_for_each_entry_continue_rcu(wb, &bdi->wb_list, bdi_node) {
     952    37152640 :                 DEFINE_WB_COMPLETION(fallback_work_done, bdi);
     953    37152640 :                 struct wb_writeback_work fallback_work;
     954    37152640 :                 struct wb_writeback_work *work;
     955    37152640 :                 long nr_pages;
     956             : 
     957    37152640 :                 if (last_wb) {
     958           0 :                         wb_put(last_wb);
     959           0 :                         last_wb = NULL;
     960             :                 }
     961             : 
     962             :                 /* SYNC_ALL writes out I_DIRTY_TIME too */
     963    74305444 :                 if (!wb_has_dirty_io(wb) &&
     964    32692003 :                     (base_work->sync_mode == WB_SYNC_NONE ||
     965    30930027 :                      list_empty(&wb->b_dirty_time)))
     966    37154881 :                         continue;
     967     5613112 :                 if (skip_if_busy && writeback_in_progress(wb))
     968      578727 :                         continue;
     969             : 
     970     3882026 :                 nr_pages = wb_split_bdi_pages(wb, base_work->nr_pages);
     971             : 
     972     3881833 :                 work = kmalloc(sizeof(*work), GFP_ATOMIC);
     973     3882611 :                 if (work) {
     974     3882611 :                         *work = *base_work;
     975     3882611 :                         work->nr_pages = nr_pages;
     976     3882611 :                         work->auto_free = 1;
     977     3882611 :                         wb_queue_work(wb, work);
     978     3884185 :                         continue;
     979             :                 }
     980             : 
     981             :                 /*
     982             :                  * If wb_tryget fails, the wb has been shutdown, skip it.
     983             :                  *
     984             :                  * Pin @wb so that it stays on @bdi->wb_list.  This allows
     985             :                  * continuing iteration from @wb after dropping and
     986             :                  * regrabbing rcu read lock.
     987             :                  */
     988           0 :                 if (!wb_tryget(wb))
     989           0 :                         continue;
     990             : 
     991             :                 /* alloc failed, execute synchronously using on-stack fallback */
     992           0 :                 work = &fallback_work;
     993           0 :                 *work = *base_work;
     994           0 :                 work->nr_pages = nr_pages;
     995           0 :                 work->auto_free = 0;
     996           0 :                 work->done = &fallback_work_done;
     997             : 
     998           0 :                 wb_queue_work(wb, work);
     999           0 :                 last_wb = wb;
    1000             : 
    1001           0 :                 rcu_read_unlock();
    1002           0 :                 wb_wait_for_completion(&fallback_work_done);
    1003           0 :                 goto restart;
    1004             :         }
    1005    14178135 :         rcu_read_unlock();
    1006             : 
    1007    14178126 :         if (last_wb)
    1008           0 :                 wb_put(last_wb);
    1009    14178126 : }
    1010             : 
    1011             : /**
    1012             :  * cgroup_writeback_by_id - initiate cgroup writeback from bdi and memcg IDs
    1013             :  * @bdi_id: target bdi id
    1014             :  * @memcg_id: target memcg css id
    1015             :  * @reason: reason why some writeback work initiated
    1016             :  * @done: target wb_completion
    1017             :  *
    1018             :  * Initiate flush of the bdi_writeback identified by @bdi_id and @memcg_id
    1019             :  * with the specified parameters.
    1020             :  */
    1021          30 : int cgroup_writeback_by_id(u64 bdi_id, int memcg_id,
    1022             :                            enum wb_reason reason, struct wb_completion *done)
    1023             : {
    1024          30 :         struct backing_dev_info *bdi;
    1025          30 :         struct cgroup_subsys_state *memcg_css;
    1026          30 :         struct bdi_writeback *wb;
    1027          30 :         struct wb_writeback_work *work;
    1028          30 :         unsigned long dirty;
    1029          30 :         int ret;
    1030             : 
    1031             :         /* lookup bdi and memcg */
    1032          30 :         bdi = bdi_get_by_id(bdi_id);
    1033          30 :         if (!bdi)
    1034             :                 return -ENOENT;
    1035             : 
    1036          30 :         rcu_read_lock();
    1037          30 :         memcg_css = css_from_id(memcg_id, &memory_cgrp_subsys);
    1038          30 :         if (memcg_css && !css_tryget(memcg_css))
    1039           0 :                 memcg_css = NULL;
    1040          30 :         rcu_read_unlock();
    1041          30 :         if (!memcg_css) {
    1042           0 :                 ret = -ENOENT;
    1043           0 :                 goto out_bdi_put;
    1044             :         }
    1045             : 
    1046             :         /*
    1047             :          * And find the associated wb.  If the wb isn't there already
    1048             :          * there's nothing to flush, don't create one.
    1049             :          */
    1050          30 :         wb = wb_get_lookup(bdi, memcg_css);
    1051          30 :         if (!wb) {
    1052           3 :                 ret = -ENOENT;
    1053           3 :                 goto out_css_put;
    1054             :         }
    1055             : 
    1056             :         /*
    1057             :          * The caller is attempting to write out most of
    1058             :          * the currently dirty pages.  Let's take the current dirty page
    1059             :          * count and inflate it by 25% which should be large enough to
    1060             :          * flush out most dirty pages while avoiding getting livelocked by
    1061             :          * concurrent dirtiers.
    1062             :          *
    1063             :          * BTW the memcg stats are flushed periodically and this is best-effort
    1064             :          * estimation, so some potential error is ok.
    1065             :          */
    1066          27 :         dirty = memcg_page_state(mem_cgroup_from_css(memcg_css), NR_FILE_DIRTY);
    1067          27 :         dirty = dirty * 10 / 8;
    1068             : 
    1069             :         /* issue the writeback work */
    1070          27 :         work = kzalloc(sizeof(*work), GFP_NOWAIT | __GFP_NOWARN);
    1071          27 :         if (work) {
    1072          27 :                 work->nr_pages = dirty;
    1073          27 :                 work->sync_mode = WB_SYNC_NONE;
    1074          27 :                 work->range_cyclic = 1;
    1075          27 :                 work->reason = reason;
    1076          27 :                 work->done = done;
    1077          27 :                 work->auto_free = 1;
    1078          27 :                 wb_queue_work(wb, work);
    1079          27 :                 ret = 0;
    1080             :         } else {
    1081             :                 ret = -ENOMEM;
    1082             :         }
    1083             : 
    1084          27 :         wb_put(wb);
    1085          30 : out_css_put:
    1086          30 :         css_put(memcg_css);
    1087          30 : out_bdi_put:
    1088          30 :         bdi_put(bdi);
    1089          30 :         return ret;
    1090             : }
    1091             : 
    1092             : /**
    1093             :  * cgroup_writeback_umount - flush inode wb switches for umount
    1094             :  *
    1095             :  * This function is called when a super_block is about to be destroyed and
    1096             :  * flushes in-flight inode wb switches.  An inode wb switch goes through
    1097             :  * RCU and then workqueue, so the two need to be flushed in order to ensure
    1098             :  * that all previously scheduled switches are finished.  As wb switches are
    1099             :  * rare occurrences and synchronize_rcu() can take a while, perform
    1100             :  * flushing iff wb switches are in flight.
    1101             :  */
    1102      124519 : void cgroup_writeback_umount(void)
    1103             : {
    1104             :         /*
    1105             :          * SB_ACTIVE should be reliably cleared before checking
    1106             :          * isw_nr_in_flight, see generic_shutdown_super().
    1107             :          */
    1108      124519 :         smp_mb();
    1109             : 
    1110      124589 :         if (atomic_read(&isw_nr_in_flight)) {
    1111             :                 /*
    1112             :                  * Use rcu_barrier() to wait for all pending callbacks to
    1113             :                  * ensure that all in-flight wb switches are in the workqueue.
    1114             :                  */
    1115         317 :                 rcu_barrier();
    1116         317 :                 flush_workqueue(isw_wq);
    1117             :         }
    1118      124589 : }
    1119             : 
    1120           0 : static int __init cgroup_writeback_init(void)
    1121             : {
    1122           0 :         isw_wq = alloc_workqueue("inode_switch_wbs", 0, 0);
    1123           0 :         if (!isw_wq)
    1124           0 :                 return -ENOMEM;
    1125             :         return 0;
    1126             : }
    1127             : fs_initcall(cgroup_writeback_init);
    1128             : 
    1129             : #else   /* CONFIG_CGROUP_WRITEBACK */
    1130             : 
    1131             : static void bdi_down_write_wb_switch_rwsem(struct backing_dev_info *bdi) { }
    1132             : static void bdi_up_write_wb_switch_rwsem(struct backing_dev_info *bdi) { }
    1133             : 
    1134             : static void inode_cgwb_move_to_attached(struct inode *inode,
    1135             :                                         struct bdi_writeback *wb)
    1136             : {
    1137             :         assert_spin_locked(&wb->list_lock);
    1138             :         assert_spin_locked(&inode->i_lock);
    1139             :         WARN_ON_ONCE(inode->i_state & I_FREEING);
    1140             : 
    1141             :         inode->i_state &= ~I_SYNC_QUEUED;
    1142             :         list_del_init(&inode->i_io_list);
    1143             :         wb_io_lists_depopulated(wb);
    1144             : }
    1145             : 
    1146             : static struct bdi_writeback *
    1147             : locked_inode_to_wb_and_lock_list(struct inode *inode)
    1148             :         __releases(&inode->i_lock)
    1149             :         __acquires(&wb->list_lock)
    1150             : {
    1151             :         struct bdi_writeback *wb = inode_to_wb(inode);
    1152             : 
    1153             :         spin_unlock(&inode->i_lock);
    1154             :         spin_lock(&wb->list_lock);
    1155             :         return wb;
    1156             : }
    1157             : 
    1158             : static struct bdi_writeback *inode_to_wb_and_lock_list(struct inode *inode)
    1159             :         __acquires(&wb->list_lock)
    1160             : {
    1161             :         struct bdi_writeback *wb = inode_to_wb(inode);
    1162             : 
    1163             :         spin_lock(&wb->list_lock);
    1164             :         return wb;
    1165             : }
    1166             : 
    1167             : static long wb_split_bdi_pages(struct bdi_writeback *wb, long nr_pages)
    1168             : {
    1169             :         return nr_pages;
    1170             : }
    1171             : 
    1172             : static void bdi_split_work_to_wbs(struct backing_dev_info *bdi,
    1173             :                                   struct wb_writeback_work *base_work,
    1174             :                                   bool skip_if_busy)
    1175             : {
    1176             :         might_sleep();
    1177             : 
    1178             :         if (!skip_if_busy || !writeback_in_progress(&bdi->wb)) {
    1179             :                 base_work->auto_free = 0;
    1180             :                 wb_queue_work(&bdi->wb, base_work);
    1181             :         }
    1182             : }
    1183             : 
    1184             : #endif  /* CONFIG_CGROUP_WRITEBACK */
    1185             : 
    1186             : /*
    1187             :  * Add in the number of potentially dirty inodes, because each inode
    1188             :  * write can dirty pagecache in the underlying blockdev.
    1189             :  */
    1190             : static unsigned long get_nr_dirty_pages(void)
    1191             : {
    1192     6164433 :         return global_node_page_state(NR_FILE_DIRTY) +
    1193     3083257 :                 get_nr_dirty_inodes();
    1194             : }
    1195             : 
    1196     8732437 : static void wb_start_writeback(struct bdi_writeback *wb, enum wb_reason reason)
    1197             : {
    1198    17464874 :         if (!wb_has_dirty_io(wb))
    1199             :                 return;
    1200             : 
    1201             :         /*
    1202             :          * All callers of this function want to start writeback of all
    1203             :          * dirty pages. Places like vmscan can call this at a very
    1204             :          * high frequency, causing pointless allocations of tons of
    1205             :          * work items and keeping the flusher threads busy retrieving
    1206             :          * that work. Ensure that we only allow one of them pending and
    1207             :          * inflight at the time.
    1208             :          */
    1209     4484032 :         if (test_bit(WB_start_all, &wb->state) ||
    1210             :             test_and_set_bit(WB_start_all, &wb->state))
    1211      127406 :                 return;
    1212             : 
    1213     2178296 :         wb->start_all_reason = reason;
    1214     2178296 :         wb_wakeup(wb);
    1215             : }
    1216             : 
    1217             : /**
    1218             :  * wb_start_background_writeback - start background writeback
    1219             :  * @wb: bdi_writback to write from
    1220             :  *
    1221             :  * Description:
    1222             :  *   This makes sure WB_SYNC_NONE background writeback happens. When
    1223             :  *   this function returns, it is only guaranteed that for given wb
    1224             :  *   some IO is happening if we are over background dirty threshold.
    1225             :  *   Caller need not hold sb s_umount semaphore.
    1226             :  */
    1227         631 : void wb_start_background_writeback(struct bdi_writeback *wb)
    1228             : {
    1229             :         /*
    1230             :          * We just wake up the flusher thread. It will perform background
    1231             :          * writeback as soon as there is no other work to do.
    1232             :          */
    1233         631 :         trace_writeback_wake_background(wb);
    1234         631 :         wb_wakeup(wb);
    1235         631 : }
    1236             : 
    1237             : /*
    1238             :  * Remove the inode from the writeback list it is on.
    1239             :  */
    1240    31940266 : void inode_io_list_del(struct inode *inode)
    1241             : {
    1242    31940266 :         struct bdi_writeback *wb;
    1243             : 
    1244    31940266 :         wb = inode_to_wb_and_lock_list(inode);
    1245    31951728 :         spin_lock(&inode->i_lock);
    1246             : 
    1247    31951728 :         inode->i_state &= ~I_SYNC_QUEUED;
    1248    31951728 :         list_del_init(&inode->i_io_list);
    1249    31951728 :         wb_io_lists_depopulated(wb);
    1250             : 
    1251    31951728 :         spin_unlock(&inode->i_lock);
    1252    31951728 :         spin_unlock(&wb->list_lock);
    1253    31951727 : }
    1254             : EXPORT_SYMBOL(inode_io_list_del);
    1255             : 
    1256             : /*
    1257             :  * mark an inode as under writeback on the sb
    1258             :  */
    1259    58026077 : void sb_mark_inode_writeback(struct inode *inode)
    1260             : {
    1261    58026077 :         struct super_block *sb = inode->i_sb;
    1262    58026077 :         unsigned long flags;
    1263             : 
    1264    58026077 :         if (list_empty(&inode->i_wb_list)) {
    1265    58026111 :                 spin_lock_irqsave(&sb->s_inode_wblist_lock, flags);
    1266    58026626 :                 if (list_empty(&inode->i_wb_list)) {
    1267    58026620 :                         list_add_tail(&inode->i_wb_list, &sb->s_inodes_wb);
    1268    58026575 :                         trace_sb_mark_inode_writeback(inode);
    1269             :                 }
    1270    58026499 :                 spin_unlock_irqrestore(&sb->s_inode_wblist_lock, flags);
    1271             :         }
    1272    58026555 : }
    1273             : 
    1274             : /*
    1275             :  * clear an inode as under writeback on the sb
    1276             :  */
    1277    58026547 : void sb_clear_inode_writeback(struct inode *inode)
    1278             : {
    1279    58026547 :         struct super_block *sb = inode->i_sb;
    1280    58026547 :         unsigned long flags;
    1281             : 
    1282    58026547 :         if (!list_empty(&inode->i_wb_list)) {
    1283    58026547 :                 spin_lock_irqsave(&sb->s_inode_wblist_lock, flags);
    1284    58026650 :                 if (!list_empty(&inode->i_wb_list)) {
    1285    58026650 :                         list_del_init(&inode->i_wb_list);
    1286    58026647 :                         trace_sb_clear_inode_writeback(inode);
    1287             :                 }
    1288    58026645 :                 spin_unlock_irqrestore(&sb->s_inode_wblist_lock, flags);
    1289             :         }
    1290    58026644 : }
    1291             : 
    1292             : /*
    1293             :  * Redirty an inode: set its when-it-was dirtied timestamp and move it to the
    1294             :  * furthest end of its superblock's dirty-inode list.
    1295             :  *
    1296             :  * Before stamping the inode's ->dirtied_when, we check to see whether it is
    1297             :  * already the most-recently-dirtied inode on the b_dirty list.  If that is
    1298             :  * the case then the inode must have been redirtied while it was being written
    1299             :  * out and we don't reset its dirtied_when.
    1300             :  */
    1301    12648364 : static void redirty_tail_locked(struct inode *inode, struct bdi_writeback *wb)
    1302             : {
    1303    12648364 :         assert_spin_locked(&inode->i_lock);
    1304             : 
    1305    12648364 :         inode->i_state &= ~I_SYNC_QUEUED;
    1306             :         /*
    1307             :          * When the inode is being freed just don't bother with dirty list
    1308             :          * tracking. Flush worker will ignore this inode anyway and it will
    1309             :          * trigger assertions in inode_io_list_move_locked().
    1310             :          */
    1311    12648364 :         if (inode->i_state & I_FREEING) {
    1312          34 :                 list_del_init(&inode->i_io_list);
    1313          34 :                 wb_io_lists_depopulated(wb);
    1314          34 :                 return;
    1315             :         }
    1316    12648330 :         if (!list_empty(&wb->b_dirty)) {
    1317    11498501 :                 struct inode *tail;
    1318             : 
    1319    11498501 :                 tail = wb_inode(wb->b_dirty.next);
    1320    11498501 :                 if (time_before(inode->dirtied_when, tail->dirtied_when))
    1321      327351 :                         inode->dirtied_when = jiffies;
    1322             :         }
    1323    12648330 :         inode_io_list_move_locked(inode, wb, &wb->b_dirty);
    1324             : }
    1325             : 
    1326    11281548 : static void redirty_tail(struct inode *inode, struct bdi_writeback *wb)
    1327             : {
    1328    11281548 :         spin_lock(&inode->i_lock);
    1329    11281550 :         redirty_tail_locked(inode, wb);
    1330    11281544 :         spin_unlock(&inode->i_lock);
    1331    11281550 : }
    1332             : 
    1333             : /*
    1334             :  * requeue inode for re-scanning after bdi->b_io list is exhausted.
    1335             :  */
    1336             : static void requeue_io(struct inode *inode, struct bdi_writeback *wb)
    1337             : {
    1338       10789 :         inode_io_list_move_locked(inode, wb, &wb->b_more_io);
    1339       10635 : }
    1340             : 
    1341    42187133 : static void inode_sync_complete(struct inode *inode)
    1342             : {
    1343    42187133 :         inode->i_state &= ~I_SYNC;
    1344             :         /* If inode is clean an unused, put it into LRU now... */
    1345    42187133 :         inode_add_lru(inode);
    1346             :         /* Waiters must see I_SYNC cleared before being woken up */
    1347    42187069 :         smp_mb();
    1348    42187188 :         wake_up_bit(&inode->i_state, __I_SYNC);
    1349    42187166 : }
    1350             : 
    1351             : static bool inode_dirtied_after(struct inode *inode, unsigned long t)
    1352             : {
    1353   108361068 :         bool ret = time_after(inode->dirtied_when, t);
    1354             : #ifndef CONFIG_64BIT
    1355             :         /*
    1356             :          * For inodes being constantly redirtied, dirtied_when can get stuck.
    1357             :          * It _appears_ to be in the future, but is actually in distant past.
    1358             :          * This test is necessary to prevent such wrapped-around relative times
    1359             :          * from permanently stopping the whole bdi writeback.
    1360             :          */
    1361             :         ret = ret && time_before_eq(inode->dirtied_when, jiffies);
    1362             : #endif
    1363    54180534 :         return ret;
    1364             : }
    1365             : 
    1366             : /*
    1367             :  * Move expired (dirtied before dirtied_before) dirty inodes from
    1368             :  * @delaying_queue to @dispatch_queue.
    1369             :  */
    1370    19543475 : static int move_expired_inodes(struct list_head *delaying_queue,
    1371             :                                struct list_head *dispatch_queue,
    1372             :                                unsigned long dirtied_before)
    1373             : {
    1374    19543475 :         LIST_HEAD(tmp);
    1375    19543475 :         struct list_head *pos, *node;
    1376    19543475 :         struct super_block *sb = NULL;
    1377    19543475 :         struct inode *inode;
    1378    19543475 :         int do_sb_sort = 0;
    1379    19543475 :         int moved = 0;
    1380             : 
    1381    73327038 :         while (!list_empty(delaying_queue)) {
    1382    54180534 :                 inode = wb_inode(delaying_queue->prev);
    1383   107963238 :                 if (inode_dirtied_after(inode, dirtied_before))
    1384             :                         break;
    1385    53782828 :                 spin_lock(&inode->i_lock);
    1386    53783428 :                 list_move(&inode->i_io_list, &tmp);
    1387    53782993 :                 moved++;
    1388    53782993 :                 inode->i_state |= I_SYNC_QUEUED;
    1389    53782993 :                 spin_unlock(&inode->i_lock);
    1390    53783563 :                 if (sb_is_blkdev_sb(inode->i_sb))
    1391      104927 :                         continue;
    1392    53678636 :                 if (sb && sb != inode->i_sb)
    1393         146 :                         do_sb_sort = 1;
    1394             :                 sb = inode->i_sb;
    1395             :         }
    1396             : 
    1397             :         /* just one sb in list, splice to dispatch_queue and we're done */
    1398    19544210 :         if (!do_sb_sort) {
    1399    19544064 :                 list_splice(&tmp, dispatch_queue);
    1400    19544064 :                 goto out;
    1401             :         }
    1402             : 
    1403             :         /*
    1404             :          * Although inode's i_io_list is moved from 'tmp' to 'dispatch_queue',
    1405             :          * we don't take inode->i_lock here because it is just a pointless overhead.
    1406             :          * Inode is already marked as I_SYNC_QUEUED so writeback list handling is
    1407             :          * fully under our control.
    1408             :          */
    1409         444 :         while (!list_empty(&tmp)) {
    1410         298 :                 sb = wb_inode(tmp.prev)->i_sb;
    1411       17325 :                 list_for_each_prev_safe(pos, node, &tmp) {
    1412       17027 :                         inode = wb_inode(pos);
    1413       17027 :                         if (inode->i_sb == sb)
    1414        8579 :                                 list_move(&inode->i_io_list, dispatch_queue);
    1415             :                 }
    1416             :         }
    1417         146 : out:
    1418    19544210 :         return moved;
    1419             : }
    1420             : 
    1421             : /*
    1422             :  * Queue all expired dirty inodes for io, eldest first.
    1423             :  * Before
    1424             :  *         newly dirtied     b_dirty    b_io    b_more_io
    1425             :  *         =============>    gf         edc     BA
    1426             :  * After
    1427             :  *         newly dirtied     b_dirty    b_io    b_more_io
    1428             :  *         =============>    g          fBAedc
    1429             :  *                                           |
    1430             :  *                                           +--> dequeue for IO
    1431             :  */
    1432     9771733 : static void queue_io(struct bdi_writeback *wb, struct wb_writeback_work *work,
    1433             :                      unsigned long dirtied_before)
    1434             : {
    1435     9771733 :         int moved;
    1436     9771733 :         unsigned long time_expire_jif = dirtied_before;
    1437             : 
    1438     9771733 :         assert_spin_locked(&wb->list_lock);
    1439     9771733 :         list_splice_init(&wb->b_more_io, &wb->b_io);
    1440     9771733 :         moved = move_expired_inodes(&wb->b_dirty, &wb->b_io, dirtied_before);
    1441     9772152 :         if (!work->for_sync)
    1442     5761867 :                 time_expire_jif = jiffies - dirtytime_expire_interval * HZ;
    1443     9772152 :         moved += move_expired_inodes(&wb->b_dirty_time, &wb->b_io,
    1444             :                                      time_expire_jif);
    1445     9772029 :         if (moved)
    1446     4054733 :                 wb_io_lists_populated(wb);
    1447     9771970 :         trace_writeback_queue_io(wb, work, dirtied_before, moved);
    1448     9771927 : }
    1449             : 
    1450     1049148 : static int write_inode(struct inode *inode, struct writeback_control *wbc)
    1451             : {
    1452     1049148 :         int ret;
    1453             : 
    1454     1049148 :         if (inode->i_sb->s_op->write_inode && !is_bad_inode(inode)) {
    1455     1016010 :                 trace_writeback_write_inode_start(inode, wbc);
    1456     1016010 :                 ret = inode->i_sb->s_op->write_inode(inode, wbc);
    1457     1016010 :                 trace_writeback_write_inode(inode, wbc);
    1458     1016010 :                 return ret;
    1459             :         }
    1460             :         return 0;
    1461             : }
    1462             : 
    1463             : /*
    1464             :  * Wait for writeback on an inode to complete. Called with i_lock held.
    1465             :  * Caller must make sure inode cannot go away when we drop i_lock.
    1466             :  */
    1467  1321001874 : static void __inode_wait_for_writeback(struct inode *inode)
    1468             :         __releases(inode->i_lock)
    1469             :         __acquires(inode->i_lock)
    1470             : {
    1471  1321001874 :         DEFINE_WAIT_BIT(wq, &inode->i_state, __I_SYNC);
    1472  1321001874 :         wait_queue_head_t *wqh;
    1473             : 
    1474  1321001874 :         wqh = bit_waitqueue(&inode->i_state, __I_SYNC);
    1475  1320869005 :         while (inode->i_state & I_SYNC) {
    1476         370 :                 spin_unlock(&inode->i_lock);
    1477         370 :                 __wait_on_bit(wqh, &wq, bit_wait,
    1478             :                               TASK_UNINTERRUPTIBLE);
    1479         370 :                 spin_lock(&inode->i_lock);
    1480             :         }
    1481  1321047154 : }
    1482             : 
    1483             : /*
    1484             :  * Wait for writeback on an inode to complete. Caller must have inode pinned.
    1485             :  */
    1486  1321744525 : void inode_wait_for_writeback(struct inode *inode)
    1487             : {
    1488  1321744525 :         spin_lock(&inode->i_lock);
    1489  1321807280 :         __inode_wait_for_writeback(inode);
    1490  1321310930 :         spin_unlock(&inode->i_lock);
    1491  1321234484 : }
    1492             : 
    1493             : /*
    1494             :  * Sleep until I_SYNC is cleared. This function must be called with i_lock
    1495             :  * held and drops it. It is aimed for callers not holding any inode reference
    1496             :  * so once i_lock is dropped, inode can go away.
    1497             :  */
    1498         715 : static void inode_sleep_on_writeback(struct inode *inode)
    1499             :         __releases(inode->i_lock)
    1500             : {
    1501         715 :         DEFINE_WAIT(wait);
    1502         715 :         wait_queue_head_t *wqh = bit_waitqueue(&inode->i_state, __I_SYNC);
    1503         715 :         int sleep;
    1504             : 
    1505         715 :         prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE);
    1506         715 :         sleep = inode->i_state & I_SYNC;
    1507         715 :         spin_unlock(&inode->i_lock);
    1508         715 :         if (sleep)
    1509         154 :                 schedule();
    1510         715 :         finish_wait(wqh, &wait);
    1511         715 : }
    1512             : 
    1513             : /*
    1514             :  * Find proper writeback list for the inode depending on its current state and
    1515             :  * possibly also change of its state while we were doing writeback.  Here we
    1516             :  * handle things such as livelock prevention or fairness of writeback among
    1517             :  * inodes. This function can be called only by flusher thread - noone else
    1518             :  * processes all inodes in writeback lists and requeueing inodes behind flusher
    1519             :  * thread's back can have unexpected consequences.
    1520             :  */
    1521    42077204 : static void requeue_inode(struct inode *inode, struct bdi_writeback *wb,
    1522             :                           struct writeback_control *wbc)
    1523             : {
    1524    42077204 :         if (inode->i_state & I_FREEING)
    1525             :                 return;
    1526             : 
    1527             :         /*
    1528             :          * Sync livelock prevention. Each inode is tagged and synced in one
    1529             :          * shot. If still dirty, it will be redirty_tail()'ed below.  Update
    1530             :          * the dirty time to prevent enqueue and sync it again.
    1531             :          */
    1532    42076830 :         if ((inode->i_state & I_DIRTY) &&
    1533     1375754 :             (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages))
    1534      549684 :                 inode->dirtied_when = jiffies;
    1535             : 
    1536    42076830 :         if (wbc->pages_skipped) {
    1537             :                 /*
    1538             :                  * writeback is not making progress due to locked
    1539             :                  * buffers. Skip this inode for now.
    1540             :                  */
    1541          19 :                 redirty_tail_locked(inode, wb);
    1542          19 :                 return;
    1543             :         }
    1544             : 
    1545    42076811 :         if (mapping_tagged(inode->i_mapping, PAGECACHE_TAG_DIRTY)) {
    1546             :                 /*
    1547             :                  * We didn't write back all the pages.  nfs_writepages()
    1548             :                  * sometimes bales out without doing anything.
    1549             :                  */
    1550     1374119 :                 if (wbc->nr_to_write <= 0) {
    1551             :                         /* Slice used up. Queue for next turn. */
    1552       10635 :                         requeue_io(inode, wb);
    1553             :                 } else {
    1554             :                         /*
    1555             :                          * Writeback blocked by something other than
    1556             :                          * congestion. Delay the inode for some time to
    1557             :                          * avoid spinning on the CPU (100% iowait)
    1558             :                          * retrying writeback of the dirty page/inode
    1559             :                          * that cannot be performed immediately.
    1560             :                          */
    1561     1363484 :                         redirty_tail_locked(inode, wb);
    1562             :                 }
    1563    40702660 :         } else if (inode->i_state & I_DIRTY) {
    1564             :                 /*
    1565             :                  * Filesystems can dirty the inode during writeback operations,
    1566             :                  * such as delayed allocation during submission or metadata
    1567             :                  * updates after data IO completion.
    1568             :                  */
    1569        2664 :                 redirty_tail_locked(inode, wb);
    1570    40699996 :         } else if (inode->i_state & I_DIRTY_TIME) {
    1571           1 :                 inode->dirtied_when = jiffies;
    1572           1 :                 inode_io_list_move_locked(inode, wb, &wb->b_dirty_time);
    1573           1 :                 inode->i_state &= ~I_SYNC_QUEUED;
    1574             :         } else {
    1575             :                 /* The inode is clean. Remove from writeback lists. */
    1576    40699995 :                 inode_cgwb_move_to_attached(inode, wb);
    1577             :         }
    1578             : }
    1579             : 
    1580             : /*
    1581             :  * Write out an inode and its dirty pages (or some of its dirty pages, depending
    1582             :  * on @wbc->nr_to_write), and clear the relevant dirty flags from i_state.
    1583             :  *
    1584             :  * This doesn't remove the inode from the writeback list it is on, except
    1585             :  * potentially to move it from b_dirty_time to b_dirty due to timestamp
    1586             :  * expiration.  The caller is otherwise responsible for writeback list handling.
    1587             :  *
    1588             :  * The caller is also responsible for setting the I_SYNC flag beforehand and
    1589             :  * calling inode_sync_complete() to clear it afterwards.
    1590             :  */
    1591             : static int
    1592    42187056 : __writeback_single_inode(struct inode *inode, struct writeback_control *wbc)
    1593             : {
    1594    42187056 :         struct address_space *mapping = inode->i_mapping;
    1595    42187056 :         long nr_to_write = wbc->nr_to_write;
    1596    42187056 :         unsigned dirty;
    1597    42187056 :         int ret;
    1598             : 
    1599    42187056 :         WARN_ON(!(inode->i_state & I_SYNC));
    1600             : 
    1601    42187056 :         trace_writeback_single_inode_start(inode, wbc, nr_to_write);
    1602             : 
    1603    42186913 :         ret = do_writepages(mapping, wbc);
    1604             : 
    1605             :         /*
    1606             :          * Make sure to wait on the data before writing out the metadata.
    1607             :          * This is important for filesystems that modify metadata on data
    1608             :          * I/O completion. We don't do it for sync(2) writeback because it has a
    1609             :          * separate, external IO completion path and ->sync_fs for guaranteeing
    1610             :          * inode metadata is written back correctly.
    1611             :          */
    1612    42187180 :         if (wbc->sync_mode == WB_SYNC_ALL && !wbc->for_sync) {
    1613      109971 :                 int err = filemap_fdatawait(mapping);
    1614      109971 :                 if (ret == 0)
    1615      109956 :                         ret = err;
    1616             :         }
    1617             : 
    1618             :         /*
    1619             :          * If the inode has dirty timestamps and we need to write them, call
    1620             :          * mark_inode_dirty_sync() to notify the filesystem about it and to
    1621             :          * change I_DIRTY_TIME into I_DIRTY_SYNC.
    1622             :          */
    1623    42187180 :         if ((inode->i_state & I_DIRTY_TIME) &&
    1624          70 :             (wbc->sync_mode == WB_SYNC_ALL ||
    1625          45 :              time_after(jiffies, inode->dirtied_time_when +
    1626             :                         dirtytime_expire_interval * HZ))) {
    1627          69 :                 trace_writeback_lazytime(inode);
    1628          69 :                 mark_inode_dirty_sync(inode);
    1629             :         }
    1630             : 
    1631             :         /*
    1632             :          * Get and clear the dirty flags from i_state.  This needs to be done
    1633             :          * after calling writepages because some filesystems may redirty the
    1634             :          * inode during writepages due to delalloc.  It also needs to be done
    1635             :          * after handling timestamp expiration, as that may dirty the inode too.
    1636             :          */
    1637    42187180 :         spin_lock(&inode->i_lock);
    1638    42187206 :         dirty = inode->i_state & I_DIRTY;
    1639    42187206 :         inode->i_state &= ~dirty;
    1640             : 
    1641             :         /*
    1642             :          * Paired with smp_mb() in __mark_inode_dirty().  This allows
    1643             :          * __mark_inode_dirty() to test i_state without grabbing i_lock -
    1644             :          * either they see the I_DIRTY bits cleared or we see the dirtied
    1645             :          * inode.
    1646             :          *
    1647             :          * I_DIRTY_PAGES is always cleared together above even if @mapping
    1648             :          * still has dirty pages.  The flag is reinstated after smp_mb() if
    1649             :          * necessary.  This guarantees that either __mark_inode_dirty()
    1650             :          * sees clear I_DIRTY_PAGES or we see PAGECACHE_TAG_DIRTY.
    1651             :          */
    1652    42187206 :         smp_mb();
    1653             : 
    1654    42187219 :         if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY))
    1655     1372000 :                 inode->i_state |= I_DIRTY_PAGES;
    1656    40815206 :         else if (unlikely(inode->i_state & I_PINNING_FSCACHE_WB)) {
    1657           0 :                 if (!(inode->i_state & I_DIRTY_PAGES)) {
    1658           0 :                         inode->i_state &= ~I_PINNING_FSCACHE_WB;
    1659           0 :                         wbc->unpinned_fscache_wb = true;
    1660           0 :                         dirty |= I_PINNING_FSCACHE_WB; /* Cause write_inode */
    1661             :                 }
    1662             :         }
    1663             : 
    1664    42187206 :         spin_unlock(&inode->i_lock);
    1665             : 
    1666             :         /* Don't write the inode if only I_DIRTY_PAGES was set */
    1667    42187192 :         if (dirty & ~I_DIRTY_PAGES) {
    1668     1049148 :                 int err = write_inode(inode, wbc);
    1669     1049148 :                 if (ret == 0)
    1670     1037534 :                         ret = err;
    1671             :         }
    1672    42187192 :         wbc->unpinned_fscache_wb = false;
    1673    42187192 :         trace_writeback_single_inode(inode, wbc, nr_to_write);
    1674    42187172 :         return ret;
    1675             : }
    1676             : 
    1677             : /*
    1678             :  * Write out an inode's dirty data and metadata on-demand, i.e. separately from
    1679             :  * the regular batched writeback done by the flusher threads in
    1680             :  * writeback_sb_inodes().  @wbc controls various aspects of the write, such as
    1681             :  * whether it is a data-integrity sync (%WB_SYNC_ALL) or not (%WB_SYNC_NONE).
    1682             :  *
    1683             :  * To prevent the inode from going away, either the caller must have a reference
    1684             :  * to the inode, or the inode must have I_WILL_FREE or I_FREEING set.
    1685             :  */
    1686   384675118 : static int writeback_single_inode(struct inode *inode,
    1687             :                                   struct writeback_control *wbc)
    1688             : {
    1689   384675118 :         struct bdi_writeback *wb;
    1690   384675118 :         int ret = 0;
    1691             : 
    1692   384675118 :         spin_lock(&inode->i_lock);
    1693   384687518 :         if (!atomic_read(&inode->i_count))
    1694   384597405 :                 WARN_ON(!(inode->i_state & (I_WILL_FREE|I_FREEING)));
    1695             :         else
    1696       91327 :                 WARN_ON(inode->i_state & I_WILL_FREE);
    1697             : 
    1698   384687518 :         if (inode->i_state & I_SYNC) {
    1699             :                 /*
    1700             :                  * Writeback is already running on the inode.  For WB_SYNC_NONE,
    1701             :                  * that's enough and we can just return.  For WB_SYNC_ALL, we
    1702             :                  * must wait for the existing writeback to complete, then do
    1703             :                  * writeback again if there's anything left.
    1704             :                  */
    1705           0 :                 if (wbc->sync_mode != WB_SYNC_ALL)
    1706           0 :                         goto out;
    1707           0 :                 __inode_wait_for_writeback(inode);
    1708             :         }
    1709   384687518 :         WARN_ON(inode->i_state & I_SYNC);
    1710             :         /*
    1711             :          * If the inode is already fully clean, then there's nothing to do.
    1712             :          *
    1713             :          * For data-integrity syncs we also need to check whether any pages are
    1714             :          * still under writeback, e.g. due to prior WB_SYNC_NONE writeback.  If
    1715             :          * there are any such pages, we'll need to wait for them.
    1716             :          */
    1717   384687518 :         if (!(inode->i_state & I_DIRTY_ALL) &&
    1718   769102514 :             (wbc->sync_mode != WB_SYNC_ALL ||
    1719   384574436 :              !mapping_tagged(inode->i_mapping, PAGECACHE_TAG_WRITEBACK)))
    1720   384532181 :                 goto out;
    1721      105954 :         inode->i_state |= I_SYNC;
    1722      105954 :         wbc_attach_and_unlock_inode(wbc, inode);
    1723             : 
    1724      109971 :         ret = __writeback_single_inode(inode, wbc);
    1725             : 
    1726      109971 :         wbc_detach_inode(wbc);
    1727             : 
    1728      109971 :         wb = inode_to_wb_and_lock_list(inode);
    1729      109971 :         spin_lock(&inode->i_lock);
    1730             :         /*
    1731             :          * If the inode is freeing, its i_io_list shoudn't be updated
    1732             :          * as it can be finally deleted at this moment.
    1733             :          */
    1734      109971 :         if (!(inode->i_state & I_FREEING)) {
    1735             :                 /*
    1736             :                  * If the inode is now fully clean, then it can be safely
    1737             :                  * removed from its writeback list (if any). Otherwise the
    1738             :                  * flusher threads are responsible for the writeback lists.
    1739             :                  */
    1740      109971 :                 if (!(inode->i_state & I_DIRTY_ALL))
    1741      109970 :                         inode_cgwb_move_to_attached(inode, wb);
    1742           1 :                 else if (!(inode->i_state & I_SYNC_QUEUED)) {
    1743           1 :                         if ((inode->i_state & I_DIRTY))
    1744           1 :                                 redirty_tail_locked(inode, wb);
    1745           0 :                         else if (inode->i_state & I_DIRTY_TIME) {
    1746           0 :                                 inode->dirtied_when = jiffies;
    1747           0 :                                 inode_io_list_move_locked(inode,
    1748             :                                                           wb,
    1749             :                                                           &wb->b_dirty_time);
    1750             :                         }
    1751             :                 }
    1752             :         }
    1753             : 
    1754      109971 :         spin_unlock(&wb->list_lock);
    1755      109971 :         inode_sync_complete(inode);
    1756   384642152 : out:
    1757   384642152 :         spin_unlock(&inode->i_lock);
    1758   384685899 :         return ret;
    1759             : }
    1760             : 
    1761    42077231 : static long writeback_chunk_size(struct bdi_writeback *wb,
    1762             :                                  struct wb_writeback_work *work)
    1763             : {
    1764    42077231 :         long pages;
    1765             : 
    1766             :         /*
    1767             :          * WB_SYNC_ALL mode does livelock avoidance by syncing dirty
    1768             :          * inodes/pages in one big loop. Setting wbc.nr_to_write=LONG_MAX
    1769             :          * here avoids calling into writeback_inodes_wb() more than once.
    1770             :          *
    1771             :          * The intended call sequence for WB_SYNC_ALL writeback is:
    1772             :          *
    1773             :          *      wb_writeback()
    1774             :          *          writeback_sb_inodes()       <== called only once
    1775             :          *              write_cache_pages()     <== called once for each inode
    1776             :          *                   (quickly) tag currently dirty pages
    1777             :          *                   (maybe slowly) sync all tagged pages
    1778             :          */
    1779    42077231 :         if (work->sync_mode == WB_SYNC_ALL || work->tagged_writepages)
    1780             :                 pages = LONG_MAX;
    1781             :         else {
    1782    34761644 :                 pages = min(wb->avg_write_bandwidth / 2,
    1783             :                             global_wb_domain.dirty_limit / DIRTY_SCOPE);
    1784    34761644 :                 pages = min(pages, work->nr_pages);
    1785    34761644 :                 pages = round_down(pages + MIN_WRITEBACK_PAGES,
    1786             :                                    MIN_WRITEBACK_PAGES);
    1787             :         }
    1788             : 
    1789    42077231 :         return pages;
    1790             : }
    1791             : 
    1792             : /*
    1793             :  * Write a portion of b_io inodes which belong to @sb.
    1794             :  *
    1795             :  * Return the number of pages and/or inodes written.
    1796             :  *
    1797             :  * NOTE! This is called with wb->list_lock held, and will
    1798             :  * unlock and relock that for each inode it ends up doing
    1799             :  * IO for.
    1800             :  */
    1801     7409072 : static long writeback_sb_inodes(struct super_block *sb,
    1802             :                                 struct bdi_writeback *wb,
    1803             :                                 struct wb_writeback_work *work)
    1804             : {
    1805     7409072 :         struct writeback_control wbc = {
    1806     7409072 :                 .sync_mode              = work->sync_mode,
    1807     7409072 :                 .tagged_writepages      = work->tagged_writepages,
    1808     7409072 :                 .for_kupdate            = work->for_kupdate,
    1809     7409072 :                 .for_background         = work->for_background,
    1810     7409072 :                 .for_sync               = work->for_sync,
    1811     7409072 :                 .range_cyclic           = work->range_cyclic,
    1812             :                 .range_start            = 0,
    1813             :                 .range_end              = LLONG_MAX,
    1814             :         };
    1815     7409072 :         unsigned long start_time = jiffies;
    1816     7409072 :         long write_chunk;
    1817     7409072 :         long total_wrote = 0;  /* count both pages and inodes */
    1818             : 
    1819    59499744 :         while (!list_empty(&wb->b_io)) {
    1820    52142694 :                 struct inode *inode = wb_inode(wb->b_io.prev);
    1821    52142694 :                 struct bdi_writeback *tmp_wb;
    1822    52142694 :                 long wrote;
    1823             : 
    1824    52142694 :                 if (inode->i_sb != sb) {
    1825    10064880 :                         if (work->sb) {
    1826             :                                 /*
    1827             :                                  * We only want to write back data for this
    1828             :                                  * superblock, move all inodes not belonging
    1829             :                                  * to it back onto the dirty list.
    1830             :                                  */
    1831    10048191 :                                 redirty_tail(inode, wb);
    1832    10048194 :                                 continue;
    1833             :                         }
    1834             : 
    1835             :                         /*
    1836             :                          * The inode belongs to a different superblock.
    1837             :                          * Bounce back to the caller to unpin this and
    1838             :                          * pin the next superblock.
    1839             :                          */
    1840             :                         break;
    1841             :                 }
    1842             : 
    1843             :                 /*
    1844             :                  * Don't bother with new inodes or inodes being freed, first
    1845             :                  * kind does not need periodic writeout yet, and for the latter
    1846             :                  * kind writeout is handled by the freer.
    1847             :                  */
    1848    42077814 :                 spin_lock(&inode->i_lock);
    1849    42077927 :                 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
    1850         646 :                         redirty_tail_locked(inode, wb);
    1851         646 :                         spin_unlock(&inode->i_lock);
    1852         646 :                         continue;
    1853             :                 }
    1854    42077281 :                 if ((inode->i_state & I_SYNC) && wbc.sync_mode != WB_SYNC_ALL) {
    1855             :                         /*
    1856             :                          * If this inode is locked for writeback and we are not
    1857             :                          * doing writeback-for-data-integrity, move it to
    1858             :                          * b_more_io so that writeback can proceed with the
    1859             :                          * other inodes on s_io.
    1860             :                          *
    1861             :                          * We'll have another go at writing back this inode
    1862             :                          * when we completed a full scan of b_io.
    1863             :                          */
    1864         154 :                         requeue_io(inode, wb);
    1865         154 :                         spin_unlock(&inode->i_lock);
    1866         154 :                         trace_writeback_sb_inodes_requeue(inode);
    1867         154 :                         continue;
    1868             :                 }
    1869    42077127 :                 spin_unlock(&wb->list_lock);
    1870             : 
    1871             :                 /*
    1872             :                  * We already requeued the inode if it had I_SYNC set and we
    1873             :                  * are doing WB_SYNC_NONE writeback. So this catches only the
    1874             :                  * WB_SYNC_ALL case.
    1875             :                  */
    1876    42077116 :                 if (inode->i_state & I_SYNC) {
    1877             :                         /* Wait for I_SYNC. This function drops i_lock... */
    1878           0 :                         inode_sleep_on_writeback(inode);
    1879             :                         /* Inode may be gone, start again */
    1880           0 :                         spin_lock(&wb->list_lock);
    1881           0 :                         continue;
    1882             :                 }
    1883    42077116 :                 inode->i_state |= I_SYNC;
    1884    42077116 :                 wbc_attach_and_unlock_inode(&wbc, inode);
    1885             : 
    1886    42077204 :                 write_chunk = writeback_chunk_size(wb, work);
    1887    42077204 :                 wbc.nr_to_write = write_chunk;
    1888    42077204 :                 wbc.pages_skipped = 0;
    1889             : 
    1890             :                 /*
    1891             :                  * We use I_SYNC to pin the inode in memory. While it is set
    1892             :                  * evict_inode() will wait so the inode cannot be freed.
    1893             :                  */
    1894    42077204 :                 __writeback_single_inode(inode, &wbc);
    1895             : 
    1896    42077209 :                 wbc_detach_inode(&wbc);
    1897    42077212 :                 work->nr_pages -= write_chunk - wbc.nr_to_write;
    1898    42077212 :                 wrote = write_chunk - wbc.nr_to_write - wbc.pages_skipped;
    1899    42077212 :                 wrote = wrote < 0 ? 0 : wrote;
    1900    42077212 :                 total_wrote += wrote;
    1901             : 
    1902    42077212 :                 if (need_resched()) {
    1903             :                         /*
    1904             :                          * We're trying to balance between building up a nice
    1905             :                          * long list of IOs to improve our merge rate, and
    1906             :                          * getting those IOs out quickly for anyone throttling
    1907             :                          * in balance_dirty_pages().  cond_resched() doesn't
    1908             :                          * unplug, so get our IOs out the door before we
    1909             :                          * give up the CPU.
    1910             :                          */
    1911        3328 :                         blk_flush_plug(current->plug, false);
    1912        3328 :                         cond_resched();
    1913             :                 }
    1914             : 
    1915             :                 /*
    1916             :                  * Requeue @inode if still dirty.  Be careful as @inode may
    1917             :                  * have been switched to another wb in the meantime.
    1918             :                  */
    1919    42077212 :                 tmp_wb = inode_to_wb_and_lock_list(inode);
    1920    42077232 :                 spin_lock(&inode->i_lock);
    1921    42077246 :                 if (!(inode->i_state & I_DIRTY_ALL))
    1922    40701416 :                         total_wrote++;
    1923    42077246 :                 requeue_inode(inode, tmp_wb, &wbc);
    1924    42077174 :                 inode_sync_complete(inode);
    1925    42077178 :                 spin_unlock(&inode->i_lock);
    1926             : 
    1927    42077205 :                 if (unlikely(tmp_wb != wb)) {
    1928          18 :                         spin_unlock(&tmp_wb->list_lock);
    1929          18 :                         spin_lock(&wb->list_lock);
    1930             :                 }
    1931             : 
    1932             :                 /*
    1933             :                  * bail out to wb_writeback() often enough to check
    1934             :                  * background threshold and other termination conditions.
    1935             :                  */
    1936    42077205 :                 if (total_wrote) {
    1937    41658352 :                         if (time_is_before_jiffies(start_time + HZ / 10UL))
    1938             :                                 break;
    1939    41623120 :                         if (work->nr_pages <= 0)
    1940             :                                 break;
    1941             :                 }
    1942             :         }
    1943     7409266 :         return total_wrote;
    1944             : }
    1945             : 
    1946     4909832 : static long __writeback_inodes_wb(struct bdi_writeback *wb,
    1947             :                                   struct wb_writeback_work *work)
    1948             : {
    1949     4909832 :         unsigned long start_time = jiffies;
    1950     4909832 :         long wrote = 0;
    1951             : 
    1952     8639033 :         while (!list_empty(&wb->b_io)) {
    1953     3753248 :                 struct inode *inode = wb_inode(wb->b_io.prev);
    1954     3753248 :                 struct super_block *sb = inode->i_sb;
    1955             : 
    1956     3753248 :                 if (!trylock_super(sb)) {
    1957             :                         /*
    1958             :                          * trylock_super() may fail consistently due to
    1959             :                          * s_umount being grabbed by someone else. Don't use
    1960             :                          * requeue_io() to avoid busy retrying the inode/sb.
    1961             :                          */
    1962     1233355 :                         redirty_tail(inode, wb);
    1963     1233355 :                         continue;
    1964             :                 }
    1965     2519914 :                 wrote += writeback_sb_inodes(sb, wb, work);
    1966     2519934 :                 up_read(&sb->s_umount);
    1967             : 
    1968             :                 /* refer to the same tests at the end of writeback_sb_inodes */
    1969     2519935 :                 if (wrote) {
    1970     2492005 :                         if (time_is_before_jiffies(start_time + HZ / 10UL))
    1971             :                                 break;
    1972     2467961 :                         if (work->nr_pages <= 0)
    1973             :                                 break;
    1974             :                 }
    1975             :         }
    1976             :         /* Leave any unwritten inodes on b_io */
    1977     4909874 :         return wrote;
    1978             : }
    1979             : 
    1980           0 : static long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages,
    1981             :                                 enum wb_reason reason)
    1982             : {
    1983           0 :         struct wb_writeback_work work = {
    1984             :                 .nr_pages       = nr_pages,
    1985             :                 .sync_mode      = WB_SYNC_NONE,
    1986             :                 .range_cyclic   = 1,
    1987             :                 .reason         = reason,
    1988             :         };
    1989           0 :         struct blk_plug plug;
    1990             : 
    1991           0 :         blk_start_plug(&plug);
    1992           0 :         spin_lock(&wb->list_lock);
    1993           0 :         if (list_empty(&wb->b_io))
    1994           0 :                 queue_io(wb, &work, jiffies);
    1995           0 :         __writeback_inodes_wb(wb, &work);
    1996           0 :         spin_unlock(&wb->list_lock);
    1997           0 :         blk_finish_plug(&plug);
    1998             : 
    1999           0 :         return nr_pages - work.nr_pages;
    2000             : }
    2001             : 
    2002             : /*
    2003             :  * Explicit flushing or periodic writeback of "old" data.
    2004             :  *
    2005             :  * Define "old": the first time one of an inode's pages is dirtied, we mark the
    2006             :  * dirtying-time in the inode's address_space.  So this periodic writeback code
    2007             :  * just walks the superblock inode list, writing back any inodes which are
    2008             :  * older than a specific point in time.
    2009             :  *
    2010             :  * Try to run once per dirty_writeback_interval.  But if a writeback event
    2011             :  * takes longer than a dirty_writeback_interval interval, then leave a
    2012             :  * one-second gap.
    2013             :  *
    2014             :  * dirtied_before takes precedence over nr_to_write.  So we'll only write back
    2015             :  * all dirty pages if they are all attached to "old" mappings.
    2016             :  */
    2017     6331813 : static long wb_writeback(struct bdi_writeback *wb,
    2018             :                          struct wb_writeback_work *work)
    2019             : {
    2020     6331813 :         long nr_pages = work->nr_pages;
    2021     6331813 :         unsigned long dirtied_before = jiffies;
    2022     6331813 :         struct inode *inode;
    2023     6331813 :         long progress;
    2024     6331813 :         struct blk_plug plug;
    2025             : 
    2026     6331813 :         blk_start_plug(&plug);
    2027     9813434 :         for (;;) {
    2028             :                 /*
    2029             :                  * Stop writeback when nr_pages has been consumed
    2030             :                  */
    2031     9813434 :                 if (work->nr_pages <= 0)
    2032             :                         break;
    2033             : 
    2034             :                 /*
    2035             :                  * Background writeout and kupdate-style writeback may
    2036             :                  * run forever. Stop them if there is other work to do
    2037             :                  * so that e.g. sync can proceed. They'll be restarted
    2038             :                  * after the other works are all done.
    2039             :                  */
    2040     9813013 :                 if ((work->for_background || work->for_kupdate) &&
    2041      311359 :                     !list_empty(&wb->work_list))
    2042             :                         break;
    2043             : 
    2044             :                 /*
    2045             :                  * For background writeout, stop when we are below the
    2046             :                  * background dirty threshold
    2047             :                  */
    2048     9805352 :                 if (work->for_background && !wb_over_bg_thresh(wb))
    2049             :                         break;
    2050             : 
    2051             : 
    2052     9798449 :                 spin_lock(&wb->list_lock);
    2053             : 
    2054             :                 /*
    2055             :                  * Kupdate and background works are special and we want to
    2056             :                  * include all inodes that need writing. Livelock avoidance is
    2057             :                  * handled by these works yielding to any other work so we are
    2058             :                  * safe.
    2059             :                  */
    2060     9799065 :                 if (work->for_kupdate) {
    2061      108728 :                         dirtied_before = jiffies -
    2062      108728 :                                 msecs_to_jiffies(dirty_expire_interval * 10);
    2063     9690337 :                 } else if (work->for_background)
    2064      188068 :                         dirtied_before = jiffies;
    2065             : 
    2066     9799065 :                 trace_writeback_start(wb, work);
    2067     9799081 :                 if (list_empty(&wb->b_io))
    2068     9771888 :                         queue_io(wb, work, dirtied_before);
    2069     9799147 :                 if (work->sb)
    2070     4889314 :                         progress = writeback_sb_inodes(work->sb, wb, work);
    2071             :                 else
    2072     4909833 :                         progress = __writeback_inodes_wb(wb, work);
    2073     9799222 :                 trace_writeback_written(wb, work);
    2074             : 
    2075             :                 /*
    2076             :                  * Did we write something? Try for more
    2077             :                  *
    2078             :                  * Dirty inodes are moved to b_io for writeback in batches.
    2079             :                  * The completion of the current batch does not necessarily
    2080             :                  * mean the overall work is done. So we keep looping as long
    2081             :                  * as made some progress on cleaning pages or inodes.
    2082             :                  */
    2083     9799133 :                 if (progress) {
    2084     3481231 :                         spin_unlock(&wb->list_lock);
    2085     3481261 :                         continue;
    2086             :                 }
    2087             : 
    2088             :                 /*
    2089             :                  * No more inodes for IO, bail
    2090             :                  */
    2091     6317902 :                 if (list_empty(&wb->b_more_io)) {
    2092     6317187 :                         spin_unlock(&wb->list_lock);
    2093             :                         break;
    2094             :                 }
    2095             : 
    2096             :                 /*
    2097             :                  * Nothing written. Wait for some inode to
    2098             :                  * become available for writeback. Otherwise
    2099             :                  * we'll just busyloop.
    2100             :                  */
    2101         715 :                 trace_writeback_wait(wb, work);
    2102         715 :                 inode = wb_inode(wb->b_more_io.prev);
    2103         715 :                 spin_lock(&inode->i_lock);
    2104         715 :                 spin_unlock(&wb->list_lock);
    2105             :                 /* This function drops i_lock... */
    2106         715 :                 inode_sleep_on_writeback(inode);
    2107             :         }
    2108     6332336 :         blk_finish_plug(&plug);
    2109             : 
    2110     6332266 :         return nr_pages - work->nr_pages;
    2111             : }
    2112             : 
    2113             : /*
    2114             :  * Return the next wb_writeback_work struct that hasn't been processed yet.
    2115             :  */
    2116    10858429 : static struct wb_writeback_work *get_next_work_item(struct bdi_writeback *wb)
    2117             : {
    2118    10858429 :         struct wb_writeback_work *work = NULL;
    2119             : 
    2120    10858429 :         spin_lock_irq(&wb->work_lock);
    2121    10858550 :         if (!list_empty(&wb->work_list)) {
    2122     3884025 :                 work = list_entry(wb->work_list.next,
    2123             :                                   struct wb_writeback_work, list);
    2124     3884025 :                 list_del_init(&work->list);
    2125             :         }
    2126    10858506 :         spin_unlock_irq(&wb->work_lock);
    2127    10858400 :         return work;
    2128             : }
    2129             : 
    2130     6974514 : static long wb_check_background_flush(struct bdi_writeback *wb)
    2131             : {
    2132     6974514 :         if (wb_over_bg_thresh(wb)) {
    2133             : 
    2134      177380 :                 struct wb_writeback_work work = {
    2135             :                         .nr_pages       = LONG_MAX,
    2136             :                         .sync_mode      = WB_SYNC_NONE,
    2137             :                         .for_background = 1,
    2138             :                         .range_cyclic   = 1,
    2139             :                         .reason         = WB_REASON_BACKGROUND,
    2140             :                 };
    2141             : 
    2142      177380 :                 return wb_writeback(wb, &work);
    2143             :         }
    2144             : 
    2145             :         return 0;
    2146             : }
    2147             : 
    2148     6974555 : static long wb_check_old_data_flush(struct bdi_writeback *wb)
    2149             : {
    2150     6974555 :         unsigned long expired;
    2151     6974555 :         long nr_pages;
    2152             : 
    2153             :         /*
    2154             :          * When set to zero, disable periodic writeback
    2155             :          */
    2156     6974555 :         if (!dirty_writeback_interval)
    2157             :                 return 0;
    2158             : 
    2159    13949100 :         expired = wb->last_old_flush +
    2160     6974555 :                         msecs_to_jiffies(dirty_writeback_interval * 10);
    2161     6974545 :         if (time_before(jiffies, expired))
    2162             :                 return 0;
    2163             : 
    2164       92628 :         wb->last_old_flush = jiffies;
    2165       92628 :         nr_pages = get_nr_dirty_pages();
    2166             : 
    2167       92625 :         if (nr_pages) {
    2168       92625 :                 struct wb_writeback_work work = {
    2169             :                         .nr_pages       = nr_pages,
    2170             :                         .sync_mode      = WB_SYNC_NONE,
    2171             :                         .for_kupdate    = 1,
    2172             :                         .range_cyclic   = 1,
    2173             :                         .reason         = WB_REASON_PERIODIC,
    2174             :                 };
    2175             : 
    2176       92625 :                 return wb_writeback(wb, &work);
    2177             :         }
    2178             : 
    2179             :         return 0;
    2180             : }
    2181             : 
    2182     6974459 : static long wb_check_start_all(struct bdi_writeback *wb)
    2183             : {
    2184     6974459 :         long nr_pages;
    2185             : 
    2186     6974459 :         if (!test_bit(WB_start_all, &wb->state))
    2187             :                 return 0;
    2188             : 
    2189     2178210 :         nr_pages = get_nr_dirty_pages();
    2190     2178120 :         if (nr_pages) {
    2191     4356334 :                 struct wb_writeback_work work = {
    2192     2178212 :                         .nr_pages       = wb_split_bdi_pages(wb, nr_pages),
    2193             :                         .sync_mode      = WB_SYNC_NONE,
    2194             :                         .range_cyclic   = 1,
    2195     2178122 :                         .reason         = wb->start_all_reason,
    2196             :                 };
    2197             : 
    2198     2178122 :                 nr_pages = wb_writeback(wb, &work);
    2199             :         }
    2200             : 
    2201     2178183 :         clear_bit(WB_start_all, &wb->state);
    2202     2178183 :         return nr_pages;
    2203             : }
    2204             : 
    2205             : 
    2206             : /*
    2207             :  * Retrieve work items and do the writeback they describe
    2208             :  */
    2209     6973989 : static long wb_do_writeback(struct bdi_writeback *wb)
    2210             : {
    2211     6973989 :         struct wb_writeback_work *work;
    2212     6973989 :         long wrote = 0;
    2213             : 
    2214     6973989 :         set_bit(WB_writeback_running, &wb->state);
    2215    10858599 :         while ((work = get_next_work_item(wb)) != NULL) {
    2216     3883998 :                 trace_writeback_exec(wb, work);
    2217     3883765 :                 wrote += wb_writeback(wb, work);
    2218     3884030 :                 finish_writeback_work(wb, work);
    2219             :         }
    2220             : 
    2221             :         /*
    2222             :          * Check for a flush-everything request
    2223             :          */
    2224     6974511 :         wrote += wb_check_start_all(wb);
    2225             : 
    2226             :         /*
    2227             :          * Check for periodic writeback, kupdated() style
    2228             :          */
    2229     6974562 :         wrote += wb_check_old_data_flush(wb);
    2230     6974525 :         wrote += wb_check_background_flush(wb);
    2231     6974491 :         clear_bit(WB_writeback_running, &wb->state);
    2232             : 
    2233     6974606 :         return wrote;
    2234             : }
    2235             : 
    2236             : /*
    2237             :  * Handle writeback of dirty data for the device backed by this bdi. Also
    2238             :  * reschedules periodically and does kupdated style flushing.
    2239             :  */
    2240     5766497 : void wb_workfn(struct work_struct *work)
    2241             : {
    2242     5766497 :         struct bdi_writeback *wb = container_of(to_delayed_work(work),
    2243             :                                                 struct bdi_writeback, dwork);
    2244     5766497 :         long pages_written;
    2245             : 
    2246     5766497 :         set_worker_desc("flush-%s", bdi_dev_name(wb->bdi));
    2247             : 
    2248     5766094 :         if (likely(!current_is_workqueue_rescuer() ||
    2249             :                    !test_bit(WB_registered, &wb->state))) {
    2250             :                 /*
    2251             :                  * The normal path.  Keep writing back @wb until its
    2252             :                  * work_list is empty.  Note that this path is also taken
    2253             :                  * if @wb is shutting down even when we're running off the
    2254             :                  * rescuer as work_list needs to be drained.
    2255             :                  */
    2256     6973926 :                 do {
    2257     6973926 :                         pages_written = wb_do_writeback(wb);
    2258     6974583 :                         trace_writeback_pages_written(pages_written);
    2259     6974550 :                 } while (!list_empty(&wb->work_list));
    2260             :         } else {
    2261             :                 /*
    2262             :                  * bdi_wq can't get enough workers and we're running off
    2263             :                  * the emergency worker.  Don't hog it.  Hopefully, 1024 is
    2264             :                  * enough for efficient IO.
    2265             :                  */
    2266           0 :                 pages_written = writeback_inodes_wb(wb, 1024,
    2267             :                                                     WB_REASON_FORKER_THREAD);
    2268           0 :                 trace_writeback_pages_written(pages_written);
    2269             :         }
    2270             : 
    2271     5766437 :         if (!list_empty(&wb->work_list))
    2272           1 :                 wb_wakeup(wb);
    2273    11532872 :         else if (wb_has_dirty_io(wb) && dirty_writeback_interval)
    2274     2547355 :                 wb_wakeup_delayed(wb);
    2275     5766389 : }
    2276             : 
    2277             : /*
    2278             :  * Start writeback of `nr_pages' pages on this bdi. If `nr_pages' is zero,
    2279             :  * write back the whole world.
    2280             :  */
    2281    28431490 : static void __wakeup_flusher_threads_bdi(struct backing_dev_info *bdi,
    2282             :                                          enum wb_reason reason)
    2283             : {
    2284    28431490 :         struct bdi_writeback *wb;
    2285             : 
    2286    28431490 :         if (!bdi_has_dirty_io(bdi))
    2287             :                 return;
    2288             : 
    2289    10737162 :         list_for_each_entry_rcu(wb, &bdi->wb_list, bdi_node)
    2290     8732432 :                 wb_start_writeback(wb, reason);
    2291             : }
    2292             : 
    2293           0 : void wakeup_flusher_threads_bdi(struct backing_dev_info *bdi,
    2294             :                                 enum wb_reason reason)
    2295             : {
    2296           0 :         rcu_read_lock();
    2297           0 :         __wakeup_flusher_threads_bdi(bdi, reason);
    2298           0 :         rcu_read_unlock();
    2299           0 : }
    2300             : 
    2301             : /*
    2302             :  * Wakeup the flusher threads to start writeback of all currently dirty pages
    2303             :  */
    2304     2022900 : void wakeup_flusher_threads(enum wb_reason reason)
    2305             : {
    2306     2022900 :         struct backing_dev_info *bdi;
    2307             : 
    2308             :         /*
    2309             :          * If we are expecting writeback progress we must submit plugged IO.
    2310             :          */
    2311     2022900 :         blk_flush_plug(current->plug, true);
    2312             : 
    2313     2022900 :         rcu_read_lock();
    2314    30454401 :         list_for_each_entry_rcu(bdi, &bdi_list, bdi_list)
    2315    28431500 :                 __wakeup_flusher_threads_bdi(bdi, reason);
    2316     2022901 :         rcu_read_unlock();
    2317     2022896 : }
    2318             : 
    2319             : /*
    2320             :  * Wake up bdi's periodically to make sure dirtytime inodes gets
    2321             :  * written back periodically.  We deliberately do *not* check the
    2322             :  * b_dirtytime list in wb_has_dirty_io(), since this would cause the
    2323             :  * kernel to be constantly waking up once there are any dirtytime
    2324             :  * inodes on the system.  So instead we define a separate delayed work
    2325             :  * function which gets called much more rarely.  (By default, only
    2326             :  * once every 12 hours.)
    2327             :  *
    2328             :  * If there is any other write activity going on in the file system,
    2329             :  * this function won't be necessary.  But if the only thing that has
    2330             :  * happened on the file system is a dirtytime inode caused by an atime
    2331             :  * update, we need this infrastructure below to make sure that inode
    2332             :  * eventually gets pushed out to disk.
    2333             :  */
    2334             : static void wakeup_dirtytime_writeback(struct work_struct *w);
    2335             : static DECLARE_DELAYED_WORK(dirtytime_work, wakeup_dirtytime_writeback);
    2336             : 
    2337         199 : static void wakeup_dirtytime_writeback(struct work_struct *w)
    2338             : {
    2339         199 :         struct backing_dev_info *bdi;
    2340             : 
    2341         199 :         rcu_read_lock();
    2342        2987 :         list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) {
    2343        2788 :                 struct bdi_writeback *wb;
    2344             : 
    2345        6967 :                 list_for_each_entry_rcu(wb, &bdi->wb_list, bdi_node)
    2346        4179 :                         if (!list_empty(&wb->b_dirty_time))
    2347          35 :                                 wb_wakeup(wb);
    2348             :         }
    2349         199 :         rcu_read_unlock();
    2350         199 :         schedule_delayed_work(&dirtytime_work, dirtytime_expire_interval * HZ);
    2351         199 : }
    2352             : 
    2353           0 : static int __init start_dirtytime_writeback(void)
    2354             : {
    2355           0 :         schedule_delayed_work(&dirtytime_work, dirtytime_expire_interval * HZ);
    2356           0 :         return 0;
    2357             : }
    2358             : __initcall(start_dirtytime_writeback);
    2359             : 
    2360         183 : int dirtytime_interval_handler(struct ctl_table *table, int write,
    2361             :                                void *buffer, size_t *lenp, loff_t *ppos)
    2362             : {
    2363         183 :         int ret;
    2364             : 
    2365         183 :         ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
    2366         183 :         if (ret == 0 && write)
    2367         157 :                 mod_delayed_work(system_wq, &dirtytime_work, 0);
    2368         183 :         return ret;
    2369             : }
    2370             : 
    2371             : /**
    2372             :  * __mark_inode_dirty - internal function to mark an inode dirty
    2373             :  *
    2374             :  * @inode: inode to mark
    2375             :  * @flags: what kind of dirty, e.g. I_DIRTY_SYNC.  This can be a combination of
    2376             :  *         multiple I_DIRTY_* flags, except that I_DIRTY_TIME can't be combined
    2377             :  *         with I_DIRTY_PAGES.
    2378             :  *
    2379             :  * Mark an inode as dirty.  We notify the filesystem, then update the inode's
    2380             :  * dirty flags.  Then, if needed we add the inode to the appropriate dirty list.
    2381             :  *
    2382             :  * Most callers should use mark_inode_dirty() or mark_inode_dirty_sync()
    2383             :  * instead of calling this directly.
    2384             :  *
    2385             :  * CAREFUL!  We only add the inode to the dirty list if it is hashed or if it
    2386             :  * refers to a blockdev.  Unhashed inodes will never be added to the dirty list
    2387             :  * even if they are later hashed, as they will have been marked dirty already.
    2388             :  *
    2389             :  * In short, ensure you hash any inodes _before_ you start marking them dirty.
    2390             :  *
    2391             :  * Note that for blockdevs, inode->dirtied_when represents the dirtying time of
    2392             :  * the block-special inode (/dev/hda1) itself.  And the ->dirtied_when field of
    2393             :  * the kernel-internal blockdev inode represents the dirtying time of the
    2394             :  * blockdev's pages.  This is why for I_DIRTY_PAGES we always use
    2395             :  * page->mapping->host, so the page-dirtying time is recorded in the internal
    2396             :  * blockdev inode.
    2397             :  */
    2398  1274816030 : void __mark_inode_dirty(struct inode *inode, int flags)
    2399             : {
    2400  1274816030 :         struct super_block *sb = inode->i_sb;
    2401  1274816030 :         int dirtytime = 0;
    2402  1274816030 :         struct bdi_writeback *wb = NULL;
    2403             : 
    2404  1274816030 :         trace_writeback_mark_inode_dirty(inode, flags);
    2405             : 
    2406  1273223802 :         if (flags & I_DIRTY_INODE) {
    2407             :                 /*
    2408             :                  * Inode timestamp update will piggback on this dirtying.
    2409             :                  * We tell ->dirty_inode callback that timestamps need to
    2410             :                  * be updated by setting I_DIRTY_TIME in flags.
    2411             :                  */
    2412    95026474 :                 if (inode->i_state & I_DIRTY_TIME) {
    2413         119 :                         spin_lock(&inode->i_lock);
    2414         119 :                         if (inode->i_state & I_DIRTY_TIME) {
    2415         119 :                                 inode->i_state &= ~I_DIRTY_TIME;
    2416         119 :                                 flags |= I_DIRTY_TIME;
    2417             :                         }
    2418         119 :                         spin_unlock(&inode->i_lock);
    2419             :                 }
    2420             : 
    2421             :                 /*
    2422             :                  * Notify the filesystem about the inode being dirtied, so that
    2423             :                  * (if needed) it can update on-disk fields and journal the
    2424             :                  * inode.  This is only needed when the inode itself is being
    2425             :                  * dirtied now.  I.e. it's only needed for I_DIRTY_INODE, not
    2426             :                  * for just I_DIRTY_PAGES or I_DIRTY_TIME.
    2427             :                  */
    2428    95026474 :                 trace_writeback_dirty_inode_start(inode, flags);
    2429    95147050 :                 if (sb->s_op->dirty_inode)
    2430    46286237 :                         sb->s_op->dirty_inode(inode,
    2431             :                                 flags & (I_DIRTY_INODE | I_DIRTY_TIME));
    2432    95028812 :                 trace_writeback_dirty_inode(inode, flags);
    2433             : 
    2434             :                 /* I_DIRTY_INODE supersedes I_DIRTY_TIME. */
    2435    95005239 :                 flags &= ~I_DIRTY_TIME;
    2436             :         } else {
    2437             :                 /*
    2438             :                  * Else it's either I_DIRTY_PAGES, I_DIRTY_TIME, or nothing.
    2439             :                  * (We don't support setting both I_DIRTY_PAGES and I_DIRTY_TIME
    2440             :                  * in one call to __mark_inode_dirty().)
    2441             :                  */
    2442  1178197328 :                 dirtytime = flags & I_DIRTY_TIME;
    2443  1178197328 :                 WARN_ON_ONCE(dirtytime && flags != I_DIRTY_TIME);
    2444             :         }
    2445             : 
    2446             :         /*
    2447             :          * Paired with smp_mb() in __writeback_single_inode() for the
    2448             :          * following lockless i_state test.  See there for details.
    2449             :          */
    2450  1273202567 :         smp_mb();
    2451             : 
    2452  1275993474 :         if ((inode->i_state & flags) == flags)
    2453             :                 return;
    2454             : 
    2455    65142578 :         spin_lock(&inode->i_lock);
    2456    65038828 :         if ((inode->i_state & flags) != flags) {
    2457    65030227 :                 const int was_dirty = inode->i_state & I_DIRTY;
    2458             : 
    2459    65030227 :                 inode_attach_wb(inode, NULL);
    2460             : 
    2461    65115847 :                 inode->i_state |= flags;
    2462             : 
    2463             :                 /*
    2464             :                  * Grab inode's wb early because it requires dropping i_lock and we
    2465             :                  * need to make sure following checks happen atomically with dirty
    2466             :                  * list handling so that we don't move inodes under flush worker's
    2467             :                  * hands.
    2468             :                  */
    2469    65115847 :                 if (!was_dirty) {
    2470    63484742 :                         wb = locked_inode_to_wb_and_lock_list(inode);
    2471    63723479 :                         spin_lock(&inode->i_lock);
    2472             :                 }
    2473             : 
    2474             :                 /*
    2475             :                  * If the inode is queued for writeback by flush worker, just
    2476             :                  * update its dirty state. Once the flush worker is done with
    2477             :                  * the inode it will place it on the appropriate superblock
    2478             :                  * list, based upon its state.
    2479             :                  */
    2480    65354588 :                 if (inode->i_state & I_SYNC_QUEUED)
    2481       14570 :                         goto out_unlock;
    2482             : 
    2483             :                 /*
    2484             :                  * Only add valid (hashed) inodes to the superblock's
    2485             :                  * dirty list.  Add blockdev inodes as well.
    2486             :                  */
    2487    65340018 :                 if (!S_ISBLK(inode->i_mode)) {
    2488    65221530 :                         if (inode_unhashed(inode))
    2489     2640457 :                                 goto out_unlock;
    2490             :                 }
    2491    62699561 :                 if (inode->i_state & I_FREEING)
    2492       39341 :                         goto out_unlock;
    2493             : 
    2494             :                 /*
    2495             :                  * If the inode was already on b_dirty/b_io/b_more_io, don't
    2496             :                  * reposition it (that would break b_dirty time-ordering).
    2497             :                  */
    2498    62660220 :                 if (!was_dirty) {
    2499    61039758 :                         struct list_head *dirty_list;
    2500    61039758 :                         bool wakeup_bdi = false;
    2501             : 
    2502    61039758 :                         inode->dirtied_when = jiffies;
    2503    61039758 :                         if (dirtytime)
    2504          72 :                                 inode->dirtied_time_when = jiffies;
    2505             : 
    2506    61039758 :                         if (inode->i_state & I_DIRTY)
    2507    61039686 :                                 dirty_list = &wb->b_dirty;
    2508             :                         else
    2509          72 :                                 dirty_list = &wb->b_dirty_time;
    2510             : 
    2511    61039758 :                         wakeup_bdi = inode_io_list_move_locked(inode, wb,
    2512             :                                                                dirty_list);
    2513             : 
    2514    61039757 :                         spin_unlock(&wb->list_lock);
    2515    61039758 :                         spin_unlock(&inode->i_lock);
    2516    61039749 :                         trace_writeback_dirty_inode_enqueue(inode);
    2517             : 
    2518             :                         /*
    2519             :                          * If this is the first dirty inode for this bdi,
    2520             :                          * we have to wake-up the corresponding bdi thread
    2521             :                          * to make sure background write-back happens
    2522             :                          * later.
    2523             :                          */
    2524    61001558 :                         if (wakeup_bdi &&
    2525     2479536 :                             (wb->bdi->capabilities & BDI_CAP_WRITEBACK))
    2526     2479536 :                                 wb_wakeup_delayed(wb);
    2527    61001560 :                         return;
    2528             :                 }
    2529             :         }
    2530     1629063 : out_unlock:
    2531     4314830 :         if (wb)
    2532     2683722 :                 spin_unlock(&wb->list_lock);
    2533     4323431 :         spin_unlock(&inode->i_lock);
    2534             : }
    2535             : EXPORT_SYMBOL(__mark_inode_dirty);
    2536             : 
    2537             : /*
    2538             :  * The @s_sync_lock is used to serialise concurrent sync operations
    2539             :  * to avoid lock contention problems with concurrent wait_sb_inodes() calls.
    2540             :  * Concurrent callers will block on the s_sync_lock rather than doing contending
    2541             :  * walks. The queueing maintains sync(2) required behaviour as all the IO that
    2542             :  * has been issued up to the time this function is enter is guaranteed to be
    2543             :  * completed by the time we have gained the lock and waited for all IO that is
    2544             :  * in progress regardless of the order callers are granted the lock.
    2545             :  */
    2546    13523267 : static void wait_sb_inodes(struct super_block *sb)
    2547             : {
    2548    13523267 :         LIST_HEAD(sync_list);
    2549             : 
    2550             :         /*
    2551             :          * We need to be protected against the filesystem going from
    2552             :          * r/o to r/w or vice versa.
    2553             :          */
    2554    13523267 :         WARN_ON(!rwsem_is_locked(&sb->s_umount));
    2555             : 
    2556    13523267 :         mutex_lock(&sb->s_sync_lock);
    2557             : 
    2558             :         /*
    2559             :          * Splice the writeback list onto a temporary list to avoid waiting on
    2560             :          * inodes that have started writeback after this point.
    2561             :          *
    2562             :          * Use rcu_read_lock() to keep the inodes around until we have a
    2563             :          * reference. s_inode_wblist_lock protects sb->s_inodes_wb as well as
    2564             :          * the local list because inodes can be dropped from either by writeback
    2565             :          * completion.
    2566             :          */
    2567    13523313 :         rcu_read_lock();
    2568    13523290 :         spin_lock_irq(&sb->s_inode_wblist_lock);
    2569    13523297 :         list_splice_init(&sb->s_inodes_wb, &sync_list);
    2570             : 
    2571             :         /*
    2572             :          * Data integrity sync. Must wait for all pages under writeback, because
    2573             :          * there may have been pages dirtied before our sync call, but which had
    2574             :          * writeout started before we write it out.  In which case, the inode
    2575             :          * may not be on the dirty list, but we still have to wait for that
    2576             :          * writeout.
    2577             :          */
    2578    19748649 :         while (!list_empty(&sync_list)) {
    2579     6225377 :                 struct inode *inode = list_first_entry(&sync_list, struct inode,
    2580             :                                                        i_wb_list);
    2581     6225377 :                 struct address_space *mapping = inode->i_mapping;
    2582             : 
    2583             :                 /*
    2584             :                  * Move each inode back to the wb list before we drop the lock
    2585             :                  * to preserve consistency between i_wb_list and the mapping
    2586             :                  * writeback tag. Writeback completion is responsible to remove
    2587             :                  * the inode from either list once the writeback tag is cleared.
    2588             :                  */
    2589     6225377 :                 list_move_tail(&inode->i_wb_list, &sb->s_inodes_wb);
    2590             : 
    2591             :                 /*
    2592             :                  * The mapping can appear untagged while still on-list since we
    2593             :                  * do not have the mapping lock. Skip it here, wb completion
    2594             :                  * will remove it.
    2595             :                  */
    2596     6225352 :                 if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK))
    2597        2179 :                         continue;
    2598             : 
    2599     6223173 :                 spin_unlock_irq(&sb->s_inode_wblist_lock);
    2600             : 
    2601     6223173 :                 spin_lock(&inode->i_lock);
    2602     6223173 :                 if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW)) {
    2603        1275 :                         spin_unlock(&inode->i_lock);
    2604             : 
    2605        1275 :                         spin_lock_irq(&sb->s_inode_wblist_lock);
    2606        1275 :                         continue;
    2607             :                 }
    2608     6221898 :                 __iget(inode);
    2609     6221898 :                 spin_unlock(&inode->i_lock);
    2610     6221898 :                 rcu_read_unlock();
    2611             : 
    2612             :                 /*
    2613             :                  * We keep the error status of individual mapping so that
    2614             :                  * applications can catch the writeback error using fsync(2).
    2615             :                  * See filemap_fdatawait_keep_errors() for details.
    2616             :                  */
    2617     6221898 :                 filemap_fdatawait_keep_errors(mapping);
    2618             : 
    2619     6221898 :                 cond_resched();
    2620             : 
    2621     6221898 :                 iput(inode);
    2622             : 
    2623     6221898 :                 rcu_read_lock();
    2624     6221898 :                 spin_lock_irq(&sb->s_inode_wblist_lock);
    2625             :         }
    2626    13523272 :         spin_unlock_irq(&sb->s_inode_wblist_lock);
    2627    13523294 :         rcu_read_unlock();
    2628    13523295 :         mutex_unlock(&sb->s_sync_lock);
    2629    13523304 : }
    2630             : 
    2631      811102 : static void __writeback_inodes_sb_nr(struct super_block *sb, unsigned long nr,
    2632             :                                      enum wb_reason reason, bool skip_if_busy)
    2633             : {
    2634      811102 :         struct backing_dev_info *bdi = sb->s_bdi;
    2635      811102 :         DEFINE_WB_COMPLETION(done, bdi);
    2636      811102 :         struct wb_writeback_work work = {
    2637             :                 .sb                     = sb,
    2638             :                 .sync_mode              = WB_SYNC_NONE,
    2639             :                 .tagged_writepages      = 1,
    2640             :                 .done                   = &done,
    2641             :                 .nr_pages               = nr,
    2642             :                 .reason                 = reason,
    2643             :         };
    2644             : 
    2645      811102 :         if (!bdi_has_dirty_io(bdi) || bdi == &noop_backing_dev_info)
    2646      157937 :                 return;
    2647      653165 :         WARN_ON(!rwsem_is_locked(&sb->s_umount));
    2648             : 
    2649      653165 :         bdi_split_work_to_wbs(sb->s_bdi, &work, skip_if_busy);
    2650      654870 :         wb_wait_for_completion(&done);
    2651             : }
    2652             : 
    2653             : /**
    2654             :  * writeback_inodes_sb_nr -     writeback dirty inodes from given super_block
    2655             :  * @sb: the superblock
    2656             :  * @nr: the number of pages to write
    2657             :  * @reason: reason why some writeback work initiated
    2658             :  *
    2659             :  * Start writeback on some inodes on this super_block. No guarantees are made
    2660             :  * on how many (if any) will be written, and this function does not wait
    2661             :  * for IO completion of submitted IO.
    2662             :  */
    2663           0 : void writeback_inodes_sb_nr(struct super_block *sb,
    2664             :                             unsigned long nr,
    2665             :                             enum wb_reason reason)
    2666             : {
    2667      313904 :         __writeback_inodes_sb_nr(sb, nr, reason, false);
    2668           0 : }
    2669             : EXPORT_SYMBOL(writeback_inodes_sb_nr);
    2670             : 
    2671             : /**
    2672             :  * writeback_inodes_sb  -       writeback dirty inodes from given super_block
    2673             :  * @sb: the superblock
    2674             :  * @reason: reason why some writeback work was initiated
    2675             :  *
    2676             :  * Start writeback on some inodes on this super_block. No guarantees are made
    2677             :  * on how many (if any) will be written, and this function does not wait
    2678             :  * for IO completion of submitted IO.
    2679             :  */
    2680      313911 : void writeback_inodes_sb(struct super_block *sb, enum wb_reason reason)
    2681             : {
    2682      313911 :         return writeback_inodes_sb_nr(sb, get_nr_dirty_pages(), reason);
    2683             : }
    2684             : EXPORT_SYMBOL(writeback_inodes_sb);
    2685             : 
    2686             : /**
    2687             :  * try_to_writeback_inodes_sb - try to start writeback if none underway
    2688             :  * @sb: the superblock
    2689             :  * @reason: reason why some writeback work was initiated
    2690             :  *
    2691             :  * Invoke __writeback_inodes_sb_nr if no writeback is currently underway.
    2692             :  */
    2693      496511 : void try_to_writeback_inodes_sb(struct super_block *sb, enum wb_reason reason)
    2694             : {
    2695      496511 :         if (!down_read_trylock(&sb->s_umount))
    2696             :                 return;
    2697             : 
    2698      498508 :         __writeback_inodes_sb_nr(sb, get_nr_dirty_pages(), reason, true);
    2699      498841 :         up_read(&sb->s_umount);
    2700             : }
    2701             : EXPORT_SYMBOL(try_to_writeback_inodes_sb);
    2702             : 
    2703             : /**
    2704             :  * sync_inodes_sb       -       sync sb inode pages
    2705             :  * @sb: the superblock
    2706             :  *
    2707             :  * This function writes and waits on any dirty inode belonging to this
    2708             :  * super_block.
    2709             :  */
    2710   116736741 : void sync_inodes_sb(struct super_block *sb)
    2711             : {
    2712   116736741 :         struct backing_dev_info *bdi = sb->s_bdi;
    2713   116736741 :         DEFINE_WB_COMPLETION(done, bdi);
    2714   116736741 :         struct wb_writeback_work work = {
    2715             :                 .sb             = sb,
    2716             :                 .sync_mode      = WB_SYNC_ALL,
    2717             :                 .nr_pages       = LONG_MAX,
    2718             :                 .range_cyclic   = 0,
    2719             :                 .done           = &done,
    2720             :                 .reason         = WB_REASON_SYNC,
    2721             :                 .for_sync       = 1,
    2722             :         };
    2723             : 
    2724             :         /*
    2725             :          * Can't skip on !bdi_has_dirty() because we should wait for !dirty
    2726             :          * inodes under writeback and I_DIRTY_TIME inodes ignored by
    2727             :          * bdi_has_dirty() need to be written out too.
    2728             :          */
    2729   116736741 :         if (bdi == &noop_backing_dev_info)
    2730   103213507 :                 return;
    2731    13523234 :         WARN_ON(!rwsem_is_locked(&sb->s_umount));
    2732             : 
    2733             :         /* protect against inode wb switch, see inode_switch_wbs_work_fn() */
    2734    13523234 :         bdi_down_write_wb_switch_rwsem(bdi);
    2735    13523300 :         bdi_split_work_to_wbs(bdi, &work, false);
    2736    13523263 :         wb_wait_for_completion(&done);
    2737    13523281 :         bdi_up_write_wb_switch_rwsem(bdi);
    2738             : 
    2739    13523294 :         wait_sb_inodes(sb);
    2740             : }
    2741             : EXPORT_SYMBOL(sync_inodes_sb);
    2742             : 
    2743             : /**
    2744             :  * write_inode_now      -       write an inode to disk
    2745             :  * @inode: inode to write to disk
    2746             :  * @sync: whether the write should be synchronous or not
    2747             :  *
    2748             :  * This function commits an inode to disk immediately if it is dirty. This is
    2749             :  * primarily needed by knfsd.
    2750             :  *
    2751             :  * The caller must either have a ref on the inode or must have set I_WILL_FREE.
    2752             :  */
    2753   384697383 : int write_inode_now(struct inode *inode, int sync)
    2754             : {
    2755   384697383 :         struct writeback_control wbc = {
    2756             :                 .nr_to_write = LONG_MAX,
    2757   384697383 :                 .sync_mode = sync ? WB_SYNC_ALL : WB_SYNC_NONE,
    2758             :                 .range_start = 0,
    2759             :                 .range_end = LLONG_MAX,
    2760             :         };
    2761             : 
    2762   384697383 :         if (!mapping_can_writeback(inode->i_mapping))
    2763           0 :                 wbc.nr_to_write = 0;
    2764             : 
    2765   384659797 :         might_sleep();
    2766   384675772 :         return writeback_single_inode(inode, &wbc);
    2767             : }
    2768             : EXPORT_SYMBOL(write_inode_now);
    2769             : 
    2770             : /**
    2771             :  * sync_inode_metadata - write an inode to disk
    2772             :  * @inode: the inode to sync
    2773             :  * @wait: wait for I/O to complete.
    2774             :  *
    2775             :  * Write an inode to disk and adjust its dirty state after completion.
    2776             :  *
    2777             :  * Note: only writes the actual inode, no associated data or other metadata.
    2778             :  */
    2779        1436 : int sync_inode_metadata(struct inode *inode, int wait)
    2780             : {
    2781        1436 :         struct writeback_control wbc = {
    2782        1436 :                 .sync_mode = wait ? WB_SYNC_ALL : WB_SYNC_NONE,
    2783             :                 .nr_to_write = 0, /* metadata-only */
    2784             :         };
    2785             : 
    2786        1436 :         return writeback_single_inode(inode, &wbc);
    2787             : }
    2788             : EXPORT_SYMBOL(sync_inode_metadata);

Generated by: LCOV version 1.14