1. 30 4月, 2012 1 次提交
  2. 21 2月, 2012 1 次提交
  3. 09 1月, 2012 1 次提交
    • A
      ext[34]: avoid i_nlink warnings triggered by drop_nlink/inc_nlink kludge in symlink() · 0ce8c010
      Al Viro 提交于
      Both ext3 and ext4 put the half-created symlink inode into the orphan list
      for a while (see the comment in ext[34]_symlink() for gory details).  Then,
      if everything went fine, they pull it out of the orphan list and bump the
      link count back to 1.  The thing is, inc_nlink() is going to complain about
      seeing somebody changing i_nlink from 0 to 1.  With a good reason, since
      normally something like that is a bug.  Explicit set_nlink(inode, 1) does
      the same thing as inc_nlink() here, but it does *not* complain - exactly
      because it should be usable in strange situations like this one.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      0ce8c010
  4. 04 1月, 2012 3 次提交
  5. 02 11月, 2011 2 次提交
  6. 29 10月, 2011 1 次提交
  7. 26 10月, 2011 1 次提交
  8. 01 9月, 2011 2 次提交
  9. 31 8月, 2011 1 次提交
  10. 23 8月, 2011 2 次提交
  11. 12 8月, 2011 1 次提交
  12. 26 7月, 2011 1 次提交
  13. 20 7月, 2011 1 次提交
  14. 17 7月, 2011 1 次提交
  15. 12 7月, 2011 1 次提交
    • L
      ext4: remove unnecessary comments in ext4_orphan_add() · afb86178
      Lukas Czerner 提交于
      The comment from Al Viro about possible race in the ext4_orphan_add() is
      not justified. There is no race possible as we always have either i_mutex
      locked, or the inode can not be referenced from outside hence the
      J_ASSERS should not be hit from the reason described in comment.
      
      This commit replaces it with notion that we are holding i_mutex so it
      should not be possible for i_nlink to be changed while waiting for
      s_orphan_lock.
      Signed-off-by: NLukas Czerner <lczerner@redhat.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      afb86178
  16. 26 5月, 2011 3 次提交
  17. 15 5月, 2011 1 次提交
  18. 03 5月, 2011 2 次提交
    • J
      ext4: fix deadlock in ext4_symlink() in ENOSPC conditions · df5e6223
      Jan Kara 提交于
      ext4_symlink() cannot call __page_symlink() with transaction open.
      __page_symlink() calls ext4_write_begin() which can wait for
      transaction commit if we are running out of space thus causing a
      deadlock. Also error recovery in ext4_truncate_failed_write() does not
      count with the transaction being already started (although I'm not
      aware of any particular deadlock here).
      
      Fix the problem by stopping a transaction before calling
      __page_symlink() (we have to be careful and put inode to orphan list
      so that it gets deleted in case of crash) and starting another one
      after __page_symlink() returns for addition of symlink into a
      directory.
      Signed-off-by: NJan Kara <jack@suse.cz>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      df5e6223
    • J
      ext4: Fix fs corruption when make_indexed_dir() fails · 7ad8e4e6
      Jan Kara 提交于
      When make_indexed_dir() fails (e.g. because of ENOSPC) after it has
      allocated block for index tree root, we did not properly mark all
      changed buffers dirty.  This lead to only some of these buffers being
      written out and thus effectively corrupting the directory.
      
      Fix the issue by marking all changed data dirty even in the error
      failure case.
      Signed-off-by: NJan Kara <jack@suse.cz>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      7ad8e4e6
  19. 22 3月, 2011 1 次提交
  20. 21 3月, 2011 1 次提交
  21. 15 3月, 2011 1 次提交
  22. 11 1月, 2011 3 次提交
  23. 20 12月, 2010 2 次提交
  24. 15 12月, 2010 1 次提交
  25. 28 10月, 2010 2 次提交
    • T
      ext4: use search_dirblock() in ext4_dx_find_entry() · 7845c049
      Theodore Ts'o 提交于
      Use the search_dirblock() in ext4_dx_find_entry().  It makes the code
      easier to read, and it takes advantage of common code.  It also saves
      100 bytes or so of text space.
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      Cc: Brad Spengler <spender@grsecurity.net>
      7845c049
    • T
      ext4: avoid uninitialized memory references in ext3_htree_next_block() · 8941ec8b
      Theodore Ts'o 提交于
      If the first block of htree directory is missing '.' or '..' but is
      otherwise a valid directory, and we do a lookup for '.' or '..', it's
      possible to dereference an uninitialized memory pointer in
      ext4_htree_next_block().
      
      We avoid this by moving the special case from ext4_dx_find_entry() to
      ext4_find_entry(); this also means we can optimize ext4_find_entry()
      slightly when NFS looks up "..".
      
      Thanks to Brad Spengler for pointing a Clang warning that led me to
      look more closely at this code.  The warning was harmless, but it was
      useful in pointing out code that was too ugly to live.  This warning was
      also reported by Roman Borisov.
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      Cc: Brad Spengler <spender@grsecurity.net>
      8941ec8b
  26. 26 10月, 2010 1 次提交
  27. 05 8月, 2010 1 次提交
    • E
      ext4: re-inline ext4_rec_len_(to|from)_disk functions · 0cfc9255
      Eric Sandeen 提交于
      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: NEric Sandeen <sandeen@redhat.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      0cfc9255
  28. 27 7月, 2010 1 次提交