10 Oct, 2012

1 commit

  • Pull btrfs update from Chris Mason:
    "This is a large pull, with the bulk of the updates coming from:

    - Hole punching

    - send/receive fixes

    - fsync performance

    - Disk format extension allowing more hardlinks inside a single
    directory (btrfs-progs patch required to enable the compat bit for
    this one)

    I'm cooking more unrelated RAID code, but I wanted to make sure this
    original batch makes it in. The largest updates here are relatively
    old and have been in testing for some time."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (121 commits)
    btrfs: init ref_index to zero in add_inode_ref
    Btrfs: remove repeated eb->pages check in, disk-io.c/csum_dirty_buffer
    Btrfs: fix page leakage
    Btrfs: do not warn_on when we cannot alloc a page for an extent buffer
    Btrfs: don't bug on enomem in readpage
    Btrfs: cleanup pages properly when ENOMEM in compression
    Btrfs: make filesystem read-only when submitting barrier fails
    Btrfs: detect corrupted filesystem after write I/O errors
    Btrfs: make compress and nodatacow mount options mutually exclusive
    btrfs: fix message printing
    Btrfs: don't bother committing delayed inode updates when fsyncing
    btrfs: move inline function code to header file
    Btrfs: remove unnecessary IS_ERR in bio_readpage_error()
    btrfs: remove unused function btrfs_insert_some_items()
    Btrfs: don't commit instead of overcommitting
    Btrfs: confirmation of value is added before trace_btrfs_get_extent() is called
    Btrfs: be smarter about dropping things from the tree log
    Btrfs: don't lookup csums for prealloc extents
    Btrfs: cache extent state when writing out dirty metadata pages
    Btrfs: do not hold the file extent leaf locked when adding extent item
    ...

    Linus Torvalds
     

09 Oct, 2012

1 commit

  • Move actual pte filling for non-linear file mappings into the new special
    vma operation: ->remap_pages().

    Filesystems must implement this method to get non-linear mapping support,
    if it uses filemap_fault() then generic_file_remap_pages() can be used.

    Now device drivers can implement this method and obtain nonlinear vma support.

    Signed-off-by: Konstantin Khlebnikov
    Cc: Alexander Viro
    Cc: Carsten Otte
    Cc: Chris Metcalf #arch/tile
    Cc: Cyrill Gorcunov
    Cc: Eric Paris
    Cc: H. Peter Anvin
    Cc: Hugh Dickins
    Cc: Ingo Molnar
    Cc: James Morris
    Cc: Jason Baron
    Cc: Kentaro Takeda
    Cc: Matt Helsley
    Cc: Nick Piggin
    Cc: Oleg Nesterov
    Cc: Peter Zijlstra
    Cc: Robert Richter
    Cc: Suresh Siddha
    Cc: Tetsuo Handa
    Cc: Venkatesh Pallipadi
    Acked-by: Linus Torvalds
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konstantin Khlebnikov
     

04 Oct, 2012

1 commit

  • I saw the warning in btrfs_drop_extent_cache where our end is less than our
    start while running xfstests 68 in a loop. This is because we
    unconditionally do drop_end = min(end, extent_end) in
    __btrfs_drop_extents(), even though we may not have found an extent in the
    range we were looking to drop. So keep track of wether or not we found
    something, and if we didn't just use our end. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     

02 Oct, 2012

10 commits

  • This reverts commit 0885ef5b5601e9b007c383e77c172769b1f214fd

    After applying the above patch, the performance slowed down because the dirty
    page flush can only be done by one task, so revert it.

    The following is the test result of sysbench:
    Before After
    24MB/s 39MB/s

    Signed-off-by: Miao Xie

    Miao Xie
     
  • We're going to use this flag EXTENT_DEFRAG to indicate which range
    belongs to defragment so that we can implement snapshow-aware defrag:

    We set the EXTENT_DEFRAG flag when dirtying the extents that need
    defragmented, so later on writeback thread can differentiate between
    normal writeback and writeback started by defragmentation.

    Original-Signed-off-by: Li Zefan
    Signed-off-by: Liu Bo

    Liu Bo
     
  • When we ran fsstress(a program in xfstests), the filesystem hung up when it
    is full. It was because the space reserved in btrfs_fallocate() was wrong,
    btrfs_fallocate() just used the size of the pre-allocation to reserve the
    space, didn't took the block size aligning into account, so the size of
    the reserved space was less than the allocated space, it caused the over
    reserve problem and made the filesystem hung up when invoking cow_file_range().
    Fix it.

    Signed-off-by: Miao Xie

    Miao Xie
     
  • We forget to protect ->log_batch when syncing a file, this patch fix
    this problem by atomic operation. And ->log_batch is used to check
    if there are parallel sync operations or not, so it is unnecessary to
    reset it to 0 after the sync operation of the current log tree complete.

    Signed-off-by: Miao Xie

    Miao Xie
     
  • Sometimes we need choose the method of the reservation according to the type
    of the block reservation, such as the reservation for the delayed inode update.
    Now we identify the type just by comparing the address of the reservation
    variants, it is very ugly if it is a temporary one because we need compare it
    with all the common reservation variants. So we add a new "type" field to keep
    the type the reservation variants.

    Signed-off-by: Miao Xie

    Miao Xie
     
  • I noticed this when I was doing the fsync stuff, we allocate split extents if we
    drop an extent range that is in the middle of an existing extent. This BUG()'s
    if we fail to allocate memory, but the fact is this is just a cache, we will
    just regenerate the cache if we need it, the important part is that we free the
    range we are given. This can be done without allocations, so if we fail to
    allocate splits just skip the splitting stage and free our em and look for more
    extents to drop. This also makes btrfs_drop_extent_cache a void since nobody
    was checking the return value anyway. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • This patch adds hole punching via fallocate. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • I audited all users of btrfs_drop_extents and found that nobody actually uses
    the hint_byte argument. I'm sure it was used for something at some point but
    it's not used now, and the way the pinning works the disk bytenr would never be
    immediately useful anyway so lets just remove it. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • At least for the vm workload. Currently on fsync we will

    1) Truncate all items in the log tree for the given inode if they exist

    and

    2) Copy all items for a given inode into the log

    The problem with this is that for things like VMs you can have lots of
    extents from the fragmented writing behavior, and worst yet you may have
    only modified a few extents, not the entire thing. This patch fixes this
    problem by tracking which transid modified our extent, and then when we do
    the tree logging we find all of the extents we've modified in our current
    transaction, sort them and commit them. We also only truncate up to the
    xattrs of the inode and copy that stuff in normally, and then just drop any
    extents in the range we have that exist in the log already. Here are some
    numbers of a 50 meg fio job that does random writes and fsync()s after every
    write

    Original Patched
    SATA drive 82KB/s 140KB/s
    Fusion drive 431KB/s 2532KB/s

    So around 2-6 times faster depending on your hardware. There are a few
    corner cases, for example if you truncate at all we have to do it the old
    way since there is no way to be sure what is in the log is ok. This
    probably could be done smarter, but if you write-fsync-truncate-write-fsync
    you deserve what you get. All this work is in RAM of course so if your
    inode gets evicted from cache and you read it in and fsync it we'll do it
    the slow way if we are still in the same transaction that we last modified
    the inode in.

    The biggest cool part of this is that it requires no changes to the recovery
    code, so if you fsync with this patch and crash and load an old kernel, it
    will run the recovery and be a-ok. I have tested this pretty thoroughly
    with an fsync tester and everything comes back fine, as well as xfstests.
    Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • While working on my fsync patch my fsync tester kept hitting mismatching
    md5sums when I would randomly write to a prealloc'ed region, syncfs() and
    then write to the prealloced region some more and then fsync() and then
    immediately reboot. This is because the tree logging code will skip writing
    csums for file extents who's generation is less than the current running
    transaction. When we mark extents as written we haven't been updating their
    generation so they were always being skipped. This wouldn't happen if you
    were to preallocate and then write in the same transaction, but if you for
    example prealloced a VM you could definitely run into this problem. This
    patch makes my fsync tester happy again. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     

31 Jul, 2012

1 commit

  • We convert btrfs_file_aio_write() to use new freeze check. We also add proper
    freeze protection to btrfs_page_mkwrite(). We also add freeze protection to
    the transaction mechanism to avoid starting transactions on frozen filesystem.
    At minimum this is necessary to stop iput() of unlinked file to change frozen
    filesystem during truncation.

    Checks in cleaner_kthread() and transaction_kthread() can be safely removed
    since btrfs_freeze() will lock the mutexes and thus block the threads (and they
    shouldn't have anything to do anyway).

    CC: linux-btrfs@vger.kernel.org
    CC: Chris Mason
    Signed-off-by: Jan Kara
    Signed-off-by: Al Viro

    Jan Kara
     

06 Jul, 2012

1 commit

  • Pull btrfs updates from Chris Mason:
    "I held off on my rc5 pull because I hit an oops during log recovery
    after a crash. I wanted to make sure it wasn't a regression because
    we have some logging fixes in here.

    It turns out that a commit during the merge window just made it much
    more likely to trigger directory logging instead of full commits,
    which exposed an old bug.

    The new backref walking code got some additional fixes. This should
    be the final set of them.

    Josef fixed up a corner where our O_DIRECT writes and buffered reads
    could expose old file contents (not stale, just not the most recent).
    He and Liu Bo fixed crashes during tree log recover as well.

    Ilya fixed errors while we resume disk balancing operations on
    readonly mounts."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: run delayed directory updates during log replay
    Btrfs: hold a ref on the inode during writepages
    Btrfs: fix tree log remove space corner case
    Btrfs: fix wrong check during log recovery
    Btrfs: use _IOR for BTRFS_IOC_SUBVOL_GETFLAGS
    Btrfs: resume balance on rw (re)mounts properly
    Btrfs: restore restriper state on all mounts
    Btrfs: fix dio write vs buffered read race
    Btrfs: don't count I/O statistic read errors for missing devices
    Btrfs: resolve tree mod log locking issue in btrfs_next_leaf
    Btrfs: fix tree mod log rewind of ADD operations
    Btrfs: leave critical region in btrfs_find_all_roots as soon as possible
    Btrfs: always put insert_ptr modifications into the tree mod log
    Btrfs: fix tree mod log for root replacements at leaf level
    Btrfs: support root level changes in __resolve_indirect_ref
    Btrfs: avoid waiting for delayed refs when we must not

    Linus Torvalds
     

03 Jul, 2012

1 commit

  • Miao pointed out there's a problem with mixing dio writes and buffered
    reads. If the read happens between us invalidating the page range and
    actually locking the extent we can bring in pages into page cache. Then
    once the write finishes if somebody tries to read again it will just find
    uptodate pages and we'll read stale data. So we need to lock the extent and
    check for uptodate bits in the range. If there are uptodate bits we need to
    unlock and invalidate again. This will keep this race from happening since
    we will hold the extent locked until we create the ordered extent, and then
    teh read side always waits for ordered extents. There was also a race in
    how we updated i_size, previously we were relying on the generic DIO stuff
    to adjust the i_size after the DIO had completed, but this happens outside
    of the extent lock which means reads could come in and not see the updated
    i_size. So instead move this work into where we create the extents, and
    then this way the update ordered i_size stuff works properly in the endio
    handlers. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     

02 Jun, 2012

2 commits

  • Pull vfs changes from Al Viro.
    "A lot of misc stuff. The obvious groups:
    * Miklos' atomic_open series; kills the damn abuse of
    ->d_revalidate() by NFS, which was the major stumbling block for
    all work in that area.
    * ripping security_file_mmap() and dealing with deadlocks in the
    area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in
    general.
    * ->encode_fh() switched to saner API; insane fake dentry in
    mm/cleancache.c gone.
    * assorted annotations in fs (endianness, __user)
    * parts of Artem's ->s_dirty work (jff2 and reiserfs parts)
    * ->update_time() work from Josef.
    * other bits and pieces all over the place.

    Normally it would've been in two or three pull requests, but
    signal.git stuff had eaten a lot of time during this cycle ;-/"

    Fix up trivial conflicts in Documentation/filesystems/vfs.txt (the
    'truncate_range' inode method was removed by the VM changes, the VFS
    update adds an 'update_time()' method), and in fs/btrfs/ulist.[ch] (due
    to sparse fix added twice, with other changes nearby).

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)
    nfs: don't open in ->d_revalidate
    vfs: retry last component if opening stale dentry
    vfs: nameidata_to_filp(): don't throw away file on error
    vfs: nameidata_to_filp(): inline __dentry_open()
    vfs: do_dentry_open(): don't put filp
    vfs: split __dentry_open()
    vfs: do_last() common post lookup
    vfs: do_last(): add audit_inode before open
    vfs: do_last(): only return EISDIR for O_CREAT
    vfs: do_last(): check LOOKUP_DIRECTORY
    vfs: do_last(): make ENOENT exit RCU safe
    vfs: make follow_link check RCU safe
    vfs: do_last(): use inode variable
    vfs: do_last(): inline walk_component()
    vfs: do_last(): make exit RCU safe
    vfs: split do_lookup()
    Btrfs: move over to use ->update_time
    fs: introduce inode operation ->update_time
    reiserfs: get rid of resierfs_sync_super
    reiserfs: mark the superblock as dirty a bit later
    ...

    Linus Torvalds
     
  • Btrfs had been doing it's own file_update_time so we could catch ENOSPC
    properly, so just update our btrfs_update_time to work with the new stuff and
    then we'll be fancy later. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     

30 May, 2012

5 commits

  • We have this check down in the actual logging code, but this is after we
    start a transaction and all that good stuff. So move the helper
    inode_in_log() out so we can call it in fsync() and avoid starting a
    transaction altogether and just exit if we've already fsync()'ed this file
    recently. You would notice this issue if you fsync()'ed a file over and
    over again until the transaction committed. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • Two files in the different subvolumes may have the same inode id, so
    The rb-tree which is used to manage the defragment object must take it
    into account. This patch fix this problem.

    Signed-off-by: Miao Xie

    Miao Xie
     
  • Miao pointed this out while I was working on an orphan problem that messing
    with a bitfield where different ranges are protected by different locks
    doesn't work out right. Turns out we've been doing this forever where we
    have different parts of the bit field protected by either no lock at all or
    different locks which could cause all sorts of weird problems including the
    issue I was hitting. So instead make a runtime_flags thing that we use the
    normal bit operations on that are all atomic so we can keep having our
    no/different locking for the different flags and then make force_compress
    it's own thing so it can be treated normally. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • We already do the btrfs_wait_ordered_range which will do this for us, so
    just remove this call so we don't call it twice. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     
  • We've been keeping around the inode sequence number in hopes that somebody
    would use it, but nobody uses it and people actually use i_version which
    serves the same purpose, so use i_version where we used the incore inode's
    sequence number and that way the sequence is updated properly across the
    board, and not just in file write. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     

28 Apr, 2012

1 commit

  • We're spending huge amounts of time on lock contention during
    end_io processing because we unconditionally assume we are overwriting
    an existing extent in the file for each IO.

    This checks to see if we are outside i_size, and if so, it uses a
    less expensive readonly search of the btree to look for existing
    extents.

    Signed-off-by: Chris Mason

    Chris Mason
     

22 Mar, 2012

2 commits


25 Feb, 2012

1 commit

  • Quoth Chris:
    "This is later than I wanted because I got backed up running through
    btrfs bugs from the Oracle QA teams. But they are all bug fixes that
    we've queued and tested since rc1.

    Nothing in particular stands out, this just reflects bug fixing and QA
    done in parallel by all the btrfs developers. The most user visible
    of these is:

    Btrfs: clear the extent uptodate bits during parent transid failures

    Because that helps deal with out of date drives (say an iscsi disk
    that has gone away and come back). The old code wasn't always
    properly retrying the other mirror for this type of failure."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (24 commits)
    Btrfs: fix compiler warnings on 32 bit systems
    Btrfs: increase the global block reserve estimates
    Btrfs: clear the extent uptodate bits during parent transid failures
    Btrfs: add extra sanity checks on the path names in btrfs_mksubvol
    Btrfs: make sure we update latest_bdev
    Btrfs: improve error handling for btrfs_insert_dir_item callers
    Btrfs: be less strict on finding next node in clear_extent_bit
    Btrfs: fix a bug on overcommit stuff
    Btrfs: kick out redundant stuff in convert_extent_bit
    Btrfs: skip states when they does not contain bits to clear
    Btrfs: check return value of lookup_extent_mapping() correctly
    Btrfs: fix deadlock on page lock when doing auto-defragment
    Btrfs: fix return value check of extent_io_ops
    btrfs: honor umask when creating subvol root
    btrfs: silence warning in raid array setup
    btrfs: fix structs where bitfields and spinlock/atomic share 8B word
    btrfs: delalloc for page dirtied out-of-band in fixup worker
    Btrfs: fix memory leak in load_free_space_cache()
    btrfs: don't check DUP chunks twice
    Btrfs: fix trim 0 bytes after a device delete
    ...

    Linus Torvalds
     

15 Feb, 2012

1 commit


01 Feb, 2012

1 commit


18 Jan, 2012

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (62 commits)
    Btrfs: use larger system chunks
    Btrfs: add a delalloc mutex to inodes for delalloc reservations
    Btrfs: space leak tracepoints
    Btrfs: protect orphan block rsv with spin_lock
    Btrfs: add allocator tracepoints
    Btrfs: don't call btrfs_throttle in file write
    Btrfs: release space on error in page_mkwrite
    Btrfs: fix btrfsck error 400 when truncating a compressed
    Btrfs: do not use btrfs_end_transaction_throttle everywhere
    Btrfs: add balance progress reporting
    Btrfs: allow for resuming restriper after it was paused
    Btrfs: allow for canceling restriper
    Btrfs: allow for pausing restriper
    Btrfs: add skip_balance mount option
    Btrfs: recover balance on mount
    Btrfs: save balance parameters to disk
    Btrfs: soft profile changing mode (aka soft convert)
    Btrfs: implement online profile changing
    Btrfs: do not reduce profile in do_chunk_alloc()
    Btrfs: virtual address space subset filter
    ...

    Fix up trivial conflict in fs/btrfs/ioctl.c due to the use of the new
    mnt_drop_write_file() helper.

    Linus Torvalds
     

17 Jan, 2012

2 commits


11 Jan, 2012

2 commits

  • * 'writeback-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
    writeback: move MIN_WRITEBACK_PAGES to fs-writeback.c
    writeback: balanced_rate cannot exceed write bandwidth
    writeback: do strict bdi dirty_exceeded
    writeback: avoid tiny dirty poll intervals
    writeback: max, min and target dirty pause time
    writeback: dirty ratelimit - think time compensation
    btrfs: fix dirtied pages accounting on sub-page writes
    writeback: fix dirtied pages accounting on redirty
    writeback: fix dirtied pages accounting on sub-page writes
    writeback: charge leaked page dirties to active tasks
    writeback: Include all dirty inodes in background writeback

    Linus Torvalds
     
  • Tell the page allocator that pages allocated for a buffered write are
    expected to become dirty soon.

    Signed-off-by: Johannes Weiner
    Reviewed-by: Rik van Riel
    Acked-by: Mel Gorman
    Cc: Minchan Kim
    Cc: Michal Hocko
    Cc: KAMEZAWA Hiroyuki
    Cc: Christoph Hellwig
    Cc: Wu Fengguang
    Cc: Dave Chinner
    Cc: Jan Kara
    Cc: Shaohua Li
    Cc: Chris Mason
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     

22 Dec, 2011

1 commit

  • Add a for_cow parameter to add_delayed_*_ref and pass the appropriate value
    from every call site. The for_cow parameter will later on be used to
    determine if a ref will change anything with respect to qgroups.

    Delayed refs coming from relocation are always counted as for_cow, as they
    don't change subvol quota.

    Also pass in the fs_info for later use.

    btrfs_find_all_roots() will use this as an optimization, as changes that are
    for_cow will not change anything with respect to which root points to a
    certain leaf. Thus, we don't need to add the current sequence number to
    those delayed refs.

    Signed-off-by: Arne Jansen
    Signed-off-by: Jan Schmidt

    Arne Jansen
     

18 Dec, 2011

1 commit

  • When doing 1KB sequential writes to the same page,
    balance_dirty_pages_ratelimited_nr() should be called once instead of 4
    times, the latter makes the dirtier tasks be throttled much too heavy.

    Fix it with proper de-accounting on clear_page_dirty_for_io().

    CC: Chris Mason
    Signed-off-by: Wu Fengguang

    Wu Fengguang
     

17 Dec, 2011

2 commits

  • …inux/kernel/git/mason/linux-btrfs

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: unplug every once and a while
    Btrfs: deal with NULL srv_rsv in the delalloc inode reservation code
    Btrfs: only set cache_generation if we setup the block group
    Btrfs: don't panic if orphan item already exists
    Btrfs: fix leaked space in truncate
    Btrfs: fix how we do delalloc reservations and how we free reservations on error
    Btrfs: deal with enospc from dirtying inodes properly
    Btrfs: fix num_workers_starting bug and other bugs in async thread
    BTRFS: Establish i_ops before calling d_instantiate
    Btrfs: add a cond_resched() into the worker loop
    Btrfs: fix ctime update of on-disk inode
    btrfs: keep orphans for subvolume deletion
    Btrfs: fix inaccurate available space on raid0 profile
    Btrfs: fix wrong disk space information of the files
    Btrfs: fix wrong i_size when truncating a file to a larger size
    Btrfs: fix btrfs_end_bio to deal with write errors to a single mirror

    * 'for-linus-3.2' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    btrfs: lower the dirty balance poll interval

    Linus Torvalds
     
  • Tests show that the original large intervals can easily make the dirty
    limit exceeded on 100 concurrent dd's. So adapt to as large as the
    next check point selected by the dirty throttling algorithm.

    Signed-off-by: Wu Fengguang
    Signed-off-by: Chris Mason

    Wu Fengguang
     

16 Dec, 2011

1 commit

  • Now that we're properly keeping track of delayed inode space we've been getting
    a lot of warnings out of btrfs_dirty_inode() when running xfstest 83. This is
    because a bunch of people call mark_inode_dirty, which is void so we can't
    return ENOSPC. This needs to be fixed in a few areas

    1) file_update_time - this updates the mtime and such when writing to a file,
    which will call mark_inode_dirty. So copy file_update_time into btrfs so we can
    call btrfs_dirty_inode directly and return an error if we get one appropriately.

    2) fix symlinks to use btrfs_setattr for ->setattr. For some reason we weren't
    setting ->setattr for symlinks, even though we should have been. This catches
    one of the cases where we were getting errors in mark_inode_dirty.

    3) Fix btrfs_setattr and btrfs_setsize to call btrfs_dirty_inode directly
    instead of mark_inode_dirty. This lets us return errors properly for truncate
    and chown/anything related to setattr.

    4) Add a new btrfs_fs_dirty_inode which will just call btrfs_dirty_inode and
    print an error if we have one. The only remaining user we can't control for
    this is touch_atime(), but we don't really want to keep people from walking
    down the tree if we don't have space to save the atime update, so just complain
    but don't worry about it.

    With this patch xfstests 83 complains a handful of times instead of hundreds of
    times. Thanks,

    Signed-off-by: Josef Bacik

    Josef Bacik
     

07 Nov, 2011

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs: (114 commits)
    Btrfs: check for a null fs root when writing to the backup root log
    Btrfs: fix race during transaction joins
    Btrfs: fix a potential btrfs_bio leak on scrub fixups
    Btrfs: rename btrfs_bio multi -> bbio for consistency
    Btrfs: stop leaking btrfs_bios on readahead
    Btrfs: stop the readahead threads on failed mount
    Btrfs: fix extent_buffer leak in the metadata IO error handling
    Btrfs: fix the new inspection ioctls for 32 bit compat
    Btrfs: fix delayed insertion reservation
    Btrfs: ClearPageError during writepage and clean_tree_block
    Btrfs: be smarter about committing the transaction in reserve_metadata_bytes
    Btrfs: make a delayed_block_rsv for the delayed item insertion
    Btrfs: add a log of past tree roots
    btrfs: separate superblock items out of fs_info
    Btrfs: use the global reserve when truncating the free space cache inode
    Btrfs: release metadata from global reserve if we have to fallback for unlink
    Btrfs: make sure to flush queued bios if write_cache_pages waits
    Btrfs: fix extent pinning bugs in the tree log
    Btrfs: make sure btrfs_remove_free_space doesn't leak EAGAIN
    Btrfs: don't wait as long for more batches during SSD log commit
    ...

    Linus Torvalds