1. 03 Nov, 2008 1 commit
    • Theodore Ts'o's avatar
      ext4: wait on all pending commits in ext4_sync_fs() · 14ce0cb4
      Theodore Ts'o authored
      In ext4_sync_fs, we only wait for a commit to finish if we started it,
      but there may be one already in progress which will not be synced.
      
      In the case of a data=ordered umount with pending long symlinks which
      are delayed due to a long list of other I/O on the backing block
      device, this causes the buffer associated with the long symlinks to
      not be moved to the inode dirty list in the second phase of
      fsync_super.  Then, before they can be dirtied again, kjournald exits,
      seeing the UMOUNT flag and the dirty pages are never written to the
      backing block device, causing long symlink corruption and exposing new
      or previously freed block data to userspace.
      
      To ensure all commits are synced, we flush all journal commits now
      when sync_fs'ing ext4.
      Signed-off-by: default avatarArthur Jones <ajones@riverbed.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: Eric Sandeen <sandeen@redhat.com>
      Cc: <linux-ext4@vger.kernel.org>
      14ce0cb4
  2. 04 Nov, 2008 2 commits
  3. 03 Nov, 2008 1 commit
  4. 07 Nov, 2008 2 commits
    • Theodore Ts'o's avatar
      jbd2: don't give up looking for space so easily in __jbd2_log_wait_for_space · 8c3f25d8
      Theodore Ts'o authored
      Commit 23f8b79e introducd a regression because it assumed that if
      there were no transactions ready to be checkpointed, that no progress
      could be made on making space available in the journal, and so the
      journal should be aborted.  This assumption is false; it could be the
      case that simply calling jbd2_cleanup_journal_tail() will recover the
      necessary space, or, for small journals, the currently committing
      transaction could be responsible for chewing up the required space in
      the log, so we need to wait for the currently committing transaction
      to finish before trying to force a checkpoint operation.
      
      This patch fixes a bug reported by Mihai Harpau at:
      https://bugzilla.redhat.com/show_bug.cgi?id=469582
      
      This patch fixes a bug reported by François Valenduc at:
      http://bugzilla.kernel.org/show_bug.cgi?id=11840Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: Duane Griffin <duaneg@dghda.com>
      Cc: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com>
      8c3f25d8
    • Theodore Ts'o's avatar
      jbd: don't give up looking for space so easily in __log_wait_for_space · e219cca0
      Theodore Ts'o authored
      Commit be07c4ed introducd a regression because it assumed that if
      there were no transactions ready to be checkpointed, that no progress
      could be made on making space available in the journal, and so the
      journal should be aborted.  This assumption is false; it could be the
      case that simply calling cleanup_journal_tail() will recover the
      necessary space, or, for small journals, the currently committing
      transaction could be responsible for chewing up the required space in
      the log, so we need to wait for the currently committing transaction
      to finish before trying to force a checkpoint operation.
      
      This patch fixes the bug reported by Meelis Roos at:
      http://bugzilla.kernel.org/show_bug.cgi?id=11937Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Cc: Duane Griffin <duaneg@dghda.com>
      Cc: Toshiyuki Okajima <toshi.okajima@jp.fujitsu.com>
      e219cca0
  5. 02 Nov, 2008 19 commits
  6. 01 Nov, 2008 15 commits