1. 02 11月, 2011 1 次提交
  2. 23 8月, 2011 2 次提交
  3. 12 8月, 2011 1 次提交
  4. 26 7月, 2011 1 次提交
  5. 20 7月, 2011 1 次提交
  6. 17 7月, 2011 1 次提交
  7. 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
  8. 26 5月, 2011 3 次提交
  9. 15 5月, 2011 1 次提交
  10. 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
  11. 22 3月, 2011 1 次提交
  12. 21 3月, 2011 1 次提交
  13. 15 3月, 2011 1 次提交
  14. 11 1月, 2011 3 次提交
  15. 20 12月, 2010 2 次提交
  16. 15 12月, 2010 1 次提交
  17. 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
  18. 26 10月, 2010 1 次提交
  19. 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
  20. 27 7月, 2010 1 次提交
  21. 15 6月, 2010 1 次提交
  22. 17 5月, 2010 4 次提交
  23. 05 3月, 2010 2 次提交
    • C
      dquot: cleanup dquot initialize routine · 871a2931
      Christoph Hellwig 提交于
      Get rid of the initialize dquot operation - it is now always called from
      the filesystem and if a filesystem really needs it's own (which none
      currently does) it can just call into it's own routine directly.
      
      Rename the now static low-level dquot_initialize helper to __dquot_initialize
      and vfs_dq_init to dquot_initialize to have a consistent namespace.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJan Kara <jack@suse.cz>
      871a2931
    • C
      dquot: move dquot initialization responsibility into the filesystem · 907f4554
      Christoph Hellwig 提交于
      Currently various places in the VFS call vfs_dq_init directly.  This means
      we tie the quota code into the VFS.  Get rid of that and make the
      filesystem responsible for the initialization.   For most metadata operations
      this is a straight forward move into the methods, but for truncate and
      open it's a bit more complicated.
      
      For truncate we currently only call vfs_dq_init for the sys_truncate case
      because open already takes care of it for ftruncate and open(O_TRUNC) - the
      new code causes an additional vfs_dq_init for those which is harmless.
      
      For open the initialization is moved from do_filp_open into the open method,
      which means it happens slightly earlier now, and only for regular files.
      The latter is fine because we don't need to initialize it for operations
      on special files, and we already do it as part of the namespace operations
      for directories.
      
      Add a dquot_file_open helper that filesystems that support generic quotas
      can use to fill in ->open.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NJan Kara <jack@suse.cz>
      907f4554
  24. 02 3月, 2010 1 次提交
  25. 17 2月, 2010 1 次提交
    • C
      ext4: Fix BUG_ON at fs/buffer.c:652 in no journal mode · 73b50c1c
      Curt Wohlgemuth 提交于
      Calls to ext4_handle_dirty_metadata should only pass in an inode
      pointer for inode-specific metadata, and not for shared metadata
      blocks such as inode table blocks, block group descriptors, the
      superblock, etc.
      
      The BUG_ON can get tripped when updating a special device (such as a
      block device) that is opened (so that i_mapping is set in
      fs/block_dev.c) and the file system is mounted in no journal mode.
      
      Addresses-Google-Bug: #2404870
      Signed-off-by: NCurt Wohlgemuth <curtw@google.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      73b50c1c
  26. 16 2月, 2010 1 次提交
  27. 09 12月, 2009 1 次提交
  28. 23 11月, 2009 1 次提交
    • T
      ext4: fix potential buffer head leak when add_dirent_to_buf() returns ENOSPC · 2de770a4
      Theodore Ts'o 提交于
      Previously add_dirent_to_buf() did not free its passed-in buffer head
      in the case of ENOSPC, since in some cases the caller still needed it.
      However, this led to potential buffer head leaks since not all callers
      dealt with this correctly.  Fix this by making simplifying the freeing
      convention; now add_dirent_to_buf() *never* frees the passed-in buffer
      head, and leaves that to the responsibility of its caller.  This makes
      things cleaner and easier to prove that the code is neither leaking
      buffer heads or calling brelse() one time too many.
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      Cc: Curt Wohlgemuth <curtw@google.com>
      Cc: stable@kernel.org
      2de770a4