07 Jan, 2012

1 commit


04 Jan, 2012

1 commit


23 Jul, 2011

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (107 commits)
    vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp
    isofs: Remove global fs lock
    jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory
    fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.
    mm/truncate.c: fix build for CONFIG_BLOCK not enabled
    fs:update the NOTE of the file_operations structure
    Remove dead code in dget_parent()
    AFS: Fix silly characters in a comment
    switch d_add_ci() to d_splice_alias() in "found negative" case as well
    simplify gfs2_lookup()
    jfs_lookup(): don't bother with . or ..
    get rid of useless dget_parent() in btrfs rename() and link()
    get rid of useless dget_parent() in fs/btrfs/ioctl.c
    fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers
    drivers: fix up various ->llseek() implementations
    fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek
    Ext4: handle SEEK_HOLE/SEEK_DATA generically
    Btrfs: implement our own ->llseek
    fs: add SEEK_HOLE and SEEK_DATA flags
    reiserfs: make reiserfs default to barrier=flush
    ...

    Fix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new
    shrinker callout for the inode cache, that clashed with the xfs code to
    start the periodic workers later.

    Linus Torvalds
     

22 Jul, 2011

1 commit


21 Jul, 2011

1 commit

  • Btrfs needs to be able to control how filemap_write_and_wait_range() is called
    in fsync to make it less of a painful operation, so push down taking i_mutex and
    the calling of filemap_write_and_wait() down into the ->fsync() handlers. Some
    file systems can drop taking the i_mutex altogether it seems, like ext3 and
    ocfs2. For correctness sake I just pushed everything down in all cases to make
    sure that we keep the current behavior the same for everybody, and then each
    individual fs maintainer can make up their mind about what to do from there.
    Thanks,

    Acked-by: Jan Kara
    Signed-off-by: Josef Bacik
    Signed-off-by: Al Viro

    Josef Bacik
     

07 Jul, 2011

1 commit


08 Jan, 2011

1 commit

  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/hfsplus:
    hfsplus: %L-to-%ll, macro correction, and remove unneeded braces
    hfsplus: spaces/indentation clean-up
    hfsplus: C99 comments clean-up
    hfsplus: over 80 character lines clean-up
    hfsplus: fix an artifact in ioctl flag checking
    hfsplus: flush disk caches in sync and fsync
    hfsplus: optimize fsync
    hfsplus: split up inode flags
    hfsplus: write up fsync for directories
    hfsplus: simplify fsync
    hfsplus: avoid useless work in hfsplus_sync_fs
    hfsplus: make sure sync writes out all metadata
    hfsplus: use raw bio access for partition tables
    hfsplus: use raw bio access for the volume headers
    hfsplus: always use hfsplus_sync_fs to write the volume header
    hfsplus: silence a few debug printks
    hfsplus: fix option parsing during remount

    Fix up conflicts due to VFS changes in fs/hfsplus/{hfsplus_fs.h,unicode.c}

    Linus Torvalds
     

07 Jan, 2011

2 commits

  • Change d_hash so it may be called from lock-free RCU lookups. See similar
    patch for d_compare for details.

    For in-tree filesystems, this is just a mechanical change.

    Signed-off-by: Nick Piggin

    Nick Piggin
     
  • Change d_compare so it may be called from lock-free RCU lookups. This
    does put significant restrictions on what may be done from the callback,
    however there don't seem to have been any problems with in-tree fses.
    If some strange use case pops up that _really_ cannot cope with the
    rcu-walk rules, we can just add new rcu-unaware callbacks, which would
    cause name lookup to drop out of rcu-walk mode.

    For in-tree filesystems, this is just a mechanical change.

    Signed-off-by: Nick Piggin

    Nick Piggin
     

17 Dec, 2010

3 commits


23 Nov, 2010

6 commits

  • Flush the disk cache in fsync and sync to make sure data actually is
    on disk on completion of these system calls. There is a nobarrier
    mount option to disable this behaviour. It's slightly misnamed now
    that barrier actually are gone, but it matches the name used by all
    major filesystems.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • Avoid doing unessecary work in fsync. Do nothing unless the inode
    was marked dirty, and only write the various metadata inodes out if
    they contain any dirty state from this inode. This is archived by
    adding three new dirty bits to the hfsplus-specific inode which are
    set in the correct places.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • Split the flags field in the hfsplus inode into an extent_state
    flag that is locked by the extent_lock, and a new flags field
    that uses atomic bitops. The second will grow more flags in the
    next patch.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • fsync is supposed to not just work on regular files, but also on
    directories. Fortunately enough hfsplus_file_fsync works just fine
    for directories, so we can just wire it up.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • Switch the hfsplus partition table reding for cdroms to use our bio
    helpers. Again we don't rely on any caching in the buffer_heads, and
    this gets rid of the last buffer_head use in hfsplus.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • The hfsplus backup volume header is located two blocks from the end of
    the device. In case of device sizes that are not 4k aligned this means
    we can't access it using buffer_heads when using the default 4k block
    size.

    Switch to using raw bios to read/write all buffer headers. We were not
    relying on any caching behaviour of the buffer heads anyway. Additionally
    always read in the backup volume header during mount to verify that we
    can actually read it.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     

08 Nov, 2010

1 commit

  • hfsplus only actually uses the force option during remount, but it uses
    the full option parser with a fake superblock to do so. This means remount
    will fail if any nls option is set (which happens frequently with older
    mount tools), even if it is the same.

    Fix this by adding a simpler version of the parser that only parses the force
    option for remount.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     

14 Oct, 2010

4 commits

  • Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • Make sure the initial insertation of the catalog entry already contains
    the device number by calling init_special_inode early and setting writing
    out the dev field of the on-disk permission structure. The latter is
    facilitated by sharing the almost identical hfsplus_set_perms helpers
    between initial catalog entry creating and ->write_inode.

    Unless we crashed just after mknod this bug was harmless as the inode
    is marked dirty at the end of hfsplus_mknod, and hfsplus_write_inode
    will update the catalog entry to contain the correct value.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • The rootflags field in hfsplus_inode_info only caches the immutable and
    append-only flags in the VFS inode, so we can easily get rid of it.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     
  • HFS implements hardlink by using indirect catalog entries that refer to a hidden
    directly. The link target is cached in the dev field in the HFS+ specific
    inode, which is also used for the device number for device files, and inside
    for passing the nlink value of the indirect node from hfsplus_cat_write_inode
    to a helper function. Now if we happen to write out the indirect node while
    hfsplus_link is creating the catalog entry we'll get a link pointing to the
    linkid of the current nlink value. This can easily be reproduced by a large
    enough loop of local git-clone operations.

    Stop abusing the dev field in the HFS+ inode for short term storage by
    refactoring the way the permission structure in the catalog entry is
    set up, and rename the dev field to linkid to avoid any confusion.

    While we're at it also prevent creating hard links to special files, as
    the HFS+ dev and linkid share the same space in the on-disk structure.

    Signed-off-by: Christoph Hellwig

    Christoph Hellwig
     

01 Oct, 2010

9 commits


10 Aug, 2010

1 commit


17 May, 2010

1 commit


28 Mar, 2009

1 commit


26 Jul, 2008

1 commit


29 Apr, 2008

1 commit


08 Feb, 2008

1 commit

  • Stop the HFSPLUS filesystem from using iget() and read_inode(). Replace
    hfsplus_read_inode() with hfsplus_iget(), and call that instead of iget().
    hfsplus_iget() then uses iget_locked() directly and returns a proper error
    code instead of an inode in the event of an error.

    hfsplus_fill_super() returns any error incurred when getting the root inode.

    Signed-off-by: David Howells
    Cc: Roman Zippel
    Acked-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

17 Jul, 2007

1 commit

  • Add custom dentry hash and comparison operations for HFS+ filesystems that are
    case-insensitive and/or do automatic unicode decomposition. The new
    operations reuse the existing HFS+ ASCII to unicode conversion, unicode
    decomposition and case folding functionality.

    Signed-off-by: Duane Griffin
    Signed-off-by: Roman Zippel

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Duane Griffin
     

01 Oct, 2006

1 commit