ocfs2: Fix a missing credit when deleting from indexed directories.

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Linux Kernel Mailing List
Date: Saturday, May 2, 2009 - 5:00 pm

Gitweb:     http://git.kernel.org/linus/dfa13f39b798fee68250abe1aed851395c8b51b5
Commit:     dfa13f39b798fee68250abe1aed851395c8b51b5
Parent:     7e31a966ad270ba32a77c157c015cd7c82faaa55
Author:     Joel Becker <joel.becker@oracle.com>
AuthorDate: Wed Apr 29 17:55:08 2009 -0700
Committer:  Joel Becker <joel.becker@oracle.com>
CommitDate: Thu Apr 30 13:21:56 2009 -0700

    ocfs2: Fix a missing credit when deleting from indexed directories.
    
    The ocfs2 directory index updates two blocks when we remove an entry -
    the dx root and the dx leaf.  OCFS2_DELETE_INODE_CREDITS was only
    accounting for the dx leaf.  This shows up when ocfs2_delete_inode()
    runs out of credits in jbd2_journal_dirty_metadata() at
    "J_ASSERT_JH(jh, handle->h_buffer_credits > 0);".
    
    The test that caught this was running dirop_file_racer from the
    ocfs2-test suite with a 250-character filename PREFIX.  Run on a 512B
    blocksize, it forces the orphan dir index to grow large enough to
    trigger.
    
    Signed-off-by: Joel Becker <joel.becker@oracle.com>
---
 fs/ocfs2/journal.h |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/ocfs2/journal.h b/fs/ocfs2/journal.h
index 619dd7f..eb7b763 100644
--- a/fs/ocfs2/journal.h
+++ b/fs/ocfs2/journal.h
@@ -437,8 +437,9 @@ static inline int ocfs2_unlink_credits(struct super_block *sb)
 }
 
 /* dinode + orphan dir dinode + inode alloc dinode + orphan dir entry +
- * inode alloc group descriptor + orphan dir index leaf */
-#define OCFS2_DELETE_INODE_CREDITS (3 * OCFS2_INODE_UPDATE_CREDITS + 3)
+ * inode alloc group descriptor + orphan dir index root +
+ * orphan dir index leaf */
+#define OCFS2_DELETE_INODE_CREDITS (3 * OCFS2_INODE_UPDATE_CREDITS + 4)
 
 /* dinode update, old dir dinode update, new dir dinode update, old
  * dir dir entry, new dir dir entry, dir entry update for renaming
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
ocfs2: Fix a missing credit when deleting from indexed dir ..., Linux Kernel Mailing ..., (Sat May 2, 5:00 pm)