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/module.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/kthread.h>
  24#include <linux/freezer.h>
  25#include <linux/writeback.h>
  26#include <linux/blkdev.h>
  27#include <linux/backing-dev.h>
  28#include <linux/buffer_head.h>
  29#include "internal.h"
  30
  31#define inode_to_bdi(inode)     ((inode)->i_mapping->backing_dev_info)
  32
  33/*
  34 * We don't actually have pdflush, but this one is exported though /proc...
  35 */
  36int nr_pdflush_threads;
  37
  38/*
  39 * Passed into wb_writeback(), essentially a subset of writeback_control
  40 */
  41struct wb_writeback_work {
  42        long nr_pages;
  43        struct super_block *sb;
  44        enum writeback_sync_modes sync_mode;
  45        unsigned int for_kupdate:1;
  46        unsigned int range_cyclic:1;
  47        unsigned int for_background:1;
  48
  49        struct list_head list;          /* pending work list */
  50        struct completion *done;        /* set if the caller waits */
  51};
  52
  53/**
  54 * writeback_in_progress - determine whether there is writeback in progress
  55 * @bdi: the device's backing_dev_info structure.
  56 *
  57 * Determine whether there is writeback waiting to be handled against a
  58 * backing device.
  59 */
  60int writeback_in_progress(struct backing_dev_info *bdi)
  61{
  62        return !list_empty(&bdi->work_list);
  63}
  64
  65static void bdi_queue_work(struct backing_dev_info *bdi,
  66                struct wb_writeback_work *work)
  67{
  68        spin_lock(&bdi->wb_lock);
  69        list_add_tail(&work->list, &bdi->work_list);
  70        spin_unlock(&bdi->wb_lock);
  71
  72        /*
  73         * If the default thread isn't there, make sure we add it. When
  74         * it gets created and wakes up, we'll run this work.
  75         */
  76        if (unlikely(list_empty_careful(&bdi->wb_list)))
  77                wake_up_process(default_backing_dev_info.wb.task);
  78        else {
  79                struct bdi_writeback *wb = &bdi->wb;
  80
  81                if (wb->task)
  82                        wake_up_process(wb->task);
  83        }
  84}
  85
  86static void
  87__bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages,
  88                bool range_cyclic, bool for_background)
  89{
  90        struct wb_writeback_work *work;
  91
  92        /*
  93         * This is WB_SYNC_NONE writeback, so if allocation fails just
  94         * wakeup the thread for old dirty data writeback
  95         */
  96        work = kzalloc(sizeof(*work), GFP_ATOMIC);
  97        if (!work) {
  98                if (bdi->wb.task)
  99                        wake_up_process(bdi->wb.task);
 100                return;
 101        }
 102
 103        work->sync_mode = WB_SYNC_NONE;
 104        work->nr_pages  = nr_pages;
 105        work->range_cyclic = range_cyclic;
 106        work->for_background = for_background;
 107
 108        bdi_queue_work(bdi, work);
 109}
 110
 111/**
 112 * bdi_start_writeback - start writeback
 113 * @bdi: the backing device to write from
 114 * @nr_pages: the number of pages to write
 115 *
 116 * Description:
 117 *   This does WB_SYNC_NONE opportunistic writeback. The IO is only
 118 *   started when this function returns, we make no guarentees on
 119 *   completion. Caller need not hold sb s_umount semaphore.
 120 *
 121 */
 122void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages)
 123{
 124        __bdi_start_writeback(bdi, nr_pages, true, false);
 125}
 126
 127/**
 128 * bdi_start_background_writeback - start background writeback
 129 * @bdi: the backing device to write from
 130 *
 131 * Description:
 132 *   This does WB_SYNC_NONE background writeback. The IO is only
 133 *   started when this function returns, we make no guarentees on
 134 *   completion. Caller need not hold sb s_umount semaphore.
 135 */
 136void bdi_start_background_writeback(struct backing_dev_info *bdi)
 137{
 138        __bdi_start_writeback(bdi, LONG_MAX, true, true);
 139}
 140
 141/*
 142 * Redirty an inode: set its when-it-was dirtied timestamp and move it to the
 143 * furthest end of its superblock's dirty-inode list.
 144 *
 145 * Before stamping the inode's ->dirtied_when, we check to see whether it is
 146 * already the most-recently-dirtied inode on the b_dirty list.  If that is
 147 * the case then the inode must have been redirtied while it was being written
 148 * out and we don't reset its dirtied_when.
 149 */
 150static void redirty_tail(struct inode *inode)
 151{
 152        struct bdi_writeback *wb = &inode_to_bdi(inode)->wb;
 153
 154        if (!list_empty(&wb->b_dirty)) {
 155                struct inode *tail;
 156
 157                tail = list_entry(wb->b_dirty.next, struct inode, i_list);
 158                if (time_before(inode->dirtied_when, tail->dirtied_when))
 159                        inode->dirtied_when = jiffies;
 160        }
 161        list_move(&inode->i_list, &wb->b_dirty);
 162}
 163
 164/*
 165 * requeue inode for re-scanning after bdi->b_io list is exhausted.
 166 */
 167static void requeue_io(struct inode *inode)
 168{
 169        struct bdi_writeback *wb = &inode_to_bdi(inode)->wb;
 170
 171        list_move(&inode->i_list, &wb->b_more_io);
 172}
 173
 174static void inode_sync_complete(struct inode *inode)
 175{
 176        /*
 177         * Prevent speculative execution through spin_unlock(&inode_lock);
 178         */
 179        smp_mb();
 180        wake_up_bit(&inode->i_state, __I_SYNC);
 181}
 182
 183static bool inode_dirtied_after(struct inode *inode, unsigned long t)
 184{
 185        bool ret = time_after(inode->dirtied_when, t);
 186#ifndef CONFIG_64BIT
 187        /*
 188         * For inodes being constantly redirtied, dirtied_when can get stuck.
 189         * It _appears_ to be in the future, but is actually in distant past.
 190         * This test is necessary to prevent such wrapped-around relative times
 191         * from permanently stopping the whole bdi writeback.
 192         */
 193        ret = ret && time_before_eq(inode->dirtied_when, jiffies);
 194#endif
 195        return ret;
 196}
 197
 198/*
 199 * Move expired dirty inodes from @delaying_queue to @dispatch_queue.
 200 */
 201static void move_expired_inodes(struct list_head *delaying_queue,
 202                               struct list_head *dispatch_queue,
 203                                unsigned long *older_than_this)
 204{
 205        LIST_HEAD(tmp);
 206        struct list_head *pos, *node;
 207        struct super_block *sb = NULL;
 208        struct inode *inode;
 209        int do_sb_sort = 0;
 210
 211        while (!list_empty(delaying_queue)) {
 212                inode = list_entry(delaying_queue->prev, struct inode, i_list);
 213                if (older_than_this &&
 214                    inode_dirtied_after(inode, *older_than_this))
 215                        break;
 216                if (sb && sb != inode->i_sb)
 217                        do_sb_sort = 1;
 218                sb = inode->i_sb;
 219                list_move(&inode->i_list, &tmp);
 220        }
 221
 222        /* just one sb in list, splice to dispatch_queue and we're done */
 223        if (!do_sb_sort) {
 224                list_splice(&tmp, dispatch_queue);
 225                return;
 226        }
 227
 228        /* Move inodes from one superblock together */
 229        while (!list_empty(&tmp)) {
 230                inode = list_entry(tmp.prev, struct inode, i_list);
 231                sb = inode->i_sb;
 232                list_for_each_prev_safe(pos, node, &tmp) {
 233                        inode = list_entry(pos, struct inode, i_list);
 234                        if (inode->i_sb == sb)
 235                                list_move(&inode->i_list, dispatch_queue);
 236                }
 237        }
 238}
 239
 240/*
 241 * Queue all expired dirty inodes for io, eldest first.
 242 */
 243static void queue_io(struct bdi_writeback *wb, unsigned long *older_than_this)
 244{
 245        list_splice_init(&wb->b_more_io, wb->b_io.prev);
 246        move_expired_inodes(&wb->b_dirty, &wb->b_io, older_than_this);
 247}
 248
 249static int write_inode(struct inode *inode, struct writeback_control *wbc)
 250{
 251        if (inode->i_sb->s_op->write_inode && !is_bad_inode(inode))
 252                return inode->i_sb->s_op->write_inode(inode, wbc);
 253        return 0;
 254}
 255
 256/*
 257 * Wait for writeback on an inode to complete.
 258 */
 259static void inode_wait_for_writeback(struct inode *inode)
 260{
 261        DEFINE_WAIT_BIT(wq, &inode->i_state, __I_SYNC);
 262        wait_queue_head_t *wqh;
 263
 264        wqh = bit_waitqueue(&inode->i_state, __I_SYNC);
 265         while (inode->i_state & I_SYNC) {
 266                spin_unlock(&inode_lock);
 267                __wait_on_bit(wqh, &wq, inode_wait, TASK_UNINTERRUPTIBLE);
 268                spin_lock(&inode_lock);
 269        }
 270}
 271
 272/*
 273 * Write out an inode's dirty pages.  Called under inode_lock.  Either the
 274 * caller has ref on the inode (either via __iget or via syscall against an fd)
 275 * or the inode has I_WILL_FREE set (via generic_forget_inode)
 276 *
 277 * If `wait' is set, wait on the writeout.
 278 *
 279 * The whole writeout design is quite complex and fragile.  We want to avoid
 280 * starvation of particular inodes when others are being redirtied, prevent
 281 * livelocks, etc.
 282 *
 283 * Called under inode_lock.
 284 */
 285static int
 286writeback_single_inode(struct inode *inode, struct writeback_control *wbc)
 287{
 288        struct address_space *mapping = inode->i_mapping;
 289        unsigned dirty;
 290        int ret;
 291
 292        if (!atomic_read(&inode->i_count))
 293                WARN_ON(!(inode->i_state & (I_WILL_FREE|I_FREEING)));
 294        else
 295                WARN_ON(inode->i_state & I_WILL_FREE);
 296
 297        if (inode->i_state & I_SYNC) {
 298                /*
 299                 * If this inode is locked for writeback and we are not doing
 300                 * writeback-for-data-integrity, move it to b_more_io so that
 301                 * writeback can proceed with the other inodes on s_io.
 302                 *
 303                 * We'll have another go at writing back this inode when we
 304                 * completed a full scan of b_io.
 305                 */
 306                if (wbc->sync_mode != WB_SYNC_ALL) {
 307                        requeue_io(inode);
 308                        return 0;
 309                }
 310
 311                /*
 312                 * It's a data-integrity sync.  We must wait.
 313                 */
 314                inode_wait_for_writeback(inode);
 315        }
 316
 317        BUG_ON(inode->i_state & I_SYNC);
 318
 319        /* Set I_SYNC, reset I_DIRTY_PAGES */
 320        inode->i_state |= I_SYNC;
 321        inode->i_state &= ~I_DIRTY_PAGES;
 322        spin_unlock(&inode_lock);
 323
 324        ret = do_writepages(mapping, wbc);
 325
 326        /*
 327         * Make sure to wait on the data before writing out the metadata.
 328         * This is important for filesystems that modify metadata on data
 329         * I/O completion.
 330         */
 331        if (wbc->sync_mode == WB_SYNC_ALL) {
 332                int err = filemap_fdatawait(mapping);
 333                if (ret == 0)
 334                        ret = err;
 335        }
 336
 337        /*
 338         * Some filesystems may redirty the inode during the writeback
 339         * due to delalloc, clear dirty metadata flags right before
 340         * write_inode()
 341         */
 342        spin_lock(&inode_lock);
 343        dirty = inode->i_state & I_DIRTY;
 344        inode->i_state &= ~(I_DIRTY_SYNC | I_DIRTY_DATASYNC);
 345        spin_unlock(&inode_lock);
 346        /* Don't write the inode if only I_DIRTY_PAGES was set */
 347        if (dirty & (I_DIRTY_SYNC | I_DIRTY_DATASYNC)) {
 348                int err = write_inode(inode, wbc);
 349                if (ret == 0)
 350                        ret = err;
 351        }
 352
 353        spin_lock(&inode_lock);
 354        inode->i_state &= ~I_SYNC;
 355        if (!(inode->i_state & (I_FREEING | I_CLEAR))) {
 356                if ((inode->i_state & I_DIRTY_PAGES) && wbc->for_kupdate) {
 357                        /*
 358                         * More pages get dirtied by a fast dirtier.
 359                         */
 360                        goto select_queue;
 361                } else if (inode->i_state & I_DIRTY) {
 362                        /*
 363                         * At least XFS will redirty the inode during the
 364                         * writeback (delalloc) and on io completion (isize).
 365                         */
 366                        redirty_tail(inode);
 367                } else if (mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) {
 368                        /*
 369                         * We didn't write back all the pages.  nfs_writepages()
 370                         * sometimes bales out without doing anything. Redirty
 371                         * the inode; Move it from b_io onto b_more_io/b_dirty.
 372                         */
 373                        /*
 374                         * akpm: if the caller was the kupdate function we put
 375                         * this inode at the head of b_dirty so it gets first
 376                         * consideration.  Otherwise, move it to the tail, for
 377                         * the reasons described there.  I'm not really sure
 378                         * how much sense this makes.  Presumably I had a good
 379                         * reasons for doing it this way, and I'd rather not
 380                         * muck with it at present.
 381                         */
 382                        if (wbc->for_kupdate) {
 383                                /*
 384                                 * For the kupdate function we move the inode
 385                                 * to b_more_io so it will get more writeout as
 386                                 * soon as the queue becomes uncongested.
 387                                 */
 388                                inode->i_state |= I_DIRTY_PAGES;
 389select_queue:
 390                                if (wbc->nr_to_write <= 0) {
 391                                        /*
 392                                         * slice used up: queue for next turn
 393                                         */
 394                                        requeue_io(inode);
 395                                } else {
 396                                        /*
 397                                         * somehow blocked: retry later
 398                                         */
 399                                        redirty_tail(inode);
 400                                }
 401                        } else {
 402                                /*
 403                                 * Otherwise fully redirty the inode so that
 404                                 * other inodes on this superblock will get some
 405                                 * writeout.  Otherwise heavy writing to one
 406                                 * file would indefinitely suspend writeout of
 407                                 * all the other files.
 408                                 */
 409                                inode->i_state |= I_DIRTY_PAGES;
 410                                redirty_tail(inode);
 411                        }
 412                } else if (atomic_read(&inode->i_count)) {
 413                        /*
 414                         * The inode is clean, inuse
 415                         */
 416                        list_move(&inode->i_list, &inode_in_use);
 417                } else {
 418                        /*
 419                         * The inode is clean, unused
 420                         */
 421                        list_move(&inode->i_list, &inode_unused);
 422                }
 423        }
 424        inode_sync_complete(inode);
 425        return ret;
 426}
 427
 428/*
 429 * For background writeback the caller does not have the sb pinned
 430 * before calling writeback. So make sure that we do pin it, so it doesn't
 431 * go away while we are writing inodes from it.
 432 */
 433static bool pin_sb_for_writeback(struct super_block *sb)
 434{
 435        spin_lock(&sb_lock);
 436        if (list_empty(&sb->s_instances)) {
 437                spin_unlock(&sb_lock);
 438                return false;
 439        }
 440
 441        sb->s_count++;
 442        spin_unlock(&sb_lock);
 443
 444        if (down_read_trylock(&sb->s_umount)) {
 445                if (sb->s_root)
 446                        return true;
 447                up_read(&sb->s_umount);
 448        }
 449
 450        put_super(sb);
 451        return false;
 452}
 453
 454/*
 455 * Write a portion of b_io inodes which belong to @sb.
 456 *
 457 * If @only_this_sb is true, then find and write all such
 458 * inodes. Otherwise write only ones which go sequentially
 459 * in reverse order.
 460 *
 461 * Return 1, if the caller writeback routine should be
 462 * interrupted. Otherwise return 0.
 463 */
 464static int writeback_sb_inodes(struct super_block *sb, struct bdi_writeback *wb,
 465                struct writeback_control *wbc, bool only_this_sb)
 466{
 467        while (!list_empty(&wb->b_io)) {
 468                long pages_skipped;
 469                struct inode *inode = list_entry(wb->b_io.prev,
 470                                                 struct inode, i_list);
 471
 472                if (inode->i_sb != sb) {
 473                        if (only_this_sb) {
 474                                /*
 475                                 * We only want to write back data for this
 476                                 * superblock, move all inodes not belonging
 477                                 * to it back onto the dirty list.
 478                                 */
 479                                redirty_tail(inode);
 480                                continue;
 481                        }
 482
 483                        /*
 484                         * The inode belongs to a different superblock.
 485                         * Bounce back to the caller to unpin this and
 486                         * pin the next superblock.
 487                         */
 488                        return 0;
 489                }
 490
 491                if (inode->i_state & (I_NEW | I_WILL_FREE)) {
 492                        requeue_io(inode);
 493                        continue;
 494                }
 495                /*
 496                 * Was this inode dirtied after sync_sb_inodes was called?
 497                 * This keeps sync from extra jobs and livelock.
 498                 */
 499                if (inode_dirtied_after(inode, wbc->wb_start))
 500                        return 1;
 501
 502                BUG_ON(inode->i_state & (I_FREEING | I_CLEAR));
 503                __iget(inode);
 504                pages_skipped = wbc->pages_skipped;
 505                writeback_single_inode(inode, wbc);
 506                if (wbc->pages_skipped != pages_skipped) {
 507                        /*
 508                         * writeback is not making progress due to locked
 509                         * buffers.  Skip this inode for now.
 510                         */
 511                        redirty_tail(inode);
 512                }
 513                spin_unlock(&inode_lock);
 514                iput(inode);
 515                cond_resched();
 516                spin_lock(&inode_lock);
 517                if (wbc->nr_to_write <= 0) {
 518                        wbc->more_io = 1;
 519                        return 1;
 520                }
 521                if (!list_empty(&wb->b_more_io))
 522                        wbc->more_io = 1;
 523        }
 524        /* b_io is empty */
 525        return 1;
 526}
 527
 528void writeback_inodes_wb(struct bdi_writeback *wb,
 529                struct writeback_control *wbc)
 530{
 531        int ret = 0;
 532
 533        wbc->wb_start = jiffies; /* livelock avoidance */
 534        spin_lock(&inode_lock);
 535        if (!wbc->for_kupdate || list_empty(&wb->b_io))
 536                queue_io(wb, wbc->older_than_this);
 537
 538        while (!list_empty(&wb->b_io)) {
 539                struct inode *inode = list_entry(wb->b_io.prev,
 540                                                 struct inode, i_list);
 541                struct super_block *sb = inode->i_sb;
 542
 543                if (!pin_sb_for_writeback(sb)) {
 544                        requeue_io(inode);
 545                        continue;
 546                }
 547                ret = writeback_sb_inodes(sb, wb, wbc, false);
 548                drop_super(sb);
 549
 550                if (ret)
 551                        break;
 552        }
 553        spin_unlock(&inode_lock);
 554        /* Leave any unwritten inodes on b_io */
 555}
 556
 557static void __writeback_inodes_sb(struct super_block *sb,
 558                struct bdi_writeback *wb, struct writeback_control *wbc)
 559{
 560        WARN_ON(!rwsem_is_locked(&sb->s_umount));
 561
 562        wbc->wb_start = jiffies; /* livelock avoidance */
 563        spin_lock(&inode_lock);
 564        if (!wbc->for_kupdate || list_empty(&wb->b_io))
 565                queue_io(wb, wbc->older_than_this);
 566        writeback_sb_inodes(sb, wb, wbc, true);
 567        spin_unlock(&inode_lock);
 568}
 569
 570/*
 571 * The maximum number of pages to writeout in a single bdi flush/kupdate
 572 * operation.  We do this so we don't hold I_SYNC against an inode for
 573 * enormous amounts of time, which would block a userspace task which has
 574 * been forced to throttle against that inode.  Also, the code reevaluates
 575 * the dirty each time it has written this many pages.
 576 */
 577#define MAX_WRITEBACK_PAGES     1024
 578
 579static inline bool over_bground_thresh(void)
 580{
 581        unsigned long background_thresh, dirty_thresh;
 582
 583        get_dirty_limits(&background_thresh, &dirty_thresh, NULL, NULL);
 584
 585        return (global_page_state(NR_FILE_DIRTY) +
 586                global_page_state(NR_UNSTABLE_NFS) >= background_thresh);
 587}
 588
 589/*
 590 * Explicit flushing or periodic writeback of "old" data.
 591 *
 592 * Define "old": the first time one of an inode's pages is dirtied, we mark the
 593 * dirtying-time in the inode's address_space.  So this periodic writeback code
 594 * just walks the superblock inode list, writing back any inodes which are
 595 * older than a specific point in time.
 596 *
 597 * Try to run once per dirty_writeback_interval.  But if a writeback event
 598 * takes longer than a dirty_writeback_interval interval, then leave a
 599 * one-second gap.
 600 *
 601 * older_than_this takes precedence over nr_to_write.  So we'll only write back
 602 * all dirty pages if they are all attached to "old" mappings.
 603 */
 604static long wb_writeback(struct bdi_writeback *wb,
 605                         struct wb_writeback_work *work)
 606{
 607        struct writeback_control wbc = {
 608                .sync_mode              = work->sync_mode,
 609                .older_than_this        = NULL,
 610                .for_kupdate            = work->for_kupdate,
 611                .for_background         = work->for_background,
 612                .range_cyclic           = work->range_cyclic,
 613        };
 614        unsigned long oldest_jif;
 615        long wrote = 0;
 616        struct inode *inode;
 617
 618        if (wbc.for_kupdate) {
 619                wbc.older_than_this = &oldest_jif;
 620                oldest_jif = jiffies -
 621                                msecs_to_jiffies(dirty_expire_interval * 10);
 622        }
 623        if (!wbc.range_cyclic) {
 624                wbc.range_start = 0;
 625                wbc.range_end = LLONG_MAX;
 626        }
 627
 628        for (;;) {
 629                /*
 630                 * Stop writeback when nr_pages has been consumed
 631                 */
 632                if (work->nr_pages <= 0)
 633                        break;
 634
 635                /*
 636                 * For background writeout, stop when we are below the
 637                 * background dirty threshold
 638                 */
 639                if (work->for_background && !over_bground_thresh())
 640                        break;
 641
 642                wbc.more_io = 0;
 643                wbc.nr_to_write = MAX_WRITEBACK_PAGES;
 644                wbc.pages_skipped = 0;
 645                if (work->sb)
 646                        __writeback_inodes_sb(work->sb, wb, &wbc);
 647                else
 648                        writeback_inodes_wb(wb, &wbc);
 649                work->nr_pages -= MAX_WRITEBACK_PAGES - wbc.nr_to_write;
 650                wrote += MAX_WRITEBACK_PAGES - wbc.nr_to_write;
 651
 652                /*
 653                 * If we consumed everything, see if we have more
 654                 */
 655                if (wbc.nr_to_write <= 0)
 656                        continue;
 657                /*
 658                 * Didn't write everything and we don't have more IO, bail
 659                 */
 660                if (!wbc.more_io)
 661                        break;
 662                /*
 663                 * Did we write something? Try for more
 664                 */
 665                if (wbc.nr_to_write < MAX_WRITEBACK_PAGES)
 666                        continue;
 667                /*
 668                 * Nothing written. Wait for some inode to
 669                 * become available for writeback. Otherwise
 670                 * we'll just busyloop.
 671                 */
 672                spin_lock(&inode_lock);
 673                if (!list_empty(&wb->b_more_io))  {
 674                        inode = list_entry(wb->b_more_io.prev,
 675                                                struct inode, i_list);
 676                        inode_wait_for_writeback(inode);
 677                }
 678                spin_unlock(&inode_lock);
 679        }
 680
 681        return wrote;
 682}
 683
 684/*
 685 * Return the next wb_writeback_work struct that hasn't been processed yet.
 686 */
 687static struct wb_writeback_work *
 688get_next_work_item(struct backing_dev_info *bdi, struct bdi_writeback *wb)
 689{
 690        struct wb_writeback_work *work = NULL;
 691
 692        spin_lock(&bdi->wb_lock);
 693        if (!list_empty(&bdi->work_list)) {
 694                work = list_entry(bdi->work_list.next,
 695                                  struct wb_writeback_work, list);
 696                list_del_init(&work->list);
 697        }
 698        spin_unlock(&bdi->wb_lock);
 699        return work;
 700}
 701
 702static long wb_check_old_data_flush(struct bdi_writeback *wb)
 703{
 704        unsigned long expired;
 705        long nr_pages;
 706
 707        /*
 708         * When set to zero, disable periodic writeback
 709         */
 710        if (!dirty_writeback_interval)
 711                return 0;
 712
 713        expired = wb->last_old_flush +
 714                        msecs_to_jiffies(dirty_writeback_interval * 10);
 715        if (time_before(jiffies, expired))
 716                return 0;
 717
 718        wb->last_old_flush = jiffies;
 719        nr_pages = global_page_state(NR_FILE_DIRTY) +
 720                        global_page_state(NR_UNSTABLE_NFS) +
 721                        (inodes_stat.nr_inodes - inodes_stat.nr_unused);
 722
 723        if (nr_pages) {
 724                struct wb_writeback_work work = {
 725                        .nr_pages       = nr_pages,
 726                        .sync_mode      = WB_SYNC_NONE,
 727                        .for_kupdate    = 1,
 728                        .range_cyclic   = 1,
 729                };
 730
 731                return wb_writeback(wb, &work);
 732        }
 733
 734        return 0;
 735}
 736
 737/*
 738 * Retrieve work items and do the writeback they describe
 739 */
 740long wb_do_writeback(struct bdi_writeback *wb, int force_wait)
 741{
 742        struct backing_dev_info *bdi = wb->bdi;
 743        struct wb_writeback_work *work;
 744        long wrote = 0;
 745
 746        while ((work = get_next_work_item(bdi, wb)) != NULL) {
 747                /*
 748                 * Override sync mode, in case we must wait for completion
 749                 * because this thread is exiting now.
 750                 */
 751                if (force_wait)
 752                        work->sync_mode = WB_SYNC_ALL;
 753
 754                wrote += wb_writeback(wb, work);
 755
 756                /*
 757                 * Notify the caller of completion if this is a synchronous
 758                 * work item, otherwise just free it.
 759                 */
 760                if (work->done)
 761                        complete(work->done);
 762                else
 763                        kfree(work);
 764        }
 765
 766        /*
 767         * Check for periodic writeback, kupdated() style
 768         */
 769        wrote += wb_check_old_data_flush(wb);
 770
 771        return wrote;
 772}
 773
 774/*
 775 * Handle writeback of dirty data for the device backed by this bdi. Also
 776 * wakes up periodically and does kupdated style flushing.
 777 */
 778int bdi_writeback_task(struct bdi_writeback *wb)
 779{
 780        unsigned long last_active = jiffies;
 781        unsigned long wait_jiffies = -1UL;
 782        long pages_written;
 783
 784        while (!kthread_should_stop()) {
 785                pages_written = wb_do_writeback(wb, 0);
 786
 787                if (pages_written)
 788                        last_active = jiffies;
 789                else if (wait_jiffies != -1UL) {
 790                        unsigned long max_idle;
 791
 792                        /*
 793                         * Longest period of inactivity that we tolerate. If we
 794                         * see dirty data again later, the task will get
 795                         * recreated automatically.
 796                         */
 797                        max_idle = max(5UL * 60 * HZ, wait_jiffies);
 798                        if (time_after(jiffies, max_idle + last_active))
 799                                break;
 800                }
 801
 802                if (dirty_writeback_interval) {
 803                        wait_jiffies = msecs_to_jiffies(dirty_writeback_interval * 10);
 804                        schedule_timeout_interruptible(wait_jiffies);
 805                } else {
 806                        set_current_state(TASK_INTERRUPTIBLE);
 807                        if (list_empty_careful(&wb->bdi->work_list) &&
 808                            !kthread_should_stop())
 809                                schedule();
 810                        __set_current_state(TASK_RUNNING);
 811                }
 812
 813                try_to_freeze();
 814        }
 815
 816        return 0;
 817}
 818
 819/*
 820 * Start writeback of `nr_pages' pages.  If `nr_pages' is zero, write back
 821 * the whole world.
 822 */
 823void wakeup_flusher_threads(long nr_pages)
 824{
 825        struct backing_dev_info *bdi;
 826
 827        if (!nr_pages) {
 828                nr_pages = global_page_state(NR_FILE_DIRTY) +
 829                                global_page_state(NR_UNSTABLE_NFS);
 830        }
 831
 832        rcu_read_lock();
 833        list_for_each_entry_rcu(bdi, &bdi_list, bdi_list) {
 834                if (!bdi_has_dirty_io(bdi))
 835                        continue;
 836                __bdi_start_writeback(bdi, nr_pages, false, false);
 837        }
 838        rcu_read_unlock();
 839}
 840
 841static noinline void block_dump___mark_inode_dirty(struct inode *inode)
 842{
 843        if (inode->i_ino || strcmp(inode->i_sb->s_id, "bdev")) {
 844                struct dentry *dentry;
 845                const char *name = "?";
 846
 847                dentry = d_find_alias(inode);
 848                if (dentry) {
 849                        spin_lock(&dentry->d_lock);
 850                        name = (const char *) dentry->d_name.name;
 851                }
 852                printk(KERN_DEBUG
 853                       "%s(%d): dirtied inode %lu (%s) on %s\n",
 854                       current->comm, task_pid_nr(current), inode->i_ino,
 855                       name, inode->i_sb->s_id);
 856                if (dentry) {
 857                        spin_unlock(&dentry->d_lock);
 858                        dput(dentry);
 859                }
 860        }
 861}
 862
 863/**
 864 *      __mark_inode_dirty -    internal function
 865 *      @inode: inode to mark
 866 *      @flags: what kind of dirty (i.e. I_DIRTY_SYNC)
 867 *      Mark an inode as dirty. Callers should use mark_inode_dirty or
 868 *      mark_inode_dirty_sync.
 869 *
 870 * Put the inode on the super block's dirty list.
 871 *
 872 * CAREFUL! We mark it dirty unconditionally, but move it onto the
 873 * dirty list only if it is hashed or if it refers to a blockdev.
 874 * If it was not hashed, it will never be added to the dirty list
 875 * even if it is later hashed, as it will have been marked dirty already.
 876 *
 877 * In short, make sure you hash any inodes _before_ you start marking
 878 * them dirty.
 879 *
 880 * This function *must* be atomic for the I_DIRTY_PAGES case -
 881 * set_page_dirty() is called under spinlock in several places.
 882 *
 883 * Note that for blockdevs, inode->dirtied_when represents the dirtying time of
 884 * the block-special inode (/dev/hda1) itself.  And the ->dirtied_when field of
 885 * the kernel-internal blockdev inode represents the dirtying time of the
 886 * blockdev's pages.  This is why for I_DIRTY_PAGES we always use
 887 * page->mapping->host, so the page-dirtying time is recorded in the internal
 888 * blockdev inode.
 889 */
 890void __mark_inode_dirty(struct inode *inode, int flags)
 891{
 892        struct super_block *sb = inode->i_sb;
 893
 894        /*
 895         * Don't do this for I_DIRTY_PAGES - that doesn't actually
 896         * dirty the inode itself
 897         */
 898        if (flags & (I_DIRTY_SYNC | I_DIRTY_DATASYNC)) {
 899                if (sb->s_op->dirty_inode)
 900                        sb->s_op->dirty_inode(inode);
 901        }
 902
 903        /*
 904         * make sure that changes are seen by all cpus before we test i_state
 905         * -- mikulas
 906         */
 907        smp_mb();
 908
 909        /* avoid the locking if we can */
 910        if ((inode->i_state & flags) == flags)
 911                return;
 912
 913        if (unlikely(block_dump))
 914                block_dump___mark_inode_dirty(inode);
 915
 916        spin_lock(&inode_lock);
 917        if ((inode->i_state & flags) != flags) {
 918                const int was_dirty = inode->i_state & I_DIRTY;
 919
 920                inode->i_state |= flags;
 921
 922                /*
 923                 * If the inode is being synced, just update its dirty state.
 924                 * The unlocker will place the inode on the appropriate
 925                 * superblock list, based upon its state.
 926                 */
 927                if (inode->i_state & I_SYNC)
 928                        goto out;
 929
 930                /*
 931                 * Only add valid (hashed) inodes to the superblock's
 932                 * dirty list.  Add blockdev inodes as well.
 933                 */
 934                if (!S_ISBLK(inode->i_mode)) {
 935                        if (hlist_unhashed(&inode->i_hash))
 936                                goto out;
 937                }
 938                if (inode->i_state & (I_FREEING|I_CLEAR))
 939                        goto out;
 940
 941                /*
 942                 * If the inode was already on b_dirty/b_io/b_more_io, don't
 943                 * reposition it (that would break b_dirty time-ordering).
 944                 */
 945                if (!was_dirty) {
 946                        struct bdi_writeback *wb = &inode_to_bdi(inode)->wb;
 947                        struct backing_dev_info *bdi = wb->bdi;
 948
 949                        if (bdi_cap_writeback_dirty(bdi) &&
 950                            !test_bit(BDI_registered, &bdi->state)) {
 951                                WARN_ON(1);
 952                                printk(KERN_ERR "bdi-%s not registered\n",
 953                                                                bdi->name);
 954                        }
 955
 956                        inode->dirtied_when = jiffies;
 957                        list_move(&inode->i_list, &wb->b_dirty);
 958                }
 959        }
 960out:
 961        spin_unlock(&inode_lock);
 962}
 963EXPORT_SYMBOL(__mark_inode_dirty);
 964
 965/*
 966 * Write out a superblock's list of dirty inodes.  A wait will be performed
 967 * upon no inodes, all inodes or the final one, depending upon sync_mode.
 968 *
 969 * If older_than_this is non-NULL, then only write out inodes which
 970 * had their first dirtying at a time earlier than *older_than_this.
 971 *
 972 * If `bdi' is non-zero then we're being asked to writeback a specific queue.
 973 * This function assumes that the blockdev superblock's inodes are backed by
 974 * a variety of queues, so all inodes are searched.  For other superblocks,
 975 * assume that all inodes are backed by the same queue.
 976 *
 977 * The inodes to be written are parked on bdi->b_io.  They are moved back onto
 978 * bdi->b_dirty as they are selected for writing.  This way, none can be missed
 979 * on the writer throttling path, and we get decent balancing between many
 980 * throttled threads: we don't want them all piling up on inode_sync_wait.
 981 */
 982static void wait_sb_inodes(struct super_block *sb)
 983{
 984        struct inode *inode, *old_inode = NULL;
 985
 986        /*
 987         * We need to be protected against the filesystem going from
 988         * r/o to r/w or vice versa.
 989         */
 990        WARN_ON(!rwsem_is_locked(&sb->s_umount));
 991
 992        spin_lock(&inode_lock);
 993
 994        /*
 995         * Data integrity sync. Must wait for all pages under writeback,
 996         * because there may have been pages dirtied before our sync
 997         * call, but which had writeout started before we write it out.
 998         * In which case, the inode may not be on the dirty list, but
 999         * we still have to wait for that writeout.
1000         */
1001        list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
1002                struct address_space *mapping;
1003
1004                if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE|I_NEW))
1005                        continue;
1006                mapping = inode->i_mapping;
1007                if (mapping->nrpages == 0)
1008                        continue;
1009                __iget(inode);
1010                spin_unlock(&inode_lock);
1011                /*
1012                 * We hold a reference to 'inode' so it couldn't have
1013                 * been removed from s_inodes list while we dropped the
1014                 * inode_lock.  We cannot iput the inode now as we can
1015                 * be holding the last reference and we cannot iput it
1016                 * under inode_lock. So we keep the reference and iput
1017                 * it later.
1018                 */
1019                iput(old_inode);
1020                old_inode = inode;
1021
1022                filemap_fdatawait(mapping);
1023
1024                cond_resched();
1025
1026                spin_lock(&inode_lock);
1027        }
1028        spin_unlock(&inode_lock);
1029        iput(old_inode);
1030}
1031
1032/**
1033 * writeback_inodes_sb  -       writeback dirty inodes from given super_block
1034 * @sb: the superblock
1035 *
1036 * Start writeback on some inodes on this super_block. No guarantees are made
1037 * on how many (if any) will be written, and this function does not wait
1038 * for IO completion of submitted IO. The number of pages submitted is
1039 * returned.
1040 */
1041void writeback_inodes_sb(struct super_block *sb)
1042{
1043        unsigned long nr_dirty = global_page_state(NR_FILE_DIRTY);
1044        unsigned long nr_unstable = global_page_state(NR_UNSTABLE_NFS);
1045        DECLARE_COMPLETION_ONSTACK(done);
1046        struct wb_writeback_work work = {
1047                .sb             = sb,
1048                .sync_mode      = WB_SYNC_NONE,
1049                .done           = &done,
1050        };
1051
1052        WARN_ON(!rwsem_is_locked(&sb->s_umount));
1053
1054        work.nr_pages = nr_dirty + nr_unstable +
1055                        (inodes_stat.nr_inodes - inodes_stat.nr_unused);
1056
1057        bdi_queue_work(sb->s_bdi, &work);
1058        wait_for_completion(&done);
1059}
1060EXPORT_SYMBOL(writeback_inodes_sb);
1061
1062/**
1063 * writeback_inodes_sb_if_idle  -       start writeback if none underway
1064 * @sb: the superblock
1065 *
1066 * Invoke writeback_inodes_sb if no writeback is currently underway.
1067 * Returns 1 if writeback was started, 0 if not.
1068 */
1069int writeback_inodes_sb_if_idle(struct super_block *sb)
1070{
1071        if (!writeback_in_progress(sb->s_bdi)) {
1072                down_read(&sb->s_umount);
1073                writeback_inodes_sb(sb);
1074                up_read(&sb->s_umount);
1075                return 1;
1076        } else
1077                return 0;
1078}
1079EXPORT_SYMBOL(writeback_inodes_sb_if_idle);
1080
1081/**
1082 * sync_inodes_sb       -       sync sb inode pages
1083 * @sb: the superblock
1084 *
1085 * This function writes and waits on any dirty inode belonging to this
1086 * super_block. The number of pages synced is returned.
1087 */
1088void sync_inodes_sb(struct super_block *sb)
1089{
1090        DECLARE_COMPLETION_ONSTACK(done);
1091        struct wb_writeback_work work = {
1092                .sb             = sb,
1093                .sync_mode      = WB_SYNC_ALL,
1094                .nr_pages       = LONG_MAX,
1095                .range_cyclic   = 0,
1096                .done           = &done,
1097        };
1098
1099        WARN_ON(!rwsem_is_locked(&sb->s_umount));
1100
1101        bdi_queue_work(sb->s_bdi, &work);
1102        wait_for_completion(&done);
1103
1104        wait_sb_inodes(sb);
1105}
1106EXPORT_SYMBOL(sync_inodes_sb);
1107
1108/**
1109 * write_inode_now      -       write an inode to disk
1110 * @inode: inode to write to disk
1111 * @sync: whether the write should be synchronous or not
1112 *
1113 * This function commits an inode to disk immediately if it is dirty. This is
1114 * primarily needed by knfsd.
1115 *
1116 * The caller must either have a ref on the inode or must have set I_WILL_FREE.
1117 */
1118int write_inode_now(struct inode *inode, int sync)
1119{
1120        int ret;
1121        struct writeback_control wbc = {
1122                .nr_to_write = LONG_MAX,
1123                .sync_mode = sync ? WB_SYNC_ALL : WB_SYNC_NONE,
1124                .range_start = 0,
1125                .range_end = LLONG_MAX,
1126        };
1127
1128        if (!mapping_cap_writeback_dirty(inode->i_mapping))
1129                wbc.nr_to_write = 0;
1130
1131        might_sleep();
1132        spin_lock(&inode_lock);
1133        ret = writeback_single_inode(inode, &wbc);
1134        spin_unlock(&inode_lock);
1135        if (sync)
1136                inode_sync_wait(inode);
1137        return ret;
1138}
1139EXPORT_SYMBOL(write_inode_now);
1140
1141/**
1142 * sync_inode - write an inode and its pages to disk.
1143 * @inode: the inode to sync
1144 * @wbc: controls the writeback mode
1145 *
1146 * sync_inode() will write an inode and its pages to disk.  It will also
1147 * correctly update the inode on its superblock's dirty inode lists and will
1148 * update inode->i_state.
1149 *
1150 * The caller must have a ref on the inode.
1151 */
1152int sync_inode(struct inode *inode, struct writeback_control *wbc)
1153{
1154        int ret;
1155
1156        spin_lock(&inode_lock);
1157        ret = writeback_single_inode(inode, wbc);
1158        spin_unlock(&inode_lock);
1159        return ret;
1160}
1161EXPORT_SYMBOL(sync_inode);
1162
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.