Skip to content
  1. Apr 28, 2009
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable · 4ebf6623
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:
        Btrfs: look for acls during btrfs_read_locked_inode
        Btrfs: fix acl caching
        Btrfs: Fix a bunch of printk() warnings.
        Btrfs: Fix a trivial warning using max() of u64 vs ULL.
        Btrfs: remove unused btrfs_bit_radix slab
        Btrfs: ratelimit IO error printks
        Btrfs: remove #if 0 code
        Btrfs: When shrinking, only update disk size on success
        Btrfs: fix deadlocks and stalls on dead root removal
        Btrfs: fix fallocate deadlock on inode extent lock
        Btrfs: kill btrfs_cache_create
        Btrfs: don't export symbols
        Btrfs: simplify makefile
        Btrfs: try to keep a healthy ratio of metadata vs data block groups
      4ebf6623
    • Chris Mason's avatar
      Btrfs: look for acls during btrfs_read_locked_inode · 46a53cca
      Chris Mason authored
      
      
      This changes btrfs_read_locked_inode() to peek ahead in the btree for acl items.
      If it is certain a given inode has no acls, it will set the in memory acl
      fields to null to avoid acl lookups completely.
      
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      46a53cca
    • Chris Mason's avatar
      Btrfs: fix acl caching · 7b1a14bb
      Chris Mason authored
      
      
      Linus noticed the btrfs code to cache acls wasn't properly caching
      a NULL acl when the inode didn't have any acls.  This meant the common
      case of no acls resulted in expensive btree searches every time the
      kernel checked permissions (which is quite often).
      
      This is a modified version of Linus' original patch:
      
      Properly set initial acl fields to BTRFS_ACL_NOT_CACHED in the inode.
      This forces an acl lookup when permission checks are done.
      
      Fix btrfs_get_acl to avoid lookups and locking when the inode acls fields
      are set to null.
      
      Fix btrfs_get_acl to use the right return value from __btrfs_getxattr
      when deciding to cache a NULL acl.  It was storing a NULL acl when
      __btrfs_getxattr return -ENOENT, but __btrfs_getxattr was actually returning
      -ENODATA for this case.
      
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      7b1a14bb
  2. Apr 27, 2009