11 Aug, 2010

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)
    no need for list_for_each_entry_safe()/resetting with superblock list
    Fix sget() race with failing mount
    vfs: don't hold s_umount over close_bdev_exclusive() call
    sysv: do not mark superblock dirty on remount
    sysv: do not mark superblock dirty on mount
    btrfs: remove junk sb_dirt change
    BFS: clean up the superblock usage
    AFFS: wait for sb synchronization when needed
    AFFS: clean up dirty flag usage
    cifs: truncate fallout
    mbcache: fix shrinker function return value
    mbcache: Remove unused features
    add f_flags to struct statfs(64)
    pass a struct path to vfs_statfs
    update VFS documentation for method changes.
    All filesystems that need invalidate_inode_buffers() are doing that explicitly
    convert remaining ->clear_inode() to ->evict_inode()
    Make ->drop_inode() just return whether inode needs to be dropped
    fs/inode.c:clear_inode() is gone
    fs/inode.c:evict() doesn't care about delete vs. non-delete paths now
    ...

    Fix up trivial conflicts in fs/nilfs2/super.c

    Linus Torvalds
     

10 Aug, 2010

5 commits

  • The mbcache code was written to support a variable number of indexes,
    but all the existing users use exactly one index. Simplify to code to
    support only that case.

    There are also no users of the cache entry free operation, and none of
    the users keep extra data in cache entries. Remove those features as
    well.

    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Al Viro

    Andreas Gruenbacher
     
  • pretty much brute-force...

    Signed-off-by: Al Viro

    Al Viro
     
  • Replace inode_setattr with opencoded variants of it in all callers. This
    moves the remaining call to vmtruncate into the filesystem methods where it
    can be replaced with the proper truncate sequence.

    In a few cases it was obvious that we would never end up calling vmtruncate
    so it was left out in the opencoded variant:

    spufs: explicitly checks for ATTR_SIZE earlier
    btrfs,hugetlbfs,logfs,dlmfs: explicitly clears ATTR_SIZE earlier
    ufs: contains an opencoded simple_seattr + truncate that sets the filesize just above

    In addition to that ncpfs called inode_setattr with handcrafted iattrs,
    which allowed to trim down the opencoded variant.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     
  • Split up the block_write_begin implementation - __block_write_begin is a new
    trivial wrapper for block_prepare_write that always takes an already
    allocated page and can be either called from block_write_begin or filesystem
    code that already has a page allocated. Remove the handling of already
    allocated pages from block_write_begin after switching all callers that
    do it to __block_write_begin.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     
  • Move the call to vmtruncate to get rid of accessive blocks to the callers
    in prepearation of the new truncate calling sequence. This was only done
    for DIO_LOCKING filesystems, so the __blockdev_direct_IO_newtrunc variant
    was not needed anyway. Get rid of blockdev_direct_IO_no_locking and
    its _newtrunc variant while at it as just opencoding the two additional
    paramters is shorted than the name suffix.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Al Viro

    Christoph Hellwig
     

08 Aug, 2010

1 commit

  • * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (40 commits)
    ext4: Adding error check after calling ext4_mb_regular_allocator()
    ext4: Fix dirtying of journalled buffers in data=journal mode
    ext4: re-inline ext4_rec_len_(to|from)_disk functions
    jbd2: Remove t_handle_lock from start_this_handle()
    jbd2: Change j_state_lock to be a rwlock_t
    jbd2: Use atomic variables to avoid taking t_handle_lock in jbd2_journal_stop
    ext4: Add mount options in superblock
    ext4: force block allocation on quota_off
    ext4: fix freeze deadlock under IO
    ext4: drop inode from orphan list if ext4_delete_inode() fails
    ext4: check to make make sure bd_dev is set before dereferencing it
    jbd2: Make barrier messages less scary
    ext4: don't print scary messages for allocation failures post-abort
    ext4: fix EFBIG edge case when writing to large non-extent file
    ext4: fix ext4_get_blocks references
    ext4: Always journal quota file modifications
    ext4: Fix potential memory leak in ext4_fill_super
    ext4: Don't error out the fs if the user tries to make a file too big
    ext4: allocate stripe-multiple IOs on stripe boundaries
    ext4: move aio completion after unwritten extent conversion
    ...

    Fix up conflicts in fs/ext4/inode.c as per Ted.

    Fix up xfs conflicts as per earlier xfs merge.

    Linus Torvalds
     

06 Aug, 2010

2 commits

  • If the bitmap block on disk is bad, ext4_mb_load_buddy() returns an
    error. This error is returned to the caller,
    ext4_mb_regular_allocator() and then to ext4_mb_new_blocks(). But
    ext4_mb_new_blocks() did not check for the return value of
    ext4_mb_regular_allocator() and would repeatedly try to load the
    bitmap block. The fix simply catches the return value and exits out of
    the 'repeat' loop after cleanup.

    We also take the opportunity to clean up the error handling in
    ext4_mb_new_blocks().

    Google-Bug-Id: 2853530

    Signed-off-by: Aditya Kali
    Signed-off-by: "Theodore Ts'o"

    Aditya Kali
     
  • In data=journal mode, we still use block_write_begin() to prepare
    page for writing. This function can occasionally mark buffer dirty
    which violates journalling assumptions - when a buffer is part of
    a transaction, it should be dirty and a buffer can be already part
    of a forget list of some transaction when block_write_begin()
    gets called. This violation of journalling assumptions then results
    in "JBD: Spotted dirty metadata buffer..." warnings.

    In fact, temporary dirtying the buffer while the page is still locked
    does not really cause problems to the journalling because we won't write
    the buffer until the page gets unlocked. So we just have to make sure
    to clear dirty bits before unlocking the page.

    Signed-off-by: Jan Kara

    Jan Kara
     

05 Aug, 2010

1 commit

  • commit 3d0518f4, "ext4: New rec_len encoding for very
    large blocksizes" made several changes to this path, but from
    a perf perspective, un-inlining ext4_rec_len_from_disk() seems
    most significant. This function is called from ext4_check_dir_entry(),
    which on a file-creation workload is called extremely often.

    I tested this with bonnie:

    # bonnie++ -u root -s 0 -f -x 200 -d /mnt/test -n 32

    (this does 200 iterations) and got this for the file creations:

    ext4 stock: Average = 21206.8 files/s
    ext4 inlined: Average = 22346.7 files/s (+5%)

    Signed-off-by: Eric Sandeen
    Signed-off-by: "Theodore Ts'o"

    Eric Sandeen
     

04 Aug, 2010

3 commits


02 Aug, 2010

3 commits

  • Allow mount options to be stored in the superblock. Also add default
    mount option bits for nobarrier, block_validity, discard, and nodelalloc.

    Signed-off-by: "Theodore Ts'o"

    Theodore Ts'o
     
  • Perform full sync procedure so that any delayed allocation blocks are
    allocated so quota will be consistent.

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: "Theodore Ts'o"

    Dmitry Monakhov
     
  • Commit 6b0310fbf087ad6 caused a regression resulting in deadlocks
    when freezing a filesystem which had active IO; the vfs_check_frozen
    level (SB_FREEZE_WRITE) did not let the freeze-related IO syncing
    through. Duh.

    Changing the test to FREEZE_TRANS should let the normal freeze
    syncing get through the fs, but still block any transactions from
    starting once the fs is completely frozen.

    I tested this by running fsstress in the background while periodically
    snapshotting the fs and running fsck on the result. I ran into
    occasional deadlocks, but different ones. I think this is a
    fine fix for the problem at hand, and the other deadlocky things
    will need more investigation.

    Reported-by: Phillip Susi
    Signed-off-by: Eric Sandeen
    Signed-off-by: "Theodore Ts'o"

    Eric Sandeen
     

30 Jul, 2010

1 commit


27 Jul, 2010

20 commits


30 Jun, 2010

2 commits


29 Jun, 2010

1 commit