linux/fs/fs-writeback.c
<<
>>
Prefs
   1/*
   2 * fs/fs-writeback.c
   3 *
   4 * Copyright (C) 2002, Linus Torvalds.
   5 *
   6 * Contains all the functions related to writing back and waiting
   7 * upon dirty inodes against superblocks, and writing back dirty
   8 * pages against inodes.  ie: data writeback.  Writeout of the
   9 * inode itself is not handled here.
  10 *
  11 * 10Apr2002    Andrew Morton
  12 *              Split out of fs/inode.c
  13 *              Additions for address_space-based writeback
  14 */
  15
  16#include <linux/kernel.h>
  17#include <linux/export.h>
  18#include <linux/spinlock.h>
  19#include <linux/slab.h>
  20#include <linux/sched.h>
  21#include <linux/fs.h>
  22#include <linux/mm.h>
  23#include <linux/pagemap.h>
  24#include <linux/kthread.h>
  25#include <linux/freezer.h>
  26#include <linux/writeback.h>
  27#include <linux/blkdev.h>
  28#include <linux/backing-dev.h>
  29#include <linux/tracepoint.h>
  30#include "internal.h"
  31
  32/*
  33 * 4MB minimal write chunk size
  34 */
  35#define MIN_WRITEBACK_PAGES     (4096UL >> (PAGE_CACHE_SHIFT - 10))
  36
  37/*
  38 * Passed into wb_writeback(), essentially a subset of writeback_control
  39 */
  40struct wb_writeback_work {
  41        long nr_pages;
  42        struct super_block *sb;
  43        unsigned long *older_than_this;
  44        enum writeback_sync_modes sync_mode;
  45        unsigned int tagged_writepages:1;
  46        unsigned int for_kupdate:1;
  47        unsigned int range_cyclic:1;
  48        unsigned int for_background:1;
  49        enum wb_reason reason;          /* why was writeback initiated? */
  50
  51        struct list_head list;          /* pending work list */
  52        struct completion *done;        /* set if the caller waits */
  53};
  54
  55/**
  56 * writeback_in_progress - determine whether there is writeback in progress
  57 * @bdi: the device's backing_dev_info structure.
  58 *
  59 * Determine whether there is writeback waiting to be handled against a
  60 * backing device.
  61 */
  62int writeback_in_progress(struct backing_dev_info *bdi)
  63{
  64        return test_bit(BDI_writeback_running, &bdi->state);
  65}
  66EXPORT_SYMBOL(writeback_in_progress);
  67
  68static inline struct backing_dev_info *inode_to_bdi(struct inode *inode)
  69{
  70        struct super_block *sb = inode->i_sb;
  71
  72        if (strcmp(sb->s_type->name, "bdev") == 0)
  73                return inode->i_mapping->backing_dev_info;
  74
  75        return sb->s_bdi;
  76}
  77
  78static inline struct inode *wb_inode(struct list_head *head)
  79{
  80        return list_entry(head, struct inode, i_wb_list);
  81}
  82
  83/*
  84 * Include the creation of the trace points after defining the
  85 * wb_writeback_work structure and inline functions so that the definition
  86 * remains local to this file.
  87 */
  88#define CREATE_TRACE_POINTS
  89#include <trace/events/writeback.h>
  90
  91/* Wakeup flusher thread or forker thread to fork it. Requires bdi->wb_lock. */
  92static void bdi_wakeup_flusher(struct backing_dev_info *bdi)
  93{
  94        if (bdi->wb.task) {
  95                wake_up_process(bdi->wb.task);
  96        } else {
  97                /*
  98                 * The bdi thread isn't there, wake up the forker thread which
  99                 * will create and run it.
 100                 */
 101                wake_up_process(default_backing_dev_info.wb.task);
 102        }
 103}
 104
 105static void bdi_queue_work(struct backing_dev_info *bdi,
 106                           struct wb_writeback_work *work)
 107{
 108        trace_writeback_queue(bdi, work);
 109
 110        spin_lock_bh(&bdi->wb_lock);
 111        list_add_tail(&work->list, &bdi->work_list);
 112        if (!bdi->wb.task)
 113                trace_writeback_nothread(bdi, work);
 114        bdi_wakeup_flusher(bdi);
 115        spin_unlock_bh(&bdi->wb_lock);
 116}
 117
 118static void
 119__bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,
 120                      bool range_cyclic, enum wb_reason reason)
 121{
 122        struct wb_writeback_work *work;
 123
 124        /*
 125         * This is WB_SYNC_NONE writeback, so if allocation fails just
 126         * wakeup the thread for old dirty data writeback
 127         */
 128        work = kzalloc(sizeof(*work), GFP_ATOMIC);
 129        if (!work) {
 130                if (bdi->wb.task) {
 131                        trace_writeback_nowork(bdi);
 132                        wake_up_process(bdi->wb.task);
 133                }
 134                return;
 135        }
 136
 137        work->sync_mode = WB_SYNC_NONE;
 138        work->nr_pages  = nr_pages;
 139        work->range_cyclic = range_cyclic;
 140        work->reason    = reason;
 141
 142        bdi_queue_work(bdi, work);
 143}
 144
 145/**
 146 * bdi_start_writeback - start writeback
 147 * @bdi: the backing device to write from
 148 * @nr_pages: the number of pages to write
 149 * @reason: reason why some writeback work was initiated
 150 *
 151 * Description:
 152 *   This does WB_SYNC_NONE opportunistic writeback. The IO is only
 153 *   started when this function returns, we make no guarantees on
 154 *   completion. Caller need not hold sb s_umount semaphore.
 155 *
 156 */
 157void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,
 158                        enum wb_reason reason)
 159{
 160        __bdi_start_writeback(bdi, nr_pages, true, reason);
 161}
 162
 163/**
 164 * bdi_start_background_writeback - start background writeback
 165 * @bdi: the backing device to write from
 166 *
 167 * Description:
 168 *   This makes sure WB_SYNC_NONE background writeback happens. When
 169 *   this function returns, it is only guaranteed that for given BDI
 170 *   some IO is happening if we are over background dirty threshold.
 171 *   Caller need not hold sb s_umount semaphore.
 172 */
 173void bdi_start_background_writeback(struct backing_dev_info *bdi)
 174{
 175        /*
 176         * We just wake up the flusher thread. It will perform background
 177         * writeback as soon as there is no other work to do.
 178         */
 179        trace_writeback_wake_background(bdi);
 180        spin_lock_bh(&bdi->wb_lock);
 181        bdi_wakeup_flusher(bdi);
 182        spin_unlock_bh(&bdi->wb_lock);
 183}
 184
 185/*
 186 * Remove the inode from the writeback list it is on.
 187 */
 188void inode_wb_list_del(struct inode *inode)
 189{
 190        struct backing_dev_info *bdi = inode_to_bdi(inode);
 191
 192        spin_lock(&bdi->wb.list_lock);
 193        list_del_init(&inode->i_wb_list);
 194        spin_unlock(&bdi->wb.list_lock);
 195}
 196
 197/*
 198 * Redirty an inode: set its when-it-was dirtied timestamp and move it to the
 199 * furthest end of its superblock's dirty-inode list.
 200 *
 201 * Before stamping the inode's ->dirtied_when, we check to see whether it is
 202 * already the most-recently-dirtied inode on the b_dirty list.  If that is
 203 * the case then the inode must have been redirtied while it was being written
 204 * out and we don't reset its dirtied_when.
 205 */
 206static void redirty_tail(struct inode *inode, struct bdi_writeback *wb)
 207{
 208        assert_spin_locked(&wb->list_lock);
 209        if (!list_empty(&wb->b_dirty)) {
 210                struct inode *tail;
 211
 212                tail = wb_inode(wb->b_dirty.next);
 213                if (time_before(inode->dirtied_when, tail->dirtied_when))
 214                        inode->dirtied_when = jiffies;
 215        }
 216        list_move(&inode->i_wb_list, &wb->b_dirty);
 217}
 218
 219/*
 220 * requeue inode for re-scanning after bdi->b_io list is exhausted.
 221 */
 222static void requeue_io(struct inode *inode, struct bdi_writeback *wb)
 223{
 224        assert_spin_locked(&wb->list_lock);
 225        list_move(&inode->i_wb_list, &wb->b_more_io);
 226}
 227
 228static void inode_sync_complete(struct inode *inode)
 229{
 230        inode->i_state &= ~I_SYNC;
 231        /* If inode is clean an unused, put it into LRU now... */
 232        inode_add_lru(inode);
 233        /* Waiters must see I_SYNC cleared before being woken up */
 234        smp_mb();
 235        wake_up_bit(&inode->i_state, __I_SYNC);
 236}
 237
 238static bool inode_dirtied_after(struct inode *inode, unsigned long t)
 239{
 240        bool ret = time_after(inode->dirtied_when, t);
 241#ifndef CONFIG_64BIT
 242        /*
 243         * For inodes being constantly redirtied, dirtied_when can get stuck.
 244         * It _appears_ to be in the future, but is actually in distant past.
 245         * This test is necessary to prevent such wrapped-around relative times
 246         * from permanently stopping the whole bdi writeback.
 247         */
 248        ret = ret && time_before_eq(inode->dirtied_when, jiffies);
 249#endif
 250        return ret;
 251}
 252
 253/*
 254 * Move expired (dirtied after work->older_than_this) dirty inodes from
 255 * @delaying_queue to @dispatch_queue.
 256 */
 257static int move_expired_inodes(struct list_head *delaying_queue,
 258                               struct list_head *dispatch_queue,
 259                               struct wb_writeback_work *work)
 260{
 261        LIST_HEAD(tmp);
 262        struct list_head *pos, *node;
 263        struct super_block *sb = NULL;
 264        struct inode *inode;
 265        int do_sb_sort = 0;
 266        int moved = 0;
 267
 268        while (!list_empty(delaying_queue)) {
 269                inode = wb_inode(delaying_queue->prev);
 270                if (work->older_than_this &&
 271                    inode_dirtied_after(inode, *work->older_than_this))
 272                        break;
 273                if (sb && sb != inode->i_sb)
 274                        do_sb_sort = 1;
 275                sb = inode->i_sb;
 276                list_move(&inode->i_wb_list, &tmp);
 277                moved++;
 278        }
 279
 280        /* just one sb in list, splice to dispatch_queue and we're done */
 281        if (!do_sb_sort) {
 282                list_splice(&tmp, dispatch_queue);
 283                goto out;
 284        }
 285
 286        /* Move inodes from one superblock together */
 287        while (!list_empty(&tmp)) {
 288                sb = wb_inode(tmp.prev)->i_sb;
 289                list_for_each_prev_safe(pos, node, &tmp) {
 290                        inode = wb_inode(pos);
 291                        if (inode->i_sb == sb)
 292                                list_move(&inode->i_wb_list, dispatch_queue);
 293                }
 294        }
 295out:
 296        return moved;
 297}
 298
 299/*
 300 * Queue all expired dirty inodes for io, eldest first.
 301 * Before
 302 *         newly dirtied     b_dirty    b_io    b_more_io
 303 *         =============>    gf         edc     BA
 304 * After
 305 *         newly dirtied     b_dirty    b_io    b_more_io
 306 *         =============>    g          fBAedc
 307 *                                           |
 308 *                                           +--> dequeue for IO
 309 */
 310static void queue_io(struct bdi_writeback *wb, struct wb_writeback_work *work)
 311{
 312        int moved;
 313        assert_spin_locked(&wb->list_lock);
 314        list_splice_init(&wb->b_more_io, &wb->b_io);
 315        moved = move_expired_inodes(&wb->b_dirty, &wb->b_io, work);
 316        trace_writeback_queue_io(wb, work, moved);
 317}
 318
 319static int write_inode(struct inode *inode, struct writeback_control *wbc)
 320{
 321        if (inode->i_sb->s_op->write_inode && !is_bad_inode(inode))
 322                return inode->i_sb->s_op->write_inode(inode, wbc);
 323        return 0;
 324}
 325
 326/*
 327 * Wait for writeback on an inode to complete. Called with i_lock held.
 328 * Caller must make sure inode cannot go away when we drop i_lock.
 329 */
 330static void __inode_wait_for_writeback(struct inode *inode)
 331        __releases(inode->i_lock)
 332        __acquires(inode->i_lock)
 333{
 334        DEFINE_WAIT_BIT(wq, &inode->i_state, __I_SYNC);
 335        wait_queue_head_t *wqh;
 336
 337        wqh = bit_waitqueue(&inode->i_state, __I_SYNC);
 338        while (inode->i_state & I_SYNC) {
 339                spin_unlock(&inode->i_lock);
 340                __wait_on_bit(wqh, &wq, inode_wait, TASK_UNINTERRUPTIBLE);
 341                spin_lock(&inode->i_lock);
 342        }
 343}
 344
 345/*
 346 * Wait for writeback on an inode to complete. Caller must have inode pinned.
 347 */
 348void inode_wait_for_writeback(struct inode *inode)
 349{
 350        spin_lock(&inode->i_lock);
 351        __inode_wait_for_writeback(inode);
 352        spin_unlock(&inode->i_lock);
 353}
 354
 355/*
 356 * Sleep until I_SYNC is cleared. This function must be called with i_lock
 357 * held and drops it. It is aimed for callers not holding any inode reference
 358 * so once i_lock is dropped, inode can go away.
 359 */
 360static void inode_sleep_on_writeback(struct inode *inode)
 361        __releases(inode->i_lock)
 362{
 363        DEFINE_WAIT(wait);
 364        wait_queue_head_t *wqh = bit_waitqueue(&inode->i_state, __I_SYNC);
 365        int sleep;
 366
 367        prepare_to_wait(wqh, &wait, TASK_UNINTERRUPTIBLE);
 368        sleep = inode->i_state & I_SYNC;
 369        spin_unlock(&inode->i_lock);
 370        if (sleep)
 371                schedule();
 372        finish_wait(wqh, &wait);
 373}
 374
 375/*
 376 * Find proper writeback list for the inode depending on its current state and
 377 * possibly also change of its state while we were doing writeback.  Here we
 378 * handle things such as livelock prevention or fairness of writeback among
 379 * inodes. This function can be called only by flusher thread - noone else
 380 * processes all inodes in writeback lists and requeueing inodes behind flusher
 381 * thread's back can have unexpected consequences.
 382 */
 383static void requeue_inode(struct inode *inode, struct bdi_writeback *wb,
 384                          struct writeback_control *wbc)
 385{
 386        if (inode->i_state & I_FREEING)
 387                return;
 388
 389        /*
 390         * Sync livelock prevention. Each inode is tagged and synced in one
 391         * shot. If still dirty, it will be redirty_tail()'ed below.  Update
 392         * the dirty time to prevent enqueue and sync it again.
 393         */
 394        if ((inode->i_state & I_DIRTY) &&
 395            (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages))
 396                inode->dirtied_when = jiffies;
 397
 398        if (wbc->pages_skipped) {
 399                /*
 400                 * writeback is not making progress due to locked
 401                 * buffers. Skip this inode for now.
 402                 */
 403                redirty_tail(inode, wb);
 404                return;
 405        }
 406
 407        if (mapping_tagged(inode->i_mapping, PAGECACHE_TAG_DIRTY)) {
 408                /*
 409                 * We didn't write back all the pages.  nfs_writepages()
 410                 * sometimes bales out without doing anything.
 411                 */
 412                if (wbc->nr_to_write <= 0) {
 413                        /* Slice used up. Queue for next turn. */
 414                        requeue_io(inode, wb);
 415                } else {
 416                        /*
 417                         * Writeback blocked by something other than
 418                         * congestion. Delay the inode for some time to
 419                         * avoid spinning on the CPU (100% iowait)
 420                         * retrying writeback of the dirty page/inode
 421                         * that cannot be performed immediately.
 422                         */
 423                        redirty_tail(inode, wb);
 424                }
 425        } else if (inode->i_state & I_DIRTY) {
 426                /*
 427                 * Filesystems can dirty the inode during writeback operations,
 428                 * such as delayed allocation during submission or metadata
 429                 * updates after data IO completion.
 430                 */
 431                redirty_tail(inode, wb);
 432        } else {
 433                /* The inode is clean. Remove from writeback lists. */
 434                list_del_init(&inode->i_wb_list);
 435        }
 436}
 437
 438/*
 439 * Write out an inode and its dirty pages. Do not update the writeback list
 440 * linkage. That is left to the caller. The caller is also responsible for
 441 * setting I_SYNC flag and calling inode_sync_complete() to clear it.
 442 */
 443static int
 444__writeback_single_inode(struct inode *inode, struct bdi_writeback *wb,
 445                         struct writeback_control *wbc)
 446{
 447        struct address_space *mapping = inode->i_mapping;
 448        long nr_to_write = wbc->nr_to_write;
 449        unsigned dirty;
 450        int ret;
 451
 452        WARN_ON(!(inode->i_state & I_SYNC));
 453
 454        ret = do_writepages(mapping, wbc);
 455
 456        /*
 457         * Make sure to wait on the data before writing out the metadata.
 458         * This is important for filesystems that modify metadata on data
 459         * I/O completion.
 460         */
 461        if (wbc->sync_mode == WB_SYNC_ALL) {
 462                int err = filemap_fdatawait(mapping);
 463                if (ret == 0)
 464                        ret = err;
 465        }
 466
 467        /*
 468         * Some filesystems may redirty the inode during the writeback
 469         * due to delalloc, clear dirty metadata flags right before
 470         * write_inode()
 471         */
 472        spin_lock(&inode->i_lock);
 473        /* Clear I_DIRTY_PAGES if we've written out all dirty pages */
 474        if (!mapping_tagged(mapping, PAGECACHE_TAG_DIRTY))
 475                inode->i_state &= ~I_DIRTY_PAGES;
 476        dirty = inode->i_state & I_DIRTY;
 477        inode->i_state &= ~(I_DIRTY_SYNC | I_DIRTY_DATASYNC);
 478        spin_unlock(&inode->i_lock);
 479        /* Don't write the inode if only I_DIRTY_PAGES was set */
 480        if (dirty & (I_DIRTY_SYNC | I_DIRTY_DATASYNC)) {
 481                int err = write_inode(inode, wbc);
 482                if (ret == 0)
 483                        ret = err;
 484        }
 485        trace_writeback_single_inode(inode, wbc, nr_to_write);
 486        return ret;
 487}
 488
 489/*
 490 * Write out an inode's dirty pages. Either the caller has an active reference
 491 * on the inode or the inode has I_WILL_FREE set.
 492 *
 493 * This function is designed to be called for writing back one inode which
 494 * we go e.g. from filesystem. Flusher thread uses __writeback_single_inode()
 495 * and does more profound writeback list handling in writeback_sb_inodes().
 496 */
 497static int
 498writeback_single_inode(struct inode *inode, struct bdi_writeback *wb,
 499                       struct writeback_control *wbc)
 500{
 501        int ret = 0;
 502
 503        spin_lock(&inode->i_lock);
 504        if (!atomic_read(&inode->i_count))
 505                WARN_ON(!(inode->i_state & (I_WILL_FREE|I_FREEING)));
 506        else
 507                WARN_ON(inode->i_state & I_WILL_FREE);
 508
 509        if (inode->i_state & I_SYNC) {
 510                if (wbc->sync_mode != WB_SYNC_ALL)
 511                        goto out;
 512                /*
 513                 * It's a data-integrity sync. We must wait. Since callers hold
 514                 * inode reference or inode has I_WILL_FREE set, it cannot go
 515                 * away under us.
 516                 */
 517                __inode_wait_for_writeback(inode);
 518        }
 519        WARN_ON(inode->i_state & I_SYNC);
 520        /*
 521         * Skip inode if it is clean. We don't want to mess with writeback
 522         * lists in this function since flusher thread may be doing for example
 523         * sync in parallel and if we move the inode, it could get skipped. So
 524         * here we make sure inode is on some writeback list and leave it there
 525         * unless we have completely cleaned the inode.
 526         */
 527        if (!(inode->i_state & I_DIRTY))
 528                goto out;
 529        inode->i_state |= I_SYNC;
 530        spin_unlock(&inode->i_lock);
 531
 532        ret = __writeback_single_inode(inode, wb, wbc);
 533
 534        spin_lock(&wb->list_lock);
       Br6writebac84t;wbc);
 432     Ospanwis>         436 4575         * unless we have compl id="L4395 class="line" name="L4395> 43954 479         526         */
 527        if (!( 4454teback.c#L430" id="L430" class="linecomment">/* The inode is clean. Remove from writeback lists. */
 434                i_state |=  533
 534        
54et" class="sref">ret = 0r. The caller is al 517 s="line" 5ame="L442"> 442 */
tate &  517 s"+code=spnode" class="sref">inode5/a>, 54/a>(&i_state |= I_SYNC;
 530        wbc, n5sref">wri5eback_control *ma5ping<54="+code=i_state" class="sref">i_stae=nr_to_w5ite" class="sref">nr_to_5rite<5a> = <="fs/fs+code=inode" class="wb" class="huns-wrzack.c#L497" id="L497" clas"huns-wrzae="L497"> 497static int clave wdevve fent">/* Slice us clave wdevve fewb,
wode" class="sref">inode *;5bdibref="fs/fs-worL530" class="linibref="fs/fs-worLwb,
 527        if (!(d5rty;
 509        if (        int  n5ef="+code5inode" class="sref">inod5-5gt;i_sta5e & wbc);
do55pan class="comment">         * here we="L510"> 51itineg. frone" name= congaon&#b         5sref">mapping,  525wri5" name="L455"> 455
<5 href5"fs/fs-writeback.c#L456" id="L456" clasn par congsthe caller.ame=f="fs/fs-d - no434()om filment*
 457         * nd leave it there
 458         * T id="Ltende the c eueing imeack="L510"> 51i32"> 432
d5/O completion.
wbc-><5 href56span class="comment">         * Skip iiiiiiiiiiback_single_inode()err =          * lists iiiiiiiiiiiiii href=cache_>/*        href="fs/fs-writeback.c#L490" id="L5=f">i_sta5ref="fs/fs-writeback.c#L563" i56span class="comment">         * sync iiiiiiiiiiiiiiiiiii(quickly)pan  curr    orname="L489" href="fs/fs-writeback.c#L490" id="L5=f="+code5ss="line" name="L464"> 45456pan class="comment">         * here weiiiiiiiiiiiiiiiiii(maybe slowly)pn thi     525         * unless we have compl-writebac5.c#L465" id="L465" class5"line56name="L405"> 405        }
I_DIRTY) &&
 395            orL530" class="liniorLwbsync_mode        * unless we have compl-" id="L45" name="L466"> 466
<5 href56" class="sref">i_mappiinode" class=""line" name="L453">  LONG_MAXth="de=nr_to_write" class="sref">n5L468" id=5L468" class="line" name=5L468"56 id="L528" cl( wode"de=I_DIRTY" class="savgf">syn_bandwidthde" class="srefavgf">syn_bandwidthef="k/ 2 class="sref">inode *
 530           e" "linee="L530"> 530        sp5n_loc57"L482" class="line" n"inode" class=""line" name="L453">  inode * 4757"L463" class="line" name="L46ss="line" n"inode" class="MIN_WRITEBACK class="line" name="LMIN_WRITEBACK classode"530"> 530        (inode->err;
inod5-5gt; n5state5&= ~(spin5unloc5(& id="L486" class="line" name=5#L479" id5"L479" class="line" name5"L47958c#L459" id="L459" class="lief="fs/fs-writeback.c#L455" id="L455" 5dirty5& ( * Write out " id="a o wa operf _inoad - no"> *
 491 * on the inode5/a>);
 45358/a> * Thd - no  Ospanwis> w id="on oro
no"> *ret =  * we goinc="vers synderand leave it there
ino58a> * annd leave it there
);
i_locski/ync. We sde=i_locand leave it there
  omment">         * unless we have complf="fs/fs-5riteback.c#L487" id="L485" cla58> = <="fs/fs+code=inode" class="wb" class=e_inode()ck.c#L497" id="L497" clase_inode()e="L497"> 497static intsuper_bs="sref">i_stateuper_bs="swb,
 533inode * 45859t;writeback_single_inode(struct inode * 490<5a>,
 527        if (!(bdi_writeback *wb =  4959"L463" class="line" n.DIRTY" class="sref">I_DIRTY) &&
I_orL530" class="liniorLwbI_DIRTY) &&
inode *5494(&sync_modeI_orL530" class="liniorLwbsync_modeinode *I_orL530" class="liniorLwbinode * *I_orL530" class="liniorLwb *inode *5ame="L496"> 496i_mapp.DIRTY" class="srange_cycli"+code=__writebarange_cycli" class="sref">iC" class="sref">I_orL530" class="liniorLwbinode *inode5/a>, 5truct wbc, inode *  6                    stru6t ILLONG_MAX" name="L453"> LLONG_MAXth=" class="sref">inode *  6 line" name="L490"> 490<6f="+c6de=wbc" class=}de=nr_to_write" class="sref">n6500"> 5006/a>{
) &&a"fr"_her ef="k.c#L531" id="L531jiffie=sync_mode" clasjiffie=ef="de=nr_to_write" class="sref">n6L501"> 506        int n6L401"> 506< class="line" name="L496n_loc6(&i_locskic. We sdomment">         * unless we have comp6e=atomic_6ead" class="sref">atomic6read<60ritepages(i_state & 6/* Don't wss="lempt"f="+code=I_SYNC" class="sname="L533"> 533
 509        if (|I_FREEING)));
 497static int
 498i_riteback.c#L497" id="Lback.c#L532" id="L532" clasname="L533"> 533
  530        inode->6i_st6te &a6p;  533 533 509        if (inod6-6gt;);
 533 509        if (  6class="sref">wbc->6         * Skippppppppppppppppppppppppp*/a> on oran classw id="432out;
uperbs="s,her tha c . We sdd 506line" name="L513"> 513                 * It's pppppppppppppppp*/assit class="s dirtyname="ss="and leave it there
6514                 * inopppppppppppppppp*mment">         * unless we have comp6go6 532         530         530        i_mapppppppppp" id="L486" class="line" name=6r_writeba6k((& id="L486" class="line" name=6ref="+cod6=inode" class="sref">ino6e62t;I_SYNC);
<6 href6"fs/fs-writeback.c#L520" id="L520" clpppppppppppppppp*T id="Linegbe+cods/assaynafegritt/>uperbs="sand leave it there
 621         * Skippppppppppppppppp*TBL50c="432 5626span class="comment">         * listspppppppppppppppp*Tpf it e next/>uperbs="sand leave it there
 506ass="line" name="L523"> 623         * syncpppppppppppppppp*mment">         * unless we have comp6"L524" cl6ss="line" name="L524"> 56462ruct  530        
inode6/a>-&6t;         *pppppppp*Tsref">inodbothes/ment"new . We sdync. We sdberitebreed, firss="fs/fs-writeback.c#L455" id="L455" 6spin6unloc63fs/fs-writeback.c#L520" id="L520" clpppppppp*Tkie.gw id=L489is uses lasba>    breerand leave it there
6node->         * Skippppppppp*mment">         * unless we have comp6ck_single6inode(wb->list_lock);
       Br6wri6ode=wb" c6ass="sref">wb, );
 508
 508<  NEWhref=ack.c#L480" id="L48a href="+code=inode" class="sref">i=ack.c#L480" id="L48         509        if (sp6n_loc63ruct i_state |= I_SYNC;
 530         532         530         530         46763ruct  518        }
 519         519I_DIRTY) &&
 510"L509"> 509        if ( 4464fs/fs-writeback.c#L520" id="L520" clpppppppppppppppp*TIfit is "L432" cl nam> 4926"L441" class="line" name6"L44164span class="comment">         * Skippppppppppppppppp*T write5" id="L4-92<-a>            ,her tho

64pan class="comment">         * listspppppppppppppppp*Tb_m fiinoas dirat/a>
 442         * syncpppppppppppppppp* othes/. We sdyn sinoand leave it there
inode6/a>, 64                 * inoppppppppf="fs/fs-writeback.c#L455" id="L455" 6"bac84t;<6                    stru6t  515pppppppp* W="linelle inodanothes/go at/a> *pppppppp* wckn wode is on d a fu c ecs="rf _inoand leave it there
ma6ping<64         * 515pppppppp*mment">         * unless we have comp6e=nr_to_w6ite" class="sref">nr_to_6rite<64ruct i_state |= I_SYNC;
 530         532         530        d6rty;
 532530"> 530        6 450        int  530        inod6-65"L482" class="line" n" id="L486" class="line" name=6ef">i_sta6e & i_state |=  533
 534        do65ritepages(mapping, wri6" name="L455"> 455
<6 href6"fs/fs-writeback.c#L456" id="L456" clllllllll*/a> alto my r4queued->skipwe="fs/fs-writeback.c#L455" id="L455" 6e="+code=67" class="line" name="L467"> 467         *llllllll*/areo write="L510">NONE/a>
 468         *llllllll*/a"L510"> 51icas and leave it there
         * unless we have comp6a"sref">d6/O completion.
I_DIRWILL_FREE);
 508
 509        if (wbc-><6 href661" class="line" name=========ref="+code=inode" class="Wao         * unless we have comp6af="+code6s="sref">err =  482    writee leep_onsingle_inode" class="srefwritee leep_onsingle_inoL532" id="L532" class="line" name="L532"> 532530"> 530        i_sta6ref="fs/fs-writeback.c#L663" i66"L463" class="line" name="L46ref="+code=inode" class="Ia hress withgonea>sgainl*mment">         * unless we have comp6af="+code6ss="line" name="L464"> 46466ruct  533
 534            6>ret =  530         466
<6 href66" class="sref">i_mappiinode" class="="L528"> 528                goto out;
 529       6L468" id=6L468" class="line" name=6L468"66ruct i_state |= I_SYNC;
 530         530        d6e
ib" class="huns-wrzack.c#L497" id="L497" clas"huns-wrzae="L4 id="L532" clasname="L533"> 533
wode" " class="sref">I_orL530" class="liniorLwb 530        
ib" cs"hunsn6 err" cla6in_lock" class="sref">sp6n_loc67"L482" class="line" n"inode" class="f="+code=__writeback_sing.DIRTY" class="s>i_lo_amplei_lo_ample 4767"L463id="L500" class="line" name="6"f="+code6ng_tagged(inode-> 515 use ode=WArtoTpf it e inod6-67fs/fs-writeback.c#L456" id="L456" clllllllll*/evictich6&= ~(         *llllllll*mment">         * unless we have comp6e468" id=6nlock" class="sref">spin6unloc67ruct  531
 532        r"L533" class="line" na"+code=__writeback_single_inode" class="sref">__writeb6#L479" id6"L479" class="line" name6"L47968t; 530         e" "linee="L -ng" class="sref">ib" cs"huns__writeb6#e=wbc" c6="+code=write_inode" cla6s="sr681" class="line" name="inode" class="fboclsync_mode" claswboclef="k+ng" class="sref">ib" cs"huns__writeb6#err" cla6ref="fs/fs-writeback.c#L682" i68"L482" class="line" n"inode" class="class="sref">wb-> 533
 534         46368"L463" class="line" n"inode" class="class="sref">wb->list_lock);
       Br6wri6ass="sref6>ret =  526         */
 527        if (!(ino68       Br6wri6af="+code6/a>);
 532        r"L533" class="line" na"+code=__writeback_single_inode" class="sref">__writeb6#tate6        return i_mappiinode" class="="L52e caller is al 5176f="fs/fs-6riteback.c#L487" id="L486" cla68ruct i_state |= I_SYNC;
 530         46869t; 533
 534         490<6a>         * Skippppppppp* bail L489asswbref="fs/fspa often enough9asschean>
69iteback.c#L512" id="L512" class="line" name="L> *skipothes/terminaortat"srdiortar inode has I_WILL_FREE set, it cannot6oL483" cl6" class="line" name="L496"> 4969class="comment">                 * It's amment">         * unless we have comp69ss="sref6lass="line" name="L494">6494(& 509        if ();

) &&a"fr"_her ef="k+c#L531" id="L531HZRTY) &&HZef="k/ 10UL27"> 527        if (!( 530         496i_mappf="+code_WILL_FREE);
 e" "linee="L back. 07"> 527        if (!(inode6/a>, 6truct  530          7 line" name="L490"> 490<7f="+c7de=wbc" class=} id="L486" class="line" name=7429  7 iteback.c#L491" id="L497back.701" class="lin="+code=wbc" class="sr_boclsync_mode" claswboclef="30"> 530          7  class="line" name="L497n_loc70"L463id="L500" class="line" name="7e=atomic_7ead" class="sref">atomic7read<70ritep="fs/fs+code=inode" class="href="fs/fs-d - no4341"> 531
writeback_single_inode(struct inode *i_state & 7,
 527        if (!(|I_FREL509"> 509        if (inode->7) &&a"fr"_her ef="k.c#L531" id="L531jiffie=sync_mode" clasjiffie=ef="de=nr_to_write" class="sref">n7te &a7p; n7ef="+code7inode" class="sref">inod7-71t; 530        wbc->7/* Don't wss="lempt"f="+code=I_SYNC" class="sname="L533"> 533
 509        if ( 497static int
 498i_riteback.c#L497" id="Lback.c#L532" id="L532" clasname="L533"> 533
revode"530"> 530        out;
 497static intsuper_bs="sref">i_stateuper_bs="swb,
 533 href="fs/fs-writeback.c#L508" id="L508" class="lineame="L533"> 533 530         5137514uper_plinivf="fs/fs-writebagrab_>uper_plinivfan>
 533 509        if (
pppppppp* grab_>uper_plinivf()omay fail "srss="    ornue/sn>
         * 515pppppppp* s_umL504 beritegrabblasba>some.Tsref">inodus >
(         *llllllllpppppppp* r4queueino()oassacong busy r4tryriteire 
ino7e72c#L459" id="L459" class="line" name=llllllllpppppppp*mment">         * unless we have comp7_SYNC" cl7ss="sref">I_SYNC);
<7 href72="+code=sync_mode" class="sreDIRTY" class="sr467 532         530         721 530         57272"L482" class="line" n" id="L486" class="line" name=7=401"> 507ass="line" name="L523"> 723ib" c"L484"_inode()
 533r,
 530         57472ruct uper530" class="lindrop_>uperan>
 533 530        err;
ees/s dire san> tests at/ire ekipofiback_single_inode()p*mment">         * unless we have comp7_inode" c7node" class="sref">inode7/a>-&7t; 509        if ();

) &&a"fr"_her ef="k+c#L531" id="L531HZRTY) &&HZef="k/ 10UL27"> 527        if (!( 530        spin7unloc73="+code=sync_mode" class="sre_WILL_FREE);
 e" "linee="L back. 07"> 527        if (!(7node-> 530        (wb, sp7n_loc73ruct          * unless we have comp7ebac84t;<7 href="+code=i_wb_list" 7lass=73 530        i_st7"L437" cl7ss="line" name="L437"> 47773ruct +code=inode" class="wb" class=d - no4341"> 531
writeback_single_inode(struct  e" "linee="L class="sref">inode *i_rreasoages))
 527        if (!( 4474fs/fsL509"> 509        if (7"L441" class="line" name7"L441741" class="lin);
 e" "linee="L       ng" class="sref">e" "line" name="L453"> e" "linee="L class="sref">inode * 442I_DIRTY) &&
) &&d="L510"NONEe="L class="sref">inode *inode7/a>, 74>(&inode *inode * *n7s="+code=7mapping" class="sref">ma7ping<74="+code=i_state" class="sref">i_st7e=nr_to_w7ite" class="sref">nr_to_7rite<74ruct wb-> 533
 534        ;7);
/* Don't wss="lempt"f="+code=I_SYNC" class="sname="L533"> 533
 534        r"L533" class="line" norL530" class="liniorLwb 530        7 450        int  531
r"L533" class="line" norL530" class="liniorLwb 530        inod7-75"L482" class="inode" class="classass="sref">i_state |=  533
 534        i_sta7e & do75>(& e" "linee="L -aL_FREE);
 e" "linee="L="L534"> 534        mapping, wri7" name="L455"> 455
<7 href75s/fs- id="L486" class="line" name=7e="+code=77" class="line" name="L477"> 477<="fs/fs="fs/fs-writeba_o *
<(struc_dide" class="sref">wode"="L534"> 534         478< *r,
 534        d7/O completion.
 534        7ass="sref">wbc-><7 href761" class="lin=inode" class="global_67 global_67 *rode=I_SYNC" class="s67 534        err =  534        i_sta7ref="fs/fs-writeback.c#L763" i76"L463" class=_WILL_FREE);
         */  an>
< id="L532" clasNR_FILE id="L527" class="linNR_FILE id="Lef="="+"L534"> 534         47476ruct          */  an>
< id="L532" clasNR_UNSTABLE NFS527" class="linNR_UNSTABLE NFSef="="hrefe=inode" class="> * 534            7>ret =  534        wri7.c#L465" id="L465" class7"line76s/fs- id="L486" class="line" name=7-" id="L47" name="L466"> 466
<7 href76" class="sref_WILL_FREE);
wrt"> de" class="sref">wrt"> an>
< id="L532" clas_dide" class="sref">wode" " class="sref">IBDI_RECLAIMABLEde" class="srefBDI_RECLAIMABLEef="="href id="L486" class="line" name=7-=nr_to_w7L468" class="line" name=7L468"76ruct wr67wr67
< id="L532" clas_dide" class="sref">wode" " class="sref">I> * 534         534        d7e
 534        
 534        sp7n_loc77et" c} id="L486" class="line" name=7" id="L477" class="line" name="L477"> 4777"L463id="L500" class="line" name="7"f="+code7ng_tagged(     ef="fs/fs-writeback.c#L455" id="L455" 7e" class=7sref">inode->w,="fs/fs-writeback.c#L455" id="L455" 7eref">wri7inode" class="sref">inod7-77fs/fs-writeback.c#L456" id="*dynly"    flushes/morLriteo it e firss/mbsshoul.g.  i"and leave it there
  *mment">         * unless we have comp7e468" id=7nlock" class="sref">spin7unloc77ruct ="fs/fscong ="+code=writebaibrpan cl_bandwidt
writeback_single_inode(struct ) &&a"fr"_her ef="="L534"> 534        7& ( 509        if (wrpan cl_bandwidt
wrpan cl_bandwidt
an>
< id="L532" clas+code=ret" class="sref" href="fs/fs-writeba_dide" class="sref">wode" "0 "0 "0 "0 "0 "=inode" class="="fr"_her RTY) &&a"fr"_her ef="=="L534"> 534         47378"L463id="L500" class="line" name="7ass="sref7>ret =      ef="fs/fs-writeback.c#L455" id="L455" 7 " class=7"+code=inode" class="sre7">ino78 id="L515" class="line" name* Explico
);
7        return   * Defreti"old":it e firss/her  ins >i_locisynameied, wressrk"   >
  *yname=rit-her  f it e ins addtoss_pance. panst is Leriodicsw id=="L4pco32="fs/fs-writeback.c#L455" id="L455" 7"L488" cl7ss="line" name="L488"> 47879c#L459" id="L459" class="lin* juss/malksdire superbs="s 7"line" name="L490"> 490<7a>       *nd leave it there

 4979class="comment">            * takesc+codes/thitea 67
7494      *dyne-se"srd gapand leave it there


79fs/fs-writeback.c#L456" id="*dyldes_thit_t is takescprecede/cesover e" class="s. pansw="linelleon oras="s ck_sin leave it there
 496  * a c name=">i_locifit ey areoa c attached/s d"old"/mapppanr inode has I_WILL_FREE set, it cannot79="fs/fs-7node" class="sref">inode7/a>, 79  *mment">         * unless we have comp8499  8                    stru8t 
<writeback_single_inode(struct   8 line" name="L490"> 490<8f="+c80="+code=sync_mode" class="sret,
 527        if (!(  8 iteback.c#L491" id="L498back.801" clL509"> 509        if (  8 e has I_WILL_FREE set.<8+code80"L482" class=+code=wbc+code=inode" class="ibra"fr"530" class="linibra"fr"wbn8449  8  class="line" name="L498n_loc80"L463" class=+code=inode" class="e" "line" name="L453"> e" "linee="Ling" class="sref">iorL530" class="liniorLwb e" "linee="Lde=nr_to_write" class="sref">n8459  8 ass="line" name="L494">8read<805L482" class=+code=wbc+code=inode" class="yldestijifn8469  8 class="line" name="L4958 497static int
 498n8479  8 riteback_sb_inodes().n8489  8 me="L496"> 496i_st8te &a8p; n8ef="+code8inode" class="sref">inod8-810uct n8e19  8class="sref">wbc->8 534        wb-> 533
 534        out;
 509        if (  8line" name="L513"> 513     ef="fs/fs-writeback.c#L455" id="L455" 8d="L514" 8lass="line" name="L514">8514                 * ino* Stopsw id=="L4pwckn e" "line has beeat"srsum  8 515         * unless we have comp8* away un8er us.
 e" "linee="L back. 07"> 527        if (!(i_mappf="+codebreak30"> 530        <0"> 530        ino8e82t;     ef="fs/fs-writeback.c#L455" id="L455" 8_SYNC" cl8ss="sref">I_SYNC);
<8 href82fs/fs-writeback.c#L520" id="L520" clpppppppp* B * 821         * Skippppppppp* run f fiver. Stopst emcifit er2" clothes/iorL/s ddn>
 58282iteback.c#L512" id="L512" class="line" name="Ls dirat/e.g. amp;/cs="procela.2" ey"linellebe tos"fr" 508ass="line" name="L523"> 823                 * It's a aftes/thelothes/iorLs areoa c don and leave it there
 58482                 * ino*mment">         * unless we have comp8"" class=8ck.c#L525" id="L525" cla8s="li82
/* Don't wss="lempt"f="+code=I_SYNC" class="sname="L533"> 533
wode" href="fs/fs-writebaiorL_ss="530" class="liniorL_ss="ref"=="L534"> 534        inode8/a>-&8t; 530        <0"> 530             ef="fs/fs-writeback.c#L455" id="L455" 8spin8unloc83fs/fs-writeback.c#L520" id="L520" clpppppppp* F2
8node->         * Skippppppppp* ba*
(         * unless we have comp8ode=wb" c8ass="sref">wb, );
 533
wode"=="L534"> 534        sp8n_loc83>(& 530        err;
         * unless we have comp8oinode" c8riteback.c#L436" id="L438" cla83         *llllllll*/Kpan cl9skipb *skipwe want/sn>
 48783         *llllllll*/includeoa c . We sdirat/nela/a>   sesworLs yieldriteiosany othes/iorL/so wodaree= 4484fs/fs-writeback.c#L520" id="L520" clpppppppp* saf and leave it there
8"L441" class="line" name8"L44184span class="comment">         * Skippppppppp*mment">         * unless we have comp8ode_sync_8omplete() to clear it.
84"L482" class="line" n_WILL_FREE);
 509        if ( 442 509        if (inode8/a>, 84>(&
<_SYNC" class="s67 534         534         *n8s="+code=8mapping" class="sref">ma8ping<84="+code=i_state" class="sref">i_st8e=nr_to_w8ite" class="sref">nr_to_8rite<84ruct 
< id="L532" clas+code=ret" class="sref" href="fs/fs-writeba_dide" class="sref">wode" ",
n8rite;8);
/* Don't wss="lempt"f="+code=I_SYNC" class="sname="L533"> 533
 534        r,
n8r="sref">8 450        int );
 533n8rde_sync_8inode" class="sref">inod8-85"L482" class="line" n"+code=b"inode" class="progtossline" name="L49progtoss98ib" class="_inode()
 533r,
 530        i_sta8e & 0"> 530        do85>(&href="fs/fs-d - no4341"> 531
r,
 530        mapping, wode" ",
n8rriteback8" name="L455"> 455
<8 href85s/fs- id="L486" class="line" name=8e="+code=87" class="line" name="L487"> 485" class="sref">i_mappiinode" class="ibrpan cl_bandwidt
r,
n8r=nr_to_w88" class="line" name="L488"> 485<0"> 530             ef="fs/fs-writeback.c#L455" id="L455" 8a"sref">d8/O completion.
8ass="sref">wbc-><8 href86span class="comment">         * Skippppppppp*e=err = i_sta8ref="fs/fs-writeback.c#L863" i86class="comment">                 * It's a The er is artatofit e curre04 batch do sdd 48486                 * ino* mea it e overa c iorL/isynon apansw= keep looppan asc+cod="fs/fs-writeback.c#L455" id="L455" 8abac84t;<8>ret =  515< ascmads some progtosseo iclea pan "line 2*mment">         * unless we have comp8-" id="L48" name="L466"> 466
<8 href86;n8-=nr_to_w8L468" class="line" name=8L468"86ruct  530             ef="fs/fs-writeback.c#L455" id="L455" 8."sref">d8e
8 write_inode()
         * Skippppppppp*mment">         * unless we have comp8.f="+code8in_lock" class="sref">sp8n_loc87"L482" class="line" n_WILL_FREE);
/* Don't wss="lempt"f="+code=I_SYNC" class="sname="L533"> 533
 534         4787"L463" class="line" n" id="L5break30"> 530             ef="fs/fs-writeback.c#L455" id="L455" 8.bac84t;<8sref">inode->wri8inode" class="sref">inod8-87fs/fs-writeback.c#L456" id="L520" clpppppppp* become availableae2
8&= ~(  L520" clpppppppp* w="linellejuss/busyloop inode has I_WILL_FREE set, it cannot8e468" id=8nlock" class="sref">spin8unloc87         *llllllll*mment">         * unless we have comp8#L479" id8"L479" class="line" name8"L47988t;/* Don't wss="lempt"f="+code=I_SYNC" class="sname="L533"> 533
 509        if (8& (
< id="L532" clas+code=ret" class="sref" href="fs/fs-writeba_dide" class="sref">wode" ",
n8#e=wbc" c8="+code=write_inode" cla8s="sr881" class="line" name="+code=b"inode" class="ass="line" name="L498"> 498i_riteback.c#L497" id="Lback.c#L532" id="L532" clasname="L533"> 533
revode"530"> 530        wb->wb->iline" name="L534"> 534         48388"L463" class="line" n" id="L51inode" class="classass="sref">i_state |=  533
 534        (&         * unless we have comp8#bac84t;<8"+code=inode" class="sre8">ino88 534        wri8/a>);
wb-> 533
 534        8        return  488890uct i_state |=  533
 534        8"line" name="L490"> 490<8a> 534         e" "linee="L -aL_FREE);
 e" "linee="Lde=nr_to_write" class="sref">n8or the in8de has I_WILL_FREE set.<8span>89et" c} id="L486" class="line" name=8oL483" cl8" class="line" name="L498"> 4989"L463id="L500" class="line" name="8oss="sref8lass="line" name="L494">8494     ef="fs/fs-writeback.c#L455" id="L455" 8f" class=8 class="line" name="L4958> 49589 id="L515" class="line" name* R"+codet e nexs/mbref="fs/fs-worLd97"> 49irat/hasef">inodbeeatprocessed ye"and leave it there

89fs/fs-writeback.c#L456" id="*mment">         * unless we have comp8ftate8ame="L496"> 496<="fs/fs        * unless we have comp8f="fs/fs-8node" class="sref">inode8/a>, 89(struc_dide" class="sref">wode"="L534"> 534          9                    stru9t  509        if (  9 line" name="L490"> 490<9f="+c90="+code=sync_,
NULL530" class="linNULLe="Lde=nr_to_write" class="sref">n9429  9 iteback.c#L491" id="L499back.901" cle=nr_to_write" class="sref">n9439  9 e has I_WILL_FREE set.<9+code90"L482" class="inode" class="class="sr_b
wode" href="fs/fs-writebaib#L534" id="L534" claib#L534 name="L534"> 534          9  class="line" name="L499n_loc90"L463" class=_WILL"L508" class="lss="lempt">/* Don't wss="lempt"f="+code=I_SYNC" class="s_dide" class="sref">wode" href="fs/fs-writebaiorL_ss="530" class="liniorL_ss="ref"=="L509"> 509        if (  9 ass="line" name="L494">9read<90ruct ss="lentr">/* Don't wss="lentr"L532" id="L532" clas_dide" class="sref">wode" href="fs/fs-writebaiorL_ss="530" class="liniorL_ss="ref".DIRTY" class="seexs" name="L453"> eexsode" 509"> 509        if (  9 class="line" name="L4959 534          9 riteback_sb_inodes().ss="ldel-d itde" class="srefss="ldel-d itf="+code=I_SYNC" class="snorL530" class="liniorLwb 534          9 me="L496"> 496 &a9p; wode" href="fs/fs-writebaib#L534" id="L534" claib#L534 name="L534"> 534        inod9-910uct  534          9class="sref">wbc->9n9t" class=9sref">out;
  9line" name="L513"> 513            * Add f it e numbertofipot   iallysname=". We s, because each ck.c#L5fs/fs-writeback.c#L455" id="L455" 9t59  9lass="line" name="L514">9514      * ws="s cs="name=">i_lcache f it e +cdeslypan cL534devand leave it there
         * unless we have comp9* away un9er us.
 get_nrr67 534         509        if ((         */  an>
< id="L532" clasNR_FILE id="L527" class="linNR_FILE id="Lef="="+"L534"> 534        ino9e92t;         */  an>
< id="L532" clasNR_UNSTABLE NFS527" class="linNR_UNSTABLE NFSef="="+"L534"> 534          9ss="sref">I_SYNC);
<9 href92="+code=sync_mode" cl="fs/fs-writebaget_nrr67 534         921 59292"L482"L534"> 534         509ass="line" name="L523"> 923writeback_single_inode(struct  534         59492 509        if ();
 533
wode"=="L509"> 509        if (
inode9/a>-&9t;);
 e" "linee="L       ng" class="sref">LONG_MAX" name="L453"> LONG_MAXode" 509"> 509        if (I_DIRTY) &&
) &&d="L510"NONEe="L class="sref">inode *spin9unloc93="+code=sync_mode" cl"+code=b.DIRTY" class="sf f_> * *inode *9node->inode *() &&d="REASON_BACKGROUNDe="L class="sref">inode * 509ass="sref">wb, n9o="L514" 9in_lock" class="sref">sp9n_loc93>(&ame=nr_to_write" class="sref">n9o" class=9 href="+code=i_wb_list" 9lass=93
<_SYNC" class="sname="L533"> 533
r"L533" class="line" norL530" class="liniorLwb 530        i_st9"L437" cl9ss="line" name="L437"> 497939uct  530         4494NC" c"L534"> 534        9"L441" class="line" name9"L44194span ="fs/fs+code=inode" class="ibrchere_old_e in_elush" id="L534" claib#chere_old_e in_elushf="+cwriteback_single_inode(struct  534        
94"L482 442 534        inode9/a>, 94>(& e" "linee="L="L534"> 534        err;
ma9ping<94  L520" cl* Wckn set/sn zero, disableaLeriodicsw id=="L4="fs/fs-writeback.c#L455" id="L455" 9sL437" cl9ite" class="sref">nr_to_9rite<94         **mment">         * unless we have comp9rite;9 67 534         530        9 450        int n9rde_sync_9inode" class="sref">inod9-95"L482" class="inode" class="expire.       */i_me="L533"> 533
 534        i_sta9e & 
<_SYNC" class="s67 67 534        do95>(&);
 ter _bef fian>
<_SYNC" class="sjiffie=sync_mode" clasjiffie=ef=" ",
 534        mapping,  530         455
<9 href95s/fs- id="L486" class="line" name=9e="+code=97" class="line" name="L497"> 495" class="sref" class="sref">i_me="L533"> 533
n9r=nr_to_w98" class="line" name="L498"> 495ruct  e" "linee="Ling" class="sref">get_nrr67 get_nrr67 534        
 534         e" "linee="L="L509"> 509        if (9ass="sref">wbc-><9 href961" class="line" name=);
err =  e" "linee="L       ng" class="sref">e" "line" name="L453"> e" "linee="L class="sref">inode *i_sta9ref="fs/fs-writeback.c#L963" i96"L463" class="line" n" class=.DIRTY" class="sref">I_DIRTY) &&
) &&d="L510"NONEe="L class="sref">inode * 49496>(&inode *ret = inode *) &&d="REASON_PERIODICe="L class="sref">inode * 466
<9 href96;n9-=nr_to_w9L468" class="line" name=9L468"96<0"> 530        
<_SYNC" class="sname="L533"> 533
r"L533" class="line" norL530" class="liniorLwb 530        d9e
9 write_inode()
n9.f="+code9in_lock" class="sref">sp9n_loc97"L482" class=="+code030"> 530         4797"L463} id="L486" class="line" name=9.f="+code9ng_tagged(n9.bac84t;<9sref">inode->wri9inode" class="sref">inod9-97fs/fs-writeback.c#L456" id="* R"+rieve iorL/items>skipdoit e 5" id="L4it ey describ#L5fs/fs-writeback.c#L455" id="L455" 9state9&= ~(  *mment">         * unless we have comp9e468" id=9nlock" class="sref">spin9unloc97<+code=inode" class="ibrdoref="fs/fs530" class="linibrdoref="fs/fsf="+cwriteback_single_inode(struct  534         509        if (9& ((struc_dide" class="sref">wode"ing" class="sref">i_me="L533"> 533
wode"30"> 530        ,
 530         530         49398"L463id="L500" class="line" name="9ass="sref9>ret = (&
r"L533" class="line" name="L533"> 533
wode" href="fs/fs-writebat">         */  an>
730"> 530        ino98get_nexs-worL_e hm530" class="linget_nexs-worL_e hmf="+c="fs/fs-writeba_dide" class="sref">wode"=="!ng" class="sref">NULL530" class="linNULLe="L="L509"> 509        if (wri9/a>);
9        return   L520" clpppppppp* Overrids smp;/         *llllllll*/because t is ttebad/isyex
 49899c#L459" id="L459" class="line" name=llllllll*mment">         * unless we have comp9"irty9"line" name="L490"> 490<9a>);
 534        I_DIRTY) &&
 530         534         4999"L463" class="line" n"_FREE);
wode" ",
n9oss="sref9lass="line" name="L494">9494(&ame=nr_to_write" class="sref">n9f" class=9 class="line" name="L4959> 49599i_ref="fs/fs530" class="linibref="fs/fsan>
<_SYNC" class="sname="L533"> 533
r,
n9oref">wri9writeback_sb_inodes().
99s/fs- id="L486" class="line" name=9ftate9ame="L496"> 496i_mappi515" class="line" namef="fs/fs-writeback.c#L455" id="L455" 9f="fs/fs-9node" class="sref">inode9/a>, 99         *llllllll*/Notifyit e callertofier is artatifit isyisya smp;hronouse=  10499<" class="sref">inode10499>1049/a>         *llllllll*/iorL/item, otheswis ejuss/free/itand leave /pre> 37/3e/ea5a0d1dba430ca2c83ba95fa5883393b0b2_3/10499>f="fs/fs-writeback.c#L523" i10419  104line" name="L490"> 490<104li>104fs/fs-writeback.c#L520" id="L520" clpppppppp*mment">         * unless we have comp10429  104iteback.c#L491" id="L49104it>1041" class="line" name=_WILL_FREE);
 6on ode"="L534"> 534          104e has I_WILL_FREE set.<104e >104"L482" class="line" n"+code=b"inode" class="er is a 9 er is a an>
<_SYNC" class="snorL530" class="liniorLwb 6on ode"=de=nr_to_write" class="sref">n10449  104 class="line" name="L49104 c>104"L463" class="line" n0"> 530        104as>104>(& kfreean>
<_SYNC" class="snorL530" class="liniorLwbn10469  104class="line" name="L495104cl>104  104riteback_sb_inodes().104s/fs- id="L486" class="line" name=10489  104me="L496"> 496104" class="sref"515" class="line" namef="fs/fs-writeback.c#L455" id="L455" 10499  104ode" class="sref">inode104od>104         ** Chere/e2  10inode" class="sref">inod10ino>10in/a>         **mment">         * unless we have comp10i19  10class="sref">wbc->10cla>10i="+code=sync_"inode" class="irocl       */i_rchere_old_e in_elush" id="L534" claib#chere_old_e in_elushf="+c_SYNC" class="sname="L533"> 533
n10129  10"fs/fs-writeback.c#L511"10"fs>10i2"+code=sync_"inode" class="irocl       */i_rchere_b * 533
n10139  10sref">out;

r"L533" class="line" name="L533"> 533
wode" href="fs/fs-writebat">         */  an>
730"> 530         51310i"L463id="L500" class="line" name="10i59  10lass="line" name="L514">10las>10i>(& 530        10i6L463} id="L486" class="line" name=10i79  10er us.
  10      ef="fs/fs-writeback.c#L455" id="L455" 10199  10k(  * Handll 5" id="L4iofiname="e in/e2  isy">w. Alsn>
  10=inode" class="sref">ino10=in>10=i/a>  * wakes up/Leriodicallysskipdoes kpan cld style elushpan.>
  10ss="sref">I_SYNC);
<10ss=>10=fs/fs-writeback.c#L520" id="*mment">         * unless we have comp10229  10ass="line" name="L521"> 10ass>10=2"+cod tf="+code=writeba">writeback_s_ttebadde" class="sref">writeback_s_ttebadan>
,
 6 inode"="L534"> 534          10ss="line" name="L522"> 510ss=>10="L482 10ass>10="L463" class=writeback_single_inode(struct  6 inode"30"> 530         510ss=>10=5L463" class=(struc_dide" class="sref">wode"ing" class="sref">i_me="L533"> 533
wode"30"> 530        10= 530          10node" class="sref">inode10nod>10=" class="sref" class="sref">curre04de" class="srefcurre04>
 flage clas|ng" class="sref">PF_SWAPWRITERTY) &&PF_SWAPWRITEode"30"> 530        10=ruct  530        10co"+code=sync_"inode" class="i_me="L533"> 533
jiffie=sync_mode" clasjiffie=ef="de=nr_to_write" class="sref">n10c19  10nlock" class="sref">spin10nlo>10cNC" c"L534"> 534          10node-> ef="fs/fs-writeback.c#L455" id="L455" 10339  10inode(  10ass="sref">wb, 10cclass="comment">                 * I*mment">         * unless we have comp10359  10in_lock" class="sref">sp10in_>10c>(& 534          10 href="+code=i_wb_list" 10 hr>10class="sref">err;
10c7(&wode"=="L534"> 534          10riteback.c#L436" id="L4310rit>10c="+code=i_state" class="sref">i_st10c99  10ss="line" name="L437"> 410ss=>10cruct  kttebad-freezable_should-w"opf="+c="fs/fs-writebaNULL530" class="linNULLe="L=="L509"> 509        if (  10 class="line" name="L43910 cl>10 c class="sref">i_mappi515" class="line" namef="fs/fs-writeback.c#L455" id="L455" 10 19  10" class="line" name="L4410" c>10 fs/fs-writeback.c#L520" id="L520" clpppppppp* Remove own delayld wake-up/ter r, sinceswe areoalebadysswake="fs/fs-writeback.c#L455" id="L455" 10 29  10"L441" class="line" name10"L4>10 span class="comment">         * Skippppppppp*sskipw="linelletake careoofit e preriodicsw id=-="L45="fs/fs-writeback.c#L455" id="L455" 10 39  10omplete() to clear it.10 iteback.c#L512" id="L512" class="line" name="mment">         * unless we have comp10449  10ame="L442"> 44210 "L463" class="line" n"_FREE);
 6el-ter rf="+c"L533" class="line" name="L533"> 533
 wakeup-ter rode"=="L534"> 534          10node" class="sref">inode10nod>10 >(&ame=nr_to_write" class="sref">n10 69  10                    stru10   >10 i_rdoref="fs/fs530" class="linibrdoref="fs/fsf="+c_SYNC" class="sname="L533"> 533
r0e="L534"> 534          10eback_control *10 s/fs- id="L486" class="line" name=10489  10mapping" class="sref">ma10map>10 " class="sref">i_mappiinode" class="traceref="fs/fs-"line-ef="teages))
 534          10ite" class="sref">nr_to_10ite>10 <0"> 530        10);
))
 530        10<="+code=sync_mode" cl"+code=b"inode" class="i_me="L533"> 533
jiffie=sync_mode" clasjiffie=ef="de=nr_to_write" class="sref">n10529  10 450        int 10<1" cle=nr_to_write" class="sref">n10<39  10inode" class="sref">inod10ino>10<"L482" class="line" nDIRTY" class="sret_curre04nt">         */  f="+c_SYNC" class="sTASK_INTERRUPTIBLERTY) &&TASK_INTERRUPTIBLEode"e="L534"> 534          10e & /* Don't wss="lempt"f="+code=I_SYNC" class="s_dide" class="sref">wode" href="fs/fs-writebaiorL_ss="530" class="liniorL_ss="ref"= ||n"inode" class="kttebad-whould-w"op9 kttebad-should-w"opf="+c=="L509"> 509        if (  10do_writepages" class="sr10do_>10<>(&         */  f="+c_SYNC" class="sTASK_RUNNINGRTY) &&TASK_RUNNINGode"e="L534"> 534          10sref">mapping, 10< 530         455
<10" n>10  107" class="line" name="L4107" >10<="+code=i_state" class="sref">i_st10599  108" class="line" name="L4108" >10 533
);
 67 534          10/span>

<_SYNC" class="s67 67 534          10/O completion.
10/="+code=sync_mode" cl"L509"> 509        if (  10ass="sref">wbc-><10ass>10/1" class="line" name="+code=b"515" class="line" namef="fs/fs-writeback.c#L455" id="L455" 10639  10s="sref">err =   10ref="fs/fs-writeback.c#L10ref>10/class="comment">                 * Ie" name=========* ter outsskipsave power. Wckn a/iorL/is queued or="fs/fs-writeback.c#L455" id="L455" 10659  10ss="line" name="L464"> 410ss=>10/           * Ie" name=========* somethrit is madeiname="-swe will be iokkn up inode has I_WILL_FREE set, it cannot10/69  10>ret =          * unless we have comp10679  10.c#L465" id="L465" class10.c#>10/teback.c#L516" id="L555555555"inode" class="cchedulede" class="srefrchedulean>
<730"> 530         466
<10" n>10/;  10L468" class="line" name=10L46>10/ruct   10d="L469" class="line" na10d=">10d="+code=i_state" class="sref">i_st10719  10e
70629   write_inode()
10d1" class="lin_WILL"L508" class="lss="lempt">/* Don't wss="lempt"f="+code=I_SYNC" class="s_dide" class="sref">wode" href="fs/fs-writebaiorL_ss="530" class="liniorL_ss="ref"=="L534"> 534          10in_lock" class="sref">sp10in_>10d"L482" class="line" nDIRTY" class="si_rdoref="fs/fs530" class="linibrdoref="fs/fsf="+c_SYNC" class="sname="L533"> 533
r1730"> 530        10d"L463id="L500" class="line" name="10759  10ng_tagged( traceref="fs/fs-ttebad-w"opf="+c="fs/fs-writeba_dide" class="sref">wode"=="L534"> 534          10sref">inode->10d 530        inod10ino>10d7L463} id="L486" class="line" name=10789  10&= ~(i_st10799  10nlock" class="sref">spin10nlo>10d<0"> 530        10"L/a> ef="fs/fs-writeback.c#L455" id="L455" 10819  10& (i_ls.  Ifi`e" "line"line"is zero, 5" id s/fsf=fs/fs-writeback.c#L455" id="L455" 1080629  ="+code=write_inode" cla  ="+>10"span class="comment">       *it e 5hole iorld inode has I_WILL_FREE set, it cannot10839  10ref="fs/fs-writeback.c#L10ref>10"iteback.c#L512" id="L512" clne" nameL520" clpppppppp========*mment">849  10ss="line" name="L483"> 410ss=>10""L463conga="fs/fs-writebawakeup-elusher-ttebad=sync_mode" claswakeup-elusher-ttebad=f="+c+code=inode" class="e" "line" name="L453"> e" "linee="L, enumnDIRTY" class="si_rr4asoages))
 534          10>ret =  509        if (  10"+code=inode" class="sre10"+c>10"(struc_dide" class="sref">wode"30"> 530        >10"s/fs- id="L486" class="line" name=10889  10        return 10"8" class="lin_WILL"L508" class="le" "line" name="L453"> e" "linee="L="L509"> 509        if (  10riteback.c#L487" id="L4810rit>10"ruct  e" "linee="Ling" class="sref">global_"linnt">         */  an>
< id="L532" clasNR_FILE id="L527" class="linNR_FILE id="Lef="="+"L534"> 534          10ss="line" name="L488"> 410ss=>10sseback.c#L516" id="L555555555"+code=b"L508" class="lglobal_"linnt">         */  an>
< id="L532" clasNR_UNSTABLE NFS527" class="linNR_UNSTABLE NFSef="=30"> 530         490<10"li>10s1(&  riteback.c#L491" id="L49  rit>10s1" cle=nr_to_write" class="sref">n10939  10de has I_WILL_FREE set.<10de >10s"L482" class="inode" class="rcu_ebad-L534" id="L534" clarcu_ebad-L534an>
<730"> 530        10s4L482" class="inode" class="ss="lf f_eachlentr"_rcu>/* Don't wss="lf f_eachlentr"_rcuf="+c="fs/fs-writeba_dide" class="sref">wode">r"L533" class="line" ">wrss="530" class="lin">wrss="ode">r" class="line" ">wrss="530" class="lin">wrss="ode"="L509"> 509        if (  10lass="line" name="L494">10las>10s>(&wrhasr67wrhasr67wode"=="L534"> 534          10 class="line" name="L49510 cl>10s 530        __">wrw"fr"ref="fs/fs530" class="lin__">wrw"fr"ref="fs/fsf="+c="fs/fs-writeba_dide" class="sref">wode">r=inode" class="e" "line" name="L453"> e" "linee="L, =inode" class="fals        */ 530         49610s;  10node" class="sref">inode10nod>10sruct 
<730"> 530        inode11499>110c#L45} id="L486" class="line" name=11019  114line" name="L490"> 490<114li>110NC" c"L534"> 534          114iteback.c#L491" id="L49114it>110span ="fs/fs=inode" class="eoinL491" name="L453"> eoinL491uct 
< 534          114e has I_WILL_FREE set.<114e >110"L482(struceode(de" class="srefck.c#L5gl href="fs/fs-writebai_eodde" class="srefc_eodL463"||n"inode" class="  533"bdev"" nameL=="L509"> 509        if (  114ass="line" name="L494">114as>114>(&/* Don't wdentr"L532a>,
/* Don't wdentr"L53230"> 530        ,
 e="Le="Ling"k.c#L512" id"?"" nameL30"> 530          114me="L496"> 496110" class="sref">i_mappiinode" class="dentr">/* Don't wdentr"L532aiteback.c#L510" ie_find_aliae" name="L453"> e_find_aliaef="+c="fs/fs-writebaeode(de" class="srefck.c#L5gl730"> 530        inode114od>110ruct /* Don't wdentr"L532="L509"> 509        if (  11inode" class="sref">inod11ino>111s(&/* Don't wdentr"L532de=I_DIRTY" class="sns hre" id="L534" clad-L534an>
730"> 530        wbc->11cla>111="+code=sync_mode" cl"+code=b"inode" class="e="L" name="L453"> e="Le="Ling("srst chara>)piinode" class="dentr">/* Don't wdentr"L532de=I_DIRTY" class="snse="L" name="L453"> nse="LL532.DIRTY" class="se="L" name="L453"> e="Le="L30"> 530        1111" class="line" name=} id="L486" class="line" name=11139  11sref">out;
) &&KERN_DEBUG/fs- id="L486" class="line" name=11i49  11line" name="L513"> 513111"L463" class="line" n" class"k.c#L512" id"%s(%d):inameied ck.c# %lu (%s) on %s\n"" nameL class="sref">inode *  11lass="line" name="L514">11las>111>(& task_pinserf="+c="fs/fs-writebacurre04de" class="srefcurre04>
inode *  11 e="Le="L, =inode" class="eode(de" class="srefck.c#L5gl href="fs/fs-writebai_same="L533"> 533 530        111teback.c#L516" id="L5_WILL_FREE);
/* Don't wdentr"L532="L509"> 509        if (  11     i_mappttttttttDIRTY" class="sslass/* Don't wdentr"L532de=I_DIRTY" class="sns hre" id="L534" clad-L534an>
730"> 530        111ruct /* Don't wdentr"L532=30"> 530        ino11=in>112s(&  11ss="sref">I_SYNC);
<11ss=>1121(&  11ass="line" name="L521"> 11ass>11=2"+co} id="L486" class="line" name=11239  11ss="line" name="L522"> 511ss=>112"L482"L534"> 534          11ass="line" name="L523"> 11ass>112class="comment">           /*f="fs/fs-writeback.c#L455" id="L455" 11259  11ss="line" name="L524"> 511ss=>112      *  11ck.c#L525" id="L525" cla11ck.>112 id="L515" class="line" name*  11ned the inode.
112fs/fs-writeback.c#L456" id="* a hre@flage: wrat/kindiofiname="(i.e. I id="L"L510)="fs/fs-writeback.c#L455" id="L455" 11289  11node" class="sref">inode11nod>112  * a hreMarL n cck.c# asiname=. Callers should use marL_eode(r67  11  *      marL_eode(r67  11code=inode" class="sref"11cod>113i/a>  *inode has I_WILL_FREE set, it cannot11319  11nlock" class="sref">spin11nlo>113fs/fs-writeback.c#L520" id="* Putit e ck.c# on t e super "L534"linesiname= ss=" inode has I_WILL_FREE set, it cannot11329  11node->       *inode has I_WILL_FREE set, it cannot11339  11inode(  11ass="sref">wb, 11cclass="comment">            *iname= ss="ionly5_WIitiis hashed or5_WIitiWILers toia "L534dev inode has I_WILL_FREE set, it cannot11359  11in_lock" class="sref">sp11in_>113      *  11 href="+code=i_wb_list" 11 hr>113 id="L515" class="line" name*  11c#L435" id="L435" class=11c#L>113fs/fs-writeback.c#L456" id="*inode has I_WILL_FREE set, it cannot11389  11riteback.c#L436" id="L4311rit>113  * In short,5make sure you hashssky/ck.c#s _bef fi_ you w"fr"5marLpan>
ode has I_WILL_FREE set, it cannot11399  11ss="line" name="L437"> 411ss=>113  * t eminame=.>
ode has I_WILL_FREE set, it cannot11499  11 class="line" name="L43911 cl>114i/a>  *inode has I_WILL_FREE set, it cannot11 19  11" class="line" name="L4411" c>11 fs/fs-writeback.c#L520" id="*/Note/irat/e2  11"L441" class="line" name11"L4>11 span class="comment">       *it e "L534-special ck.c# (/dev/hda1)iitself.  Andit e de=I_nameied_wckn fieldoofinode has I_WILL_FREE set, it cannot11 39  11omplete() to clear it.11 iteback.c#L512" id="L512" cl*it e kernel-_ ternal "L534dev ck.c# repres" isit einame=rit timeoofit einode has I_WILL_FREE set, it cannot11449  11ame="L442"> 442114class="comment">            *i"L534dev"linesi>i_ls.  T isyisywhy/e2  11node" class="sref">inode11nod>114      *<>i_lde=I_maplasgde=I_host, so t e pi_ldname=rit timeoisyrecorded ckit e ckternalinode has I_WILL_FREE set, it cannot11469  11                    stru11   >114 id="L515" class="line" name*<"L534dev ck.c#.>
ode has I_WILL_FREE set, it cannot11479  11eback_control *114fs/fs-writeback.c#L456" id="*e" nameL520" clpppppppp========*mment"1489  11mapping" class="sref">ma11map>11 " claconga="fs/fs-writeba__marL_eode(r67 flage cla="L534"> 534          11ite" class="sref">nr_to_11ite>11  509        if (  11(strucsame="L533"> 533 533 530        115="+code=sync_(struc_dide" class="sref">wode"ing" class="sref">NULL530" class="linNULLe="L30"> 530        n11<39  11inode" class="sref">inod11ino>11<"L482" class=span class="comment"> ef="fs/fs-writeback.c#L455" id="L455" 11549  11e &                  * I* Don"linetpdoit isye2  11do_writepages" class="sr11do_>115           * I*iname= t e ck.c# itself="fs/fs-writeback.c#L455" id="L455" 11569  11sref">mapping, 115 id="L515" class="line" nameL520" cl*e" nameL520" clpppppppp========*mment"1<79  11" name="L455"> 455
<11" n>11);
 flage clas"L533nLL_FREE);
 I id="L"L510L463"|g" class="sref">I id="L"DATAL510" name="L453"> I id="L"DATAL510ode"=="L509"> 509        if (  117" class="line" name="L4117" >115" class="sref">i_mapp_WILL_FREE);
 533 s_opL532de=I_DIRTY" class="sn7 534          118" class="line" name="L4118" >11 533 s_opL532de=I_DIRTY" class="sn7 flage cla=30"> 530        11/s(&  11/O completion.
116NC" c"L534"> 534          11ass="sref">wbc-><11ass>1162"+code=sync_"pan class="comment"> ef="fs/fs-writeback.c#L455" id="L455" 11639  11s="sref">err =   anfs/fs-writeback.c#L455" id="L455" 11649  11ref="fs/fs-writeback.c#L11ref>11/class="comment">                 * I* -- mikulase=  11ss="line" name="L464"> 411ss=>11/           * I*e" nameL520" clpppppppp========*mment"1/69  11>ret =  533 530        116s/fs- id="L486" class="line" name=11689  11" name="L466"> 466
<11" n>116" class="sref"515" class="line" namef acongat e  hrerit ifswe cs="*e" nameL520" clpppppppp========*mment"1/99  11L468" class="line" name=11L46>11/ruct          */  an>
 "L533n"_FREE);
 flage cla= =ng" class="sref">flage" name="L453"> flage cla="L534"> 534          11d="L469" class="line" na11d=">117s(& 530        117NC" c"L534"> 534         1 write_inode()
11d1" class="lin_WIL" class="sref">unlikelade" class="srefunlikela clac="fs/fs-writeba"L534_dumpde" class="sref"L534_dumpode"=="L534"> 534          11in_lock" class="sref">sp11in_>11d"L482" class="line" nDIRTY" class="scL534_dump___marL_eode(r67
<="fs/fs-writebaeode(de" class="srefck.c#L5gl730"> 530        11d"L463id="L500" class="line" name="11759  11ng_tagged(
730"> 530        inode->11d         */  an>
 "L533n"_FREE);
 flage cla= !ng" class="sref">flage" name="L453"> flage cla= L509"> 509        if (  11inode" class="sref">inod11ino>117teback.c#L516" id="L5"srst d tf="+code=writebawasr67 wasr67         */  an>
 "L533n"_FREE);
 530        11d="+code=i_state" class="sref">i_st11799  11nlock" class="sref">spin11nlo>117ruct          */  an>
 |ng" class="sref">flage" name="L453"> flage cla30"> 530        118="+code=i_state" class="sref">i_st11819  11& ( ef="fs/fs-writeback.c#L455" id="L455" 1180629 1="+code=write_inode" cla 1="+>11"span class="comment">                       *  .>
ode has I_WILL_FREE set, it cannot11839  11ref="fs/fs-writeback.c#L11ref>11"iteback.c#L512" id="L512" cl                *  anfs/fs-writeback.c#L455" id="L455" 11849  11ss="line" name="L483"> 411ss=>118class="comment">                 * Ie" name=* super"L534 ss=", based/patatitsit">  .>
ode has I_WILL_FREE set, it cannot11859  11>ret =            * Ie" name=*e" nameL520" clpppppppp========*mment"1"69  11"+code=inode" class="sre11"+c>118         */  an>
 "L533n"_FREE);
 I L510ode"=520" clpppppppp========*mment"1"79  11/a>);
);
 530        i_st11"99  11riteback.c#L487" id="L4811rit>11"ruct  ef="fs/fs-writeback.c#L455" id="L455" 11999  11ss="line" name="L488"> 411ss=>1199/a>         *llllllll*/Only5add valnga(hashed)/ck.c#s toit eisuper"L534"lines="fs/fs-writeback.c#L455" id="L455" 11919  11"line" name="L490"> 490<11"li>119fs/fs-writeback.c#L520" id="L520" clpppppppp* name= ss="   Add "L534dev ck.c#sIasiwell.>
ode has I_WILL_FREE set, it cannot11s0629 1riteback.c#L491" id="L49 1rit>119span class="comment">                       *e" nameL520" clpppppppp========*mment"1939  11de has I_WILL_FREE set.<11de >119"L482" class="line" n_WILL"L508" class="lS_ISBLKde" class="srefS_ISBLKan>
<="fs/fs-writebaeode(de" class="srefck.c#L5gl href="fs/fs-writebai_mde(de" class="srefc_mde(ode"=="L509"> 509        if (  11" class="line" name="L4911" c>119"L463" class="line" n" classt_WILinode(struceode(s  11lass="line" name="L494">11las>11s>(&);
 530          11writeback_sb_inodes().11steback.c#L516" id="L5_WILinode(struceode(de" class="srefck.c#L5gl href="fs/fs-writebai_s">         */  an>
 "L533n"_FREE);
) &&I FREEINGode"=520" clpppppppp========*mment"1989  11ame="L496"> 496119" class="sref">i_mappttttttttgoton"_FREE);
 530        inode11nod>119<0"> 530        inode12499>120c class="sref">i_mappi515" class="line" namef="fs/fs-writeback.c#L455" id="L455" 12019  124line" name="L490"> 490<124li>120fs/fs-writeback.c#L520" id="L520" clpppppppp* IWIt e ck.c# wasialebadystatbr67  124iteback.c#L491" id="L49 24it>120span class="comment">                       *
ode has I_WILL_FREE set, it cannot12439  124e has I_WILL_FREE set.<124e >120iteback.c#L512" id="L512" class="line" name="mment">         * unless we have comp12449  124 class="line" name="L49124 c>120"L463" class="line" n_WILL"L508" class="lwasr67 wasr67 509        if (  124ass="line" name="L494">124as>124>(&i_mappiIRTY" class="scool" name="L453"> cool(&"L508" class="lwakeup-_dide" class="srefwakeup-_diode""iteback.c#L510" ifals        */ 530        i_mappiIRTY" class="scdide" class="sref">wode"ing" class="sref">ck.c#sto-_dide" class="srefck.c#sto-_dian>
<="fs/fs-writebaeode(de" class="srefck.c#L5gl730"> 530          124me="L496"> 496120" class="sref">i_mapp"line" n_WILiIRTY" class="scdi_capref="fs/fs-67wode"=="L509"> 509        if (  124ode" class="sref">inode124od>120ruct i_mappiIRTY" class="sWARNde" class="srefWARN clacL"L508" class="ltest_bi"530" class="lintest_bi" clac="fs/fs-writebaBDI_regs="eredde" class="srefBDI_regs="eredL5gl, ode=I_SYNC" class="s_dide" class="sref">wode" href="fs/fs-writebat">         */  an>
) class="sref">inode *  12inode" class="sref">inod12ino>121s(&i_mappik.c#L512" id"bdi-%sinot regs="ered\n"" nameL piIRTY" class="scdide" class="sref">wode" href="fs/fs-writebae="L" name="L453"> e="Le="L730"> 530        wbc->12cla>121NC" c"L534"> 534          12"fs/fs-writeback.c#L511"12"fs>1211" class="line" name=" n_stat">i_mappik.c#L512" idline" namef="fs/fs-writeback.c#L455" id="L455" 12139  12sref">out;
  12line" name="L513"> 513121class="comment">                 * Ie" name=================* ">w,swe have tonwake-up/t e correspondian>
ode has I_WILL_FREE set, it cannot12159  12lass="line" name="L514">12las>121           * Ie" name=================* ">w ttebad to make sure t caground>
ode has I_WILL_FREE set, it cannot12169  12121fs/fs-writeback.c#L456" id="L520" clpppppppp================*mment">         * unless we have comp12189  12     i_mapptttttttttttttttt_WILL"L508" class="lwb_hasr67wode" href="fs/fs-writebaiame="L533"> 533
  12k( truLe="L30"> 530        ino12=in>122s(&  12ss="sref">I_SYNC);
<12ss=>122NC" c"L534"> 534          12ass="line" name="L521"> 12ass>1221" class="line" name="+code=b"IRTY" class="sslass
730"> 530         512ss=>122"L482" class="line" n"+code=b"IRTY" class="sslass hre" id="L534" claslass href="+code=I_SYNC" class="s_dide" class="sref">wode" href="fs/fs-writebaiame="L533"> 533
 530         12ass>122"L463" class="line" n" classt_SYNC" class="seode(de" class="srefck.c#L5gl href="fs/fs-writebanameied_wcknde" class="srefnameied_wcknode""iteback.c#L510" ijiffie=sync_mode" clasjiffie=ef="de=nr_to_write" class="sref">n12259  12ss="line" name="L524"> 512ss=>122>(&i_mappiIRTY" class="sss="lmove" id="L534" class="lmovef="+code=I_SYNC" class="seode(de" class="srefck.c#L5gl href="fs/fs-writebai__b_ss="530" class="lini__b_ss="L5gl, ode=I_SYNC" class="s_dide" class="sref">wode" href="fs/fs-writebaiame="L533"> 533
n12269  12ck.c#L525" id="L525" cla12ck.>122i_mappiIRTY" class="sslasswode" href="fs/fs-writebaiame="L533"> 533
 530          12node" class="sref">inode12nod>122" class="sref">i_mapp"line" n_WILiIRTY" class="swakeup-_dide" class="srefwakeup-_diode"=520" clpppppppp========*mment"2=99  12i_mappiIRTY" class="s"di_wakeup-ttebad_delayedde" class="sref"di_wakeup-ttebad_delayed clac="fs/fs-writeba"dide" class="sref">wode"=30"> 530        123s(& 530        spin12nlo>123="+code=sync_mode" cl} id="L486" class="line" name=12329  12node->  12inode(  12ass="sref">wb, 1234L482" class="inode" class="slass
730"> 530        sp12in_>123 530        123 id="} id="L486" class="line" name=12379  12c#L435" id="L435" class=12c#L>123fs/fs-"fs/fs-writebaEXPORT_SYMBOL530" class="linEXPORT_SYMBOL clac="fs/fs-writeba__marL_eode(r67 530        i_st12399  12ss="line" name="L437"> 412ss=>123<="fs/fsconga="fs/fs-writebawait_sb_eode(=sync_mode" claswait_sb_eode(= clac(strucsame="L533"> 533  12 class="line" name="L43912 cl>124i/a> 509        if (  12" class="line" name="L4412" c>124="+code=sync_ 530        1241" cle=nr_to_write" class="sref">n12 39  12omplete() to clear it.124"L482" class=span class="comment"> ef="fs/fs-writeback.c#L455" id="L455" 12449  12ame="L442"> 442124class="comment">                    * We need toibe protected agairst t e filesystem gorit from="fs/fs-writeback.c#L455" id="L455" 12459  12node" class="sref">inode12nod>124              * r/o toir/w or5vice versa.>
ode has I_WILL_FREE set, it cannot12469  12                    stru12   >124 id="L515" class="line" name        *mment">         * unless we have comp12479  12eback_control *1247L482" class="inode" class="WARN_ONde" class="srefWARN_ON clacL"L508" class="lrwsem_is-L534edde" class="srefrwsem_is-L534edf="+code=I_SYNC" class="ssame="L533"> 533 530        ma12map>124="+code=i_state" class="sref">i_st12499  12ite" class="sref">nr_to_12ite>124ruct  530        125="+code=i_state" class="sref">i_st12519  12rty;
         * unless we have comp12529  12 450        int 125span class="comment">               * Data cktegwe y smp;. Muss/wait e2i_ls underiwwe have ,ment">         * unless we have comp12539  12inode" class="sref">inod12ino>125iteback.c#L512" id="L512" class="lin*5because t ere may have been5>i_ls nameied bef fisour smp;ment">         * unless we have comp12549  12e &                  * I* call, butiwhich hadiwwe houtsw"fr"ed bef fiswe wwe h itiou" inode has I_WILL_FREE set, it cannot12559  12do_writepages" class="sr12do_>125           * I*iIniwhich case,It e ck.c# may not b# on t e name= ss=", butinode has I_WILL_FREE set, it cannot12569  12sref">mapping, 125 id="L515" class="line" nameL520" cl*swe still have tonwait e2  12" name="L455"> 455
<12" n>125fs/fs-writeback.c#L456" id="L520" cl*mment">         * unless we have comp12589  127" class="line" name="L4127" >125" class="srefDIRTY" class="sss="lf f_eachlentr"" id="L534" class="lf f_eachlentr"an>
<="fs/fs-writebaeode(de" class="srefck.c#L5gl, ode=I_SYNC" class="ssame="L533"> 533 509        if (  128" class="line" name="L4128" >12(strucmaplasgde" class="srefmaplasgode"ing" class="sref">ck.c#de" class="srefck.c#L5gl href="fs/fs-writebai_maplasgde" class="srefi_maplasge="L30"> 530        126="+code=i_state" class="sref">i_st12619  12/O completion.
126="+code=sync_mode" cl"inode" class="slass hre" id="L534" claslass href="+code=I_SYNC" class="seode(de" class="srefck.c#L5gl href="fs/fs-writebai_ hre" id="L534" clai-L534an>
730"> 530        wbc-><12ass>1261" class="line" name=_WILc="fs/fs-writebaeode(de" class="srefck.c#L5gl href="fs/fs-writebai_s">         */  an>
 "L533nLL_FREE);
) &&I FREEINGode"|L_FREE);
) &&I WILL FREEode"|L_FREE);
) &&I NEWode"=="||0"> 530        err = );
 e""linee="Lin= 0=="L509"> 509        if (  12ref="fs/fs-writeback.c#L12ref>126"L463" class="line" n" classt_SYNC" class="sslass
730"> 530         412ss=>126>(&i_mapp"sreinue30"> 530        re>126  12.c#L465" id="L465" class12.c#>126teback.c#L516" id="L51 class="sref">__ige"" id="L534" cla__ige"an>
<="fs/fs-writebaeode(de" class="srefck.c#L5gl730"> 530         466
<12" n>126" class="sref">i_mappiinode" class="slass
730"> 530        126ruct  530        i_st12719  12e
 ef="fs/fs-writeback.c#L455" id="L455" 1270629 2 write_inode()
127span class="comment">                       *  12in_lock" class="sref">sp12in_>127iteback.c#L512" id="L512" cl                *  12" class="line" name="L4712" c>127class="comment">                 * Ie" name=* eode(_sb_ss="l hre.   12ng_tagged(           * Ie" name=* b# holdrit t e  astiWILerence andiwe cannot iputiit underinode has I_WILL_FREE set, it cannot12769  12sref">inode->127 id="L515" class="line" nameL520" clpppppppp* eode(_sb_ss="l hre. Soiwe keep/t e WILerence andi="sref"   clas1/fs-writeback.c#L455" id="WILerence andiass="srefunlikela ode(_sb_3n clasLerence andiass
 455
<12+117892 11&= ~(i_st>  11k(111ructlass="srefck.c#L5gle_inode(strucehref="+code=I_SYNC" class="seode(n>
 |ng" c2ass="sref">flage" name="L253"> 28119<0"> 530   tebaeode(de" class="srefck.c#L5gle_inode(struceode(de" class="srei_mappiinode" class="slass2834an>
730"> 530  (de" class="sre12am/a>_fdata>mappiinode" class=12am/a>_fdata>mapode=ino11k111ruct9  12s="sref">err = 281=2"+co} id="L486" class="line" nam2hreeriwill2placeit e ck.c# on t e ap2ropri28n= 0=="L509"> 509no11k111ruct>((2834an>
730"> 530                   * Ie2 name2*e" nameL520" clppppppstate" class="sref">i_st12499  12ite" class="sref">nr_to_12ite>124ruct );
 I2L510ode"=520"                * unless we +12699  12L468" class="line" name=12L46>126ruct 111ructlass="srefck.c#L5gle_inode(strucehref="+code=I_SYNC" class="seode(ruct 2ef="fs      
ode has I_WILL_FREE set,      11ass="line" name="2pan class=2comment">                2     29finode has I_WILL_FREE set, itef">i_mappass="sL534nr"line"tef">i_map1iteback.c#Lslock" gicann=sync_mode" ca hre11249  11ass="line" name="2preeriwill2ritebai_mde(de" class="sr2fc_md29einode has I_WILL_FREE set, it@sb:>1199/a>  11ass="line" name="2phre. 1199numberL512ef">inef">"lin ca hre11249  11ass="line" name="2ppan class2node(de" class="srefouts<2 hre_29linode has I_WILL_FREE set, it@reason: reason> 442sometef">i_map1woa>  nit512""comment">           * Ie" name========ass="line"2name="L49511 cl>11si_map1on>sometk.c#Lsl12do_isn=sync_mode". No guarante>err  11ass="line" name="2p118892node(de" class="srefouts<2 hre_29n>
ode has I_WILL_FREE set, it12dhmenmc#L4(if15"y)fs-wribetef">ten,15" c &4"> 511115cllass=>mapoda hre11249  11ass="line" name="3+119993 11node" class="sref">ino3e11no30.>
ode has I_WILL_FREE set, i &O FREple 5111512subm">tedp;Oe andiass="srefunlikela ode(_sb_3n cla3c class="s3ef">i_mappi515" class="li3e" na3ef="fs/fs-writeback.c#L455" iI12579  12" name="L455"> 455
<13ialebadyst3tbr67f">i_mappass="sL534nr  12ss="line" naf">i_mappass="sL534nr2ss=>123<="fs/fsconga="fs/fs-writebawait_sb_eode(=sync_mode" claswait_sb_eode(= clacwod3iiti(irat/3ould bebaktbr67
730"> 530         *wod3i4ti(irat/3oitebai_mde(de" class="sr3 name3"mment">         * unlllllllllllllenumte" class="sref">b_reason  12ss="line" nab_reasonment" * 3asr673/aode"class="srefmaplasgode" href="fs3ode""iteba3k.c#L510" ifals        */3/span30e" nameL520" clpppppppp=====DECLARE_COMPLETIOck_cSTAC 11de has I_WILLDECLARE_COMPLETIOck_cSTAC ode=ino11k111ructdonefck.c#L5gle_inodonerucehref="+code=I_SYNC" class="seode3ian>
<="fs3fs-writebaeode(de" class=3srefc30510ode"=520" 123<="fs/fsconga="ab_af">i_mappwoa>  12ss="line" nab_af">i_mappwoa>ment" *  12ss="line" naoa>ment"= class="srefmaplasgode" href="fs3+124793 124riteback_sb_inodes().3/124r3>124s/fs- id="L486" cl_SYNC" class="s_linwod3i924793 ode(de" class="srefouts<3sref"3wode"=="L509"> 509_SYNC" class="s_lync="srefS_ISBLKan>
<="lync="srede"=="L509"> 509wod3" href="fs3fs-writebat">         */<3spanr3>  an>
) class="sref">_SYNC" class="s_tagg"seoss=""line" n"+coLL_FREE
) cla= 1class="s_dide" class="sref">wod3" class="s3s/fs-writebae="L" name="L353"> 31127="+code=i_state" c_SYNC" class="s_donefck.c#L5gle_inodonerucebbbbbbbbbbbbbbbbbbbde6>126ruct wod3"alebadyst3 12class="sref">wbc-&3t12cl3>121NC" c"L534"> 534
) cla9"> 509wod3name=" n_s3at">i_mappik.c#L512" idli3e" na3134an>
730"> 530  _SYNC" class="s_aeason  12ss="line" nreasonmentbbbbbbbbbbbbbbbbbdeSYNC" class="s_aeason  12ss="line" nreasonmentclass="s_dide" class="sref">wod3n4ti(irat/3yisyt e firstiname= ck.c#3e2      }ref="+code=I_SYNC" class="seode3==* ">w,sw3 have tonwake-up/t e corr3spond3134an>
730"> 530        w ttebad to make sure t3cagro3134an>
730"> 530
<="fs/fs-writebaeode(de" clasi_wakeup-ttebad_deshref="+codde6>126ruct          * unless we have comp12479  12eback_control *1247L482" class="inode" class="WARN_ONde" class="srefWARN_ON clacL"L508" class="lrwsem_is-L534edde" class="srefrwsem_is-L534edf="+code=I_SYNC" class="ssame="L533"> 533wode" hr3f="fs/fs-writebaiame="L533"> 5331124="+code=i_state" class="sref=queuepwoa>  12ss="line" nref=queuepwoa>ode=ino11k111ructf_eachlentr"an>
<="fs/fs-writebaeode(de" clasi_wakeup-ttebad_deshref="+c" id="L534" class="lf woa>  12ss="line" naoa>ments="ssame="L533"> 5333truLe="L30"> 5534" class="lf wme="ame=FREple 511  12ss="line" name="ame=FREple 511lass="srefWARN_ON clacL"Ldonefck.c#L5gle_inodonerucehref="+code=I_SYNC" class="seode3ss="sref">3no12=in>122s(&I_SYNC);3<12ss3>122NCWARN_ON clacL"Llass="line" name=12379  12c#L435" id="L435" class=12c#L>1>f">i_mappass="sL534nr  12ss="line" naf">i_mappass="sL534nr2ss=href="+code=I_SYNC" class="seode3same=" n_s3-writebai_ hre" id="L534"3clai-321=2"+co} id="L486" class="line" nam3RTY" class3"sss="l hre" id="L534" cl3ss="l32einode has I_WILL_FREE set,      11ass="line" name="3"iteback.c3L510" ijiffie=sync_mode" 3lasji32einode has I_WILL_FREE set, itaf">i_mappass="sL53 "line"t"tef">i_map1iteback.c#Lslock" gicann=sync_mode" ca hre11249  11ass="line" name="3a.DIRTY" c3ass="sb-671199/a>  11ass="line" name="3RTY" class3"sss="l hre" id="L534" cl3ss="l32 inode has I_WILL_FREE set, it@reason: reason> 442sometef">i_map1woa> me=" nit512""comment">           * Ie" name=======3+122793 12ned the inode.
3a12ne32*inode has I_WILL_FREE set, icomment">           * Ie" name=======3+>wode" hr3swakeup-_dide" class="sre3wakeu32n>
ode has I_WILL_FREE set, itS/a>i_map1on>sometk.c#Lsl12do_isn=sync_mode". No guarante>err  11ass="line" name="3layed clac3"fs/fs-writeba"dide" clas3="sre33.>
ode has I_WILL_FREE set, i 12dhmenmc#L4(if15"y)fs-wribetef">ten,15" c &4"> 511115cllass=>mapoda hre11249  11ass="line" name="3="sref"12c3d>123s(&tedp;Oe andiass="srefunlikela ode(_sb_3n cla3ck" class=3sref">spin12nlo>123="+cod3=sync33f="fs/fs-writeback.c#L455" iI12579  12" name="L455"> 455
<13>  12node<3a>->f">i_mappass="sL53  12ss="line" naf">i_mappass="sL532ss=>123<="fs/fsconga="fs/fs-writebawait_sb_eode(=sync_mode" claswait_sb_eode(= clacb_reason  12ss="line" nab_reasonment" *
730"> 5 href=te" class="sref">f">i_mappass="sL534nr  12ss="line" naf">i_mappass="sL534nr2ss=>ait_sb_eode(= claci_"line" n"+coLL_FREEi_"lineode=ihclait_sb_eode(= caeason  12ss="line" nreasonmentbref="+code=I_SYNC" class="seode3+123593 12in_lock" class="sref">3p12in3>123 530          12c#L435" id="L435" class=12c#L>1>f">i_mappass="sL53  12ss="line" naf">i_mappass="sL532ss=bref="+code=I_SYNC" class="seode3+122793/ade" class="sref__marL_e3de(r63
730"> 530        3 12riteback.c#L436" id="L3312ri33n>
ode has I_WILL_FREE set,      11ass="line" name="3r_b hreL5g3e_inode(strucsame="L533"> 534.>
ode has I_WILL_FREE set, i af">i_mappass="sL534if_idle "line"t"ts/a>i_map1if1noneommentwa                * I* Don"linetpdoit is3"2499 312 class="line" name="L43312 cl34f="fs/fs-writeback.c#L455" iI @sb:>1199/a>  11ass="line" name="3e(ode""ite3ack.c#L510" iNULL530" cla3s="li34f="fs/fs-writeback.c#L455" iIt@reason: reason> 442sometef">i_map1woa> me=" nit512""comment">           * Ie" name=======3+12 293 12"L441" class="line" na3e12"L34finode has I_WILL_FREE set, icomment">           * Ie" name=======3+uts3ef="fs/fs-writeback.c#L455" it125voketaf">i_mappass="sL53 if1nosef">i_map1is curr455lyommentwa e andiass="srefunlikela ode(_sb_3n cla3e protecte3 agairst t e filesystem g3rit f3om="fs/fs-writeback.c#L455" i* Rhref=s 1e="L4f">i_map1wasref="+co, 0 if1nosre>125 id="L515" class="line" nameL5203nt">      3       * r/o toir/w or5vi3e ver3a.>
ode has I_WILL_FREE set, I12579  12" name="L455"> 455
<13   >124 id3"L515" class="line" name 3     3*mment  if ( f">i_mappass="sL534if_idle  12ss="line" naf">i_mappass="sL534if_idle2ss=>123<="fs/fsconga="fs/fs-writebawait_sb_eode(=sync_mode" claswait_sb_eode(= clacb_reason  12ss="line" nab_reasonment" *3a12ma3>124="+code=i_12189  12     i_mappas_prog128"  12ss="line" naf">i_mappas_prog128"ode=ino11k111ructf_eachlentr"an>
<="fs/fs-writebaeode(de" clasi_wakeup-ttebad_deshref="+ce" class="srefmaplasgode" href="fs3_sb_ss="l 3re" id="L534" claeode(_sb3ss="l35119<0"> 530   tebaeode(de" cdown_reaass="inode" clasdown_reaalass="srefWARN_ON clacL"L508" class="lrwsem_is-L534edde" class="srefrwsem_is-L534edf="+code=I_SYNC" clasref="+code=I_SYNC" class="seode3+125993 12i_s>f">i_mappass="sL53  12ss="line" naf">i_mappass="sL532ss=>ait_sb_eode(= clac
730"> 530  (de" class="sreup_reaass="inode" clasup_reaalass="srefWARN_ON clacL"L508" class="lrwsem_is-L534edde" class="srefrwsem_is-L534edf="+code=I_SYNC" clasref="+code=I_SYNC" class="seode3+12 293ait e2i_ls underiw3e hav3534an>
730"> 530   href=t1ref="+code=I_SYNC" class="seode3+utsi_ls nameied bef fi3our s35mment">      } elseef="+code=I_SYNC" class="seode3+ protecte3utsw"fr"ed bef fiswe wwe 3 itio3534an>
730"> 530   href=t0ref="+code=I_SYNC" class="seode3+t">      3 may not b# on t e name= 3s=", 35123 530          12c#L435" id="L435" class=12c#L>1>f">i_mappass="sL534if_idle  12ss="line" naf">i_mappass="sL534if_idle2ss=sref="+code=I_SYNC" class="seode3+fs/fs-wri3s-writeback.c#L456" id="L320" c35/aan>
730"> 530        
ode has I_WILL_FREE set,      11ass="line" name="3"fs/fs-wri3ebai_maplasgde" class="sr3fi_ma36.>
ode has I_WILL_FREE set, i af">i_mappass="sL534nrrif_idle """"""line"t"ts/a>i_map1if1noneommentwa                * I* Don"linetpdoit is3+126993 12/span>
1199/a>  11ass="line" name="3href="fs/f3-writebai_ hre" id="L534"3clai-36f="fs/fs-writeback.c#L455" iIt@nr:>1199numberL512ef">inef">"lin ca hre11249  11ass="line" name="3e"|L_FREE<3a>);
) &3&I NE36finode has I_WILL_FREE set, it@reason: reason> 442sometef">i_map1woa> me=" nit512""comment">           * Ie" name=======3fs-writeba3r"line" name="L453"> e""l3nee="36f="fs/fs-writeback.c#L455" itcomment">           * Ie" name=======3f protecte3-writebai_ hre" id="L534"3clai-36m="fs/fs-writeback.c#L455" i* 25voketaf">i_mappass="sL53 if1nosef">i_map1is curr455lyommentwa e andiass="srefunlikela ode(_sb_3n cla34"> 412ss=3126>(&i_map1wasref="+co, 0 if1nosre>125 id="L515" class="line" nameL5203t = re>126 455
<13"an>
<="fs3fs-writebaeode(de" class=3srefc3.c#L5g  if ( f">i_mappass="sL534nrrif_idle  12ss="line" naf">i_mappass="sL534nr4if_idle2ss=>123<="fs/fsconga="fs/fs-writebawait_sb_eode(=sync_mode" claswait_sb_eode(= clac 455
<13"de" class3-writebai_ hre" id="L534"3clai-3534an>
730"> 530                     unsignedplong/a> *wod3_sb_ss="l 3re" id="L534" claeode(_sb3ss="l37  an>
) class="sref">inode *b_reason  12ss="line" nab_reasonment" *3 12d="L469" class="line" 3a12d=3>127="class="srefmaplasgode" href="fs3="+code=sy3c_mode" cl"pan class="com3ent">3734an>
730"> 512189  12     i_mappas_prog128"  12ss="line" naf">i_mappas_prog128"ode=ino11k111ructf_eachlentr"an>
<="fs/fs-writebaeode(de" clasi_wakeup-ttebad_deshref="+ce" class="srefmaplasgode" href="fs3n"lineeode3"line so it couldn"linetp3ave b3734an>
730"> 530   tebaeode(de" cdown_reaass="inode" clasdown_reaalass="srefWARN_ON clacL"L508" class="lrwsem_is-L534edde" class="srefrwsem_is-L534edf="+code=I_SYNC" clasref="+code=I_SYNC" class="seode3moved from3s_eode(= ss="iwhiliswe dr3ppedi37n= 0=="L509"> 509no11k111ruct>f">i_mappass="sL534nr  12ss="line" naf">i_mappass="sL534nr2ss=>ait_sb_eode(= clac 530  (de" class="sreup_reaass="inode" clasup_reaalass="srefWARN_ON clacL"L508" class="lrwsem_is-L534edde" class="srefrwsem_is-L534edf="+code=I_SYNC" clasref="+code=I_SYNC" class="seode3 e  astiWI3erence andiwe cannot iput3it un37e" nameL520" clpppppp href=t1ref="+code=I_SYNC" class="seode3="l hre. S3iwe keep/t e WILerence an3i="sr37510ode"=520"   elseef="+code=I_SYNC" class="seode3Lerence an3iass
11d="pan0"> 530        flage" name="L353"> 38119  12c#L435" id="L435" class=12c#L>1>f">i_mappass="sL534nrrif_idle  12ss="line" naf">i_mappass="sL534nr4if_idle2ss=sref="+code=I_SYNC" class="seode3n127993 11"L479" class="line" na3e11"L38eeeeeee} id="L486" class="line" nam3="+code=sy3c_mode" cl"pan class="com3ent">38.>
ode has I_WILL_FREE set,      11ass="line" name="3n"lineeode3p;ed,Ijuss/pan cl itsinam3= t">38finode has I_WILL_FREE set, itlync=ass="sL53 """"""line"t"tsync 53 is="co"lineoda hre11249  11ass="line" name="3noved from3placeit e ck.c# on t e ap3ropri38einode has I_WILL_FREE set, it@sb:>1199/a>  11ass="line" name="3nhre. 38m="fs/fs-writeback.c#L455" i* ca hre11249  11ass="line" name="3ne  astiWI3"comment">           * Ie3 name38linode has I_WILL_FREE set, itT/a> &4"> 5111="lins2ng_>1aitsl12dc#L4iteback.c#L5belongtaggeo id="L512" class="line" name==============3L533n"_FRE3);
 I38 inode has I_WILL_FREE set, it=sync_mode".L512" class="line" name==============3Lerence an3node(de" class="srefouts<3 hre_38*inode has I_WILL_FREE set, i12579  12" name="L455"> 455
<13+118893 11        return 123<="fs/fsconga="fs/fs-writebawait_sb_eode(=sync_mode" claswait_sb_eode(= clac39
730"> 5123<="fs/fsconga="ab_af">i_mappwoa>  12ss="line" nab_af">i_mappwoa>ment" *  12ss="line" naoa>ment"= class="srefmaplasgode" href="fs3pan class=3comment">                3     3934an>
730"> 530  _SYNC" class="s_linwod3preeriwill3ritebai_mde(de" class="sr3fc_md39n= 0=="L509"> 509_SYNC" class="s_lync="srefS_ISBLKan>
<="lync="srede"=="L509de(de" class="sreWBriteb_Ak.c#L5gl, _inodewod3phre. 
730"> 530  _SYNC" class="s_nr_"line" n"+coLL_FREE
) cla9de(de" class="sreLONG_MAX" n"+coLL_FREEwod3pe  astiWI3node(de" class="srefouts<3 hre_39e" nameL520" clpppppp_SYNC" class="s_aange_cyclic  12ss="line" nrange_cyclic" nameL= 0class="s_dide" class="sref">wod3p533n"_FRE3name="L49511 cl>11swod3_FREE)3
) &3&I FR39124s/fs- id="L486" cl_SYNC" class="s_aeason  12ss="line" nreasonmentbbbbbbbbbde(de" class="sreWBrREASOckitebc#L5gl, _inodewod3_118893node(de" class="srefouts<3 hre_3934an>
730"> 5}ref="+code=I_SYNC" class="seode4+119994 11node" class="sref">ino4e11no40rean>
730"> 530        i_mappi515" class="li4e" na40125="+code=i_state" class="sref">i_st Noid=aggeo do? i12579  12" name="L455"> 455
<14ialebadyst4tbr67
730"> 51218no11k111ructf_eachlentr"an>
<="fs/fs-writebaeode(de" clasi_wakeup-ttebad_deshref="+codde6>126ruct 
730"> 530   href="+12399  12code=inode" clas4i4ti(irat/4oitebai_mde(de" class="sr4 name4"mment">      (de" class="sreWave comp12479  12eback_control *1247L482" class="inode" class="WARN_ONde" class="srefWARN_ON clacL"L508" class="lrwsem_is-L534edde" class="srefrwsem_is-L534edf="+code=I_SYNC" class="ssame="L533"> 533 4asr674034an>
730"> 530          12ss="line" nref=queuepwoa>ode=ino11k111ructf_eachlentr"an>
<="fs/fs-writebaeode(de" clasi_wakeup-ttebad_deshref="+c" id="L534" class="lf woa>  12ss="line" naoa>ments="ssame="L533"> 533
<="fs4fs-writebaeode(de" class=4srefc40mment">         * unless we wme="ame=FREple 511  12ss="line" name="ame=FREple 511lass="srefWARN_ON clacL"Ldonefck.c#L5gle_inodonerucehref="+code=I_SYNC" class="seode4+124794 124riteback_sb_inodes().4/124r40/aan>
730"> 530        4 ode(de" class="srefouts<4sref"40124="+code=i_state" class="s>i_st12399  12ss="line" name="L437"> 412ss=>ait_sb_eode(= clac         */<4spanr41f="fs       41127="WARN_ON clacL"Llass="line" name=12379  12c#L435" id="L435" class=12c#L>1lync=ass="sL53-L534edf="+code=ync=ass="sL532ss=bref="+code=I_SYNC" class="seode4"alebadyst4 12class="sref">wbc-&4t12cl41ULLe="L30"> 530        i_mappik.c#L512" idli4e" na41finode has I_WILL_FREE set,      11ass="line" name="4n4ti(irat/4yisyt e firstiname= ck.c#4e2i as k.c#L5eo disc ca hre11249  11ass="line" name="4==* ">w,sw4 have tonwake-up/t e corr4spond41einode has I_WILL_FREE set, it@k.c#L: k.c#L5eo ef">i eo disc ca hre11249  11ass="line" name="4=de""iteba4">w ttebad to make sure t4cagro41linode has I_WILL_FREE set, it@sync: whe  12>1199ef">i shs="cibetsynchronous12nonopoda hre11249  11ass="line" name="4pp========4=======* et, i-="L4 happe4s lat41 inode has I_WILL_FREE set, it cannot11379  11c#L435" id="L4354#L456" id=4L520" clpppppppp=========4=====41*inode has I_WILL_FREE set, itT/a> &4"> 5111FREEitslas k.c#L5eo disc iEE d512"ly5121it1is iteba.tT/a> ="L512" class="line" name==============4">wode" hr4f="fs/fs-writebaiame="L534"> 5341n>
ode has I_WILL_FREE set, itprimarily5942.>
ode has I_WILL_FREE set, iL512" class="line" name==============4d class="s4no12=in>122s(&m    ei  12>     te_inr12do_>1k.c#L5o2>m         set ;
I_SYNC);4<12ss42f="fs/fs-writeback.c#L455" iI12579  12" name="L455"> 455
<14same=" n_s4-writebai_ hre" id="L534"4clai-421=2"+  if ( f">i class=mme  12ss="line" naf">i class=mme2ss=>123<="fs/fsconga=" h12 19  12" class="line" name="L4412" c>124="+code=sync_
730"> 5123<="fs/fsconga="ref="ode" hre  12ss="line" nref="ode" hreine" name="L4412" c>1w3  12ss="line" nabment"= 6>126ruct 1teback.c#L516" id="L51 class="s-writebaeode(de" clw3  12ss="line" nabmentref="+code=I_SYNC" class="seode4a.DIRTY" c4ass="sb-67
730"> 5123<="fs/fsconga="af">i_mapp hrerol  12ss="line" naf">i_mapp hrerolment" *wod4+122794 12ned the inode.
4a12ne42124s/fs- id="L486" cl_SYNC" class="s_lync="srefS_ISBLKan>
<="lync="srede"==de(de" class="srelync-L534edf="+code=yncment ?e(de" class="sreWBriteb_Ak.c#L5gl, _inodewod4+>wode" hr4swakeup-_dide" class="sre4wakeu42ode"=="L509"> 509_SYNC" class="s_range_ef="+  12ss="line" nrange_ef="+de"==de0class="s_dide" class="sref">wod4layed clac4"fs/fs-writeba"dide" clas4="sre43  an>
) class="sref">_SYNC" class="s_range_enass="inode" classange_enament"= (de" class="sreLLONG_MAX" n"+coLL_FREEwod4="sref"12c4d>123s(&spin12nlo>123="+cod4=sync43ULLe="L30"> 530          12node<4a>->
730"> 512189  12      = <_cap_af">i_mappiteba" n"+coLL_FREE = <_cap_af">i_mappiteba"L435" class=12c#L>1teback.c#L516" id="L51 class=rucmaplasgde" class="srefmaplasgode"ing" class="sref">ck.)basuper_b hre" id="L534" clasup4outs 509no11k111ruct>bc-L534edf="+codewbcment_SYNC" class="s_nrbtosgode"" n"+coLL_FREE
730"> 530        4 12in_lock" class="sref">4p12in43e" nameL520" clpppppppp=====might_sleep" n"+coLL_FREEf">i_mappsef"les="srefck.c#L5gle_ino>f">i_mappsef"les="sre"L435" class=12c#L>1teback.c#L516" id="L51 class=clait_sb_eode(= cw3  12ss="line" nabment" id="L534" class="lf wbc-L534edf="+codewbcmentbref="+code=I_SYNC" class="seode41122794/ade" class="sref__marL_e4de(r64        12c#L435" id="L435" class=12c#L>1>f">i class=mme  12ss="line" naf">i class=mme2ss=bref="+code=I_SYNC" class="seode4r_b hreL5g4e_inode(strucsame="L543"> 544rean>
730"> 530         412 class="line" name="L43412 cl44f="fs/fs-writeback.c#L455"       11ass="line" name="4e(ode""ite4ack.c#L510" iNULL530" cla4s="li44f="fs/fs-writeback.c#L455" iIt=ync=ass=" -tef">i as k.c#L55" clts2ef">inef"disc.L512" class="line" name==============4+12 294 12"L441" class="line" na4e12"L44finode has I_WILL_FREE set, it@k.c#L: o_>1k.c#L5ef"c#L512" id="L512" class="lin*5because t e4+uts4ef="fs/fs-writeback.c#L455" it1@wbc:  hrerols>1199ef">i_map1"srede" id="L512" class="lin*5because t e4+ref="fs/f4 agairst t e filesystem g4rit f4om="fs/fs-writeback.c#L455" i*de" id="L512" class="lin*5because t e4+123594       * r/o toir/w or5vi4e ver4a.>
ode has I_WILL_FREE set, It=ync=ass="()fs-wrief">i as k.c#L55" clts2ef">inef"disc.  Itfs-wrialsode" id="L512" class="lin*5because t e4+2369 4"L515" class="line" name 4     44 inode has I_WILL_FREE set, itcorrec5lyompda>i e_>1k.c#L5onclts2/a>1-wrde" id="L512" class="lin*5because t e4+122794ebas_umou04de" class="sre4s_umo44*inode has I_WILL_FREE set, itmpda>i k.c#Lrucmas/fs-wr.L512" class="line" name==============4+123894 12mapping" class="sref">4a12ma44n>
ode has I_WILL_FREE set, iL512" class="line" name==============4_sb_ss="l 4re" id="L534" claeode(_sb4ss="l45.>
ode has I_WILL_FREE set, i The1254912>m         te_inr12do_>1k.c#L.L512" class="line" name==============4+125994 12  12" name="L455"> 455
<142rty>125="4code=sync_"ef="+code=inod4" cla4534an>  if (syncs="srefck.c#L5gle_inosyncs="sre2ss=>123<="fs/fsconga=" h12 19  12" class="line" name="L4412" c>124="+code=sync_i_mapp hrerol  12ss="line" naf">i_mapp hrerolment"name="L4412" c>1w3c-L534edf="+codewbcmentb>  12" name="L455"> 455
<14212 294ait e2i_ls underiw4e hav4534an>class="srefmaplasgode" href="fs4+utsi_ls nameied bef fi4our s45mment">       href=te" class="sref">f">i_mappsef"les="srefck.c#L5gle_ino>f">i_mappsef"les="sre"L435" class=12c#L>1teback.c#L516" id="L51 class=cl6>126ruct 1teback.c#L516" id="L51 class="s-writebaeode(de" clw3  12ss="line" nabmentclait_sb_eode(= cw3c-L534edf="+codewbcmentbref="+code=I_SYNC" class="seode4+ protecte4utsw"fr"ed bef fiswe wwe 4 itio4534an>            4 may not b# on t e name= 4s=", 45123  12c#L435" id="L435" class=12c#L>1lync=ass="fck.c#L5gle_inosyncs="sre2ss=bref="+code=I_SYNC" class="seode4+2369 4ll have tonwait e2  11ass="line" name="4ode" class4"e_sb_ss="" id="L534" cla4-sbrs45n>
ode has I_WILL_FREE set, It=ync=ass="_metadata -tef">i as k.c#L5eo disc ca hre11249  11ass="line" name="4"fs/fs-wri4ebai_maplasgde" class="sr4fi_ma46.>
ode has I_WILL_FREE set, i @k.c#L: o_>1k.c#L5ef"c#L512" id="L512" class="lin*5because t e4+126994 12/span>
1ait &/O5ef"FREple L.L512" class="line" name==============4href="fs/f4-writebai_ hre" id="L534"4clai-46f="fs/fs-writeback.c#L455" iIL512" class="line" name==============4h12 294a>);
) &4&I NE46finode has I_WILL_FREE set, itWf">i as k.c#L5eo disc2ng_>adj    lts2itebacfs-wr aft12>FREple 511.L512" class="line" name==============4huts e""l4nee="46f="fs/fs-writeback.c#L455" itcomment">           * Ie" name=======4f protecte4-writebai_ hre" id="L534"4clai-46m="fs/fs-writeback.c#L455" i* NotL: onlyo="lins2o_>1actual k.c#L,1nosebaoc512"" data ampo  12>metadata.L512" class="line" name==============4ht">      4126>(&  12" name="L455"> 455
<14t = re>126124="+code=sync_mapode=b>  12" name="L455"> 455
<14"an>
<="fs4fs-writebaeode(de" class=4srefc464>

730"> 5123<="fs/fsconga="af">i_mapp hrerol  12ss="line" naf">i_mapp hrerolment" *_SYNC" class="s_lync="srefS_ISBLKan>
<="lync="srede"==de(de" class="sre>mappiinode" class=>mapode= ?e(de" class="sreWBriteb_Ak.c#L5gl, _inodewod4+127994 12d="L469" class="line" 4a12d=47127="+code=i_state" c_SYNC" class="s_nrbtosgode"" n"+coLL_FREEi_st metadata-onlyoi12579  12" name="L455"> 455
<14="+code=sy4c_mode" cl"pan class="com4ent">4734an>
730"> 5}ref="+code=I_SYNC" class="seode4n"lineeode4"line so it couldn"linetp4ave b471=2"+co} id="L486" class="line" nam4moved from4s_eode(= ss="iwhiliswe dr4ppedi47mment">       href=te" class="sref"syncs="srefck.c#L5gle_inosyncs="sre2ss=>" class=12c#L>1teback.c#L516" id="L51 class=cl6>126ruct   12>r4 e  astiWI4erence andiwe cannot iput4it un47123  12c#L435" id="L435" class=12c#L>1lync=ass="_metadatafck.c#L5gle_inosyncs="sre_metadata2ss=bref="+code=I_SYNC" class="seode4  = 
The1original LXR softwr1f="+code=http://source&amge.net/projects/lxr">LXR "sreuniba"L43,c experief">al vers5111by2f="+code=mailto:lxr@e Wux.no">lxr@e Wux.noment_
lxr.e Wux.no kindlyohostco12y f="+code=http://www.redpill-e Wpro.no">Redpill L Wpro AS"L43,cproviderL512L Wux hrsult=aggng_>opera 511s servicns2since 1995.