1. 21 4月, 2010 2 次提交
  2. 20 4月, 2010 5 次提交
    • T
      eCryptfs: Turn lower lookup error messages into debug messages · 9f37622f
      Tyler Hicks 提交于
      Vaugue warnings about ENAMETOOLONG errors when looking up an encrypted
      file name have caused many users to become concerned about their data.
      Since this is a rather harmless condition, I'm moving this warning to
      only be printed when the ecryptfs_verbosity module param is 1.
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      9f37622f
    • T
      eCryptfs: Copy lower directory inode times and size on link · 3a8380c0
      Tyler Hicks 提交于
      The timestamps and size of a lower inode involved in a link() call was
      being copied to the upper parent inode.  Instead, we should be
      copying lower parent inode's timestamps and size to the upper parent
      inode.  I discovered this bug using the POSIX test suite at Tuxera.
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      3a8380c0
    • J
      ecryptfs: fix use with tmpfs by removing d_drop from ecryptfs_destroy_inode · 133b8f9d
      Jeff Mahoney 提交于
      Since tmpfs has no persistent storage, it pins all its dentries in memory
      so they have d_count=1 when other file systems would have d_count=0.
      ->lookup is only used to create new dentries. If the caller doesn't
      instantiate it, it's freed immediately at dput(). ->readdir reads
      directly from the dcache and depends on the dentries being hashed.
      
      When an ecryptfs mount is mounted, it associates the lower file and dentry
      with the ecryptfs files as they're accessed. When it's umounted and
      destroys all the in-memory ecryptfs inodes, it fput's the lower_files and
      d_drop's the lower_dentries. Commit 4981e081 added this and a d_delete in
      2008 and several months later commit caeeeecf removed the d_delete. I
      believe the d_drop() needs to be removed as well.
      
      The d_drop effectively hides any file that has been accessed via ecryptfs
      from the underlying tmpfs since it depends on it being hashed for it to
      be accessible. I've removed the d_drop on my development node and see no
      ill effects with basic testing on both tmpfs and persistent storage.
      
      As a side effect, after ecryptfs d_drops the dentries on tmpfs, tmpfs
      BUGs on umount. This is due to the dentries being unhashed.
      tmpfs->kill_sb is kill_litter_super which calls d_genocide to drop
      the reference pinning the dentry. It skips unhashed and negative dentries,
      but shrink_dcache_for_umount_subtree doesn't. Since those dentries
      still have an elevated d_count, we get a BUG().
      
      This patch removes the d_drop call and fixes both issues.
      
      This issue was reported at:
      https://bugzilla.novell.com/show_bug.cgi?id=567887Reported-by: NÁrpád Bíró <biroa@demasz.hu>
      Signed-off-by: NJeff Mahoney <jeffm@suse.com>
      Cc: Dustin Kirkland <kirkland@canonical.com>
      Cc: stable@kernel.org
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      133b8f9d
    • C
      ecryptfs: fix error code for missing xattrs in lower fs · cfce08c6
      Christian Pulvermacher 提交于
      If the lower file system driver has extended attributes disabled,
      ecryptfs' own access functions return -ENOSYS instead of -EOPNOTSUPP.
      This breaks execution of programs in the ecryptfs mount, since the
      kernel expects the latter error when checking for security
      capabilities in xattrs.
      Signed-off-by: NChristian Pulvermacher <pulvermacher@gmx.de>
      Cc: stable@kernel.org
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      cfce08c6
    • T
      eCryptfs: Decrypt symlink target for stat size · 3a60a168
      Tyler Hicks 提交于
      Create a getattr handler for eCryptfs symlinks that is capable of
      reading the lower target and decrypting its path.  Prior to this patch,
      a stat's st_size field would represent the strlen of the encrypted path,
      while readlink() would return the strlen of the decrypted path.  This
      could lead to confusion in some userspace applications, since the two
      values should be equal.
      
      https://bugs.launchpad.net/bugs/524919Reported-by: NLoïc Minier <loic.minier@canonical.com>
      Cc: stable@kernel.org
      Signed-off-by: NTyler Hicks <tyhicks@linux.vnet.ibm.com>
      3a60a168
  3. 17 4月, 2010 2 次提交
    • D
      xfs: don't warn on EAGAIN in inode reclaim · f1d486a3
      Dave Chinner 提交于
      Any inode reclaim flush that returns EAGAIN will result in the inode
      reclaim being attempted again later. There is no need to issue a
      warning into the logs about this situation.
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NAlex Elder <aelder@sgi.com>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      f1d486a3
    • D
      xfs: ensure that sync updates the log tail correctly · b6f8dd49
      Dave Chinner 提交于
      Updates to the VFS layer removed an extra ->sync_fs call into the
      filesystem during the sync process (from the quota code).
      Unfortunately the sync code was unknowingly relying on this call to
      make sure metadata buffers were flushed via a xfs_buftarg_flush()
      call to move the tail of the log forward in memory before the final
      transactions of the sync process were issued.
      
      As a result, the old code would write a very recent log tail value
      to the log by the end of the sync process, and so a subsequent crash
      would leave nothing for log recovery to do. Hence in qa test 182,
      log recovery only replayed a small handle for inode fsync
      transactions in this case.
      
      However, with the removal of the extra ->sync_fs call, the log tail
      was now not moved forward with the inode fsync transactions near the
      end of the sync procese the first (and only) buftarg flush occurred
      after these transactions went to disk. The result is that log
      recovery now sees a large number of transactions for metadata that
      is already on disk.
      
      This usually isn't a problem, but when the transactions include
      inode chunk allocation, the inode create transactions and all
      subsequent changes are replayed as we cannt rely on what is on disk
      is valid. As a result, if the inode was written and contains
      unlogged changes, the unlogged changes are lost, thereby violating
      sync semantics.
      
      The fix is to always issue a transaction after the buftarg flush
      occurs is the log iѕ not idle or covered. This results in a dummy
      transaction being written that contains the up-to-date log tail
      value, which will be very recent. Indeed, it will be at least as
      recent as the old code would have left on disk, so log recovery
      will behave exactly as it used to in this situation.
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      b6f8dd49
  4. 14 4月, 2010 3 次提交
  5. 13 4月, 2010 5 次提交
  6. 12 4月, 2010 2 次提交
  7. 10 4月, 2010 6 次提交
  8. 08 4月, 2010 3 次提交
  9. 07 4月, 2010 5 次提交
  10. 06 4月, 2010 7 次提交
    • D
      proc: copy_to_user() returns unsigned · 309361e0
      Dan Carpenter 提交于
      copy_to_user() returns the number of bytes left to be copied.
      
      This was a typo from: d82ef020 "proc: pagemap: Hold mmap_sem during
      page walk".
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Acked-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      309361e0
    • C
      Btrfs: make sure the chunk allocator doesn't create zero length chunks · 9f680ce0
      Chris Mason 提交于
      A recent commit allowed for smaller chunks to be created, but didn't
      make sure they were always bigger than a stripe.  After some divides,
      this led to zero length stripes.
      Signed-off-by: NChris Mason <chris.mason@oracle.com>
      9f680ce0
    • J
      Btrfs: fix data enospc check overflow · ab6e2410
      Josef Bacik 提交于
      Because we account for reserved space we get from the allocator before we
      actually account for allocating delalloc space, we can have a small window where
      the amount of "used" space in a space_info is more than the total amount of
      space in the space_info.  This will cause a overflow in our check, so it will
      seem like we have _tons_ of free space, and we'll allow reservations to occur
      that will end up larger than the amount of space we have.  I've seen users
      report ENOSPC panic's in cow_file_range a few times recently, so I tried to
      reproduce this problem and found I could reproduce it if I ran one of my tests
      in a loop for like 20 minutes.  With this patch my test ran all night without
      issues.  Thanks,
      Signed-off-by: NJosef Bacik <josef@redhat.com>
      Signed-off-by: NChris Mason <chris.mason@oracle.com>
      ab6e2410
    • D
      9p: return on mutex_lock_interruptible() · 85a770a8
      Dan Carpenter 提交于
      If "err" is -EINTR here the original code calls mutex_unlock() and then
      returns, but it should just return directly.
      Signed-off-by: NDan Carpenter <error27@gmail.com>
      Signed-off-by: NEric Van Hensbergen <ericvh@gmail.com>
      
      ------------------------------------------------------------------------------
      Download Intel&#174; Parallel Studio Eval
      Try the new software tools for yourself. Speed compiling, find bugs
      proactively, and fine-tune applications for parallel performance.
      See why Intel Parallel Studio got high marks during beta.
      http://p.sf.net/sfu/intel-sw-dev
      85a770a8
    • C
      Btrfs: add check for changed leaves in setup_leaf_for_split · 109f6aef
      Chris Mason 提交于
      setup_leaf_for_split needs to drop the path and search again, and has
      checks to see if the item we want to split changed size.  But, it misses
      the case where the leaf changed and now has enough room for the item
      we want to insert.
      
      This adds an extra check to make sure the leaf really needs splitting
      before we call btrfs_split_leaf(), which keeps us from trying to split
      a leaf with a single item.
      
      btrfs_split_leaf() will blindly split the single item leaf, leaving us
      with one good leaf and one empty leaf and then a crash.
      Signed-off-by: NChris Mason <chris.mason@oracle.com>
      109f6aef
    • S
      Btrfs: create snapshot references in same commit as snapshot · 6bdb72de
      Sage Weil 提交于
      This creates the reference to a new snapshot in the same commit as the
      snapshot itself.  This avoids the need for a second commit in order for a
      snapshot to be persistent, and also avoids the problem of "leaking" a
      new snapshot tree root if the host crashes before the second commit takes
      place.
      
      It is not at all clear to me why it wasn't always done this way.  If there
      is still a reason for the two-stage {create,finish}_pending_snapshots()
      approach I'm missing something!  :)
      
      I've been running this for a couple weeks under pretty heavy usage (a few
      snapshots per minute) without obvious problems.
      Signed-off-by: NSage Weil <sage@newdream.net>
      Signed-off-by: NChris Mason <chris.mason@oracle.com>
      6bdb72de
    • J
      Btrfs: fix small race with delalloc flushing waitqueue's · b5cb1600
      Josef Bacik 提交于
      Everytime we start a new flushing thread, we init the waitqueue if there isn't a
      flushing thread running.  The problem with this is we check
      space_info->flushing, which we clear right before doing a wake_up on the
      flushing waitqueue, which causes problems if we init the waitqueue in the middle
      of clearing the flushing flagh and calling wake_up.  This is hard to hit, but
      the code is wrong anyway, so init the flushing/allocating waitqueue when
      creating the space info and let it be.  I haven't seen the panic since I've been
      using this patch.  Thanks,
      Signed-off-by: NJosef Bacik <josef@redhat.com>
      Signed-off-by: NChris Mason <chris.mason@oracle.com>
      b5cb1600