[Ocfs2-devel] [PATCH 1/3] Introduce ocfs2_dx_dir_disable()

Goldwyn Rodrigues rgoldwyn at gmail.com
Wed Aug 3 15:49:04 PDT 2011


Disables ocfs2 directory indexing in ocfs2_inode_info. This function is
to be called in case of an error/corruption in index directory traversal.

Signed-off-by: Goldwyn Rodrigues <rgoldwyn at suse.de>
---
 fs/ocfs2/dir.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c
index 8582e3f..fdb4ed9 100644
--- a/fs/ocfs2/dir.c
+++ b/fs/ocfs2/dir.c
@@ -163,6 +163,19 @@ static void ocfs2_init_dir_trailer(struct inode *inode,
 	trailer->db_blkno = cpu_to_le64(bh->b_blocknr);
 	trailer->db_free_rec_len = cpu_to_le16(rec_len);
 }
+
+/* Called only when an error occurs with reading indexed directories.
+ * The function just disables the directory indexing in ocfs2_inode_info
+ */
+static void ocfs2_dx_dir_disable(struct inode *dir)
+{
+	struct ocfs2_inode_info *oi = OCFS2_I(dir);
+	mlog(ML_ERROR, "Disabling index for directory <%llu> due to"
+			" corruption. Please execute fsck.ocfs2\n",
+			oi->ip_blkno);
+	oi->ip_dyn_features &= ~OCFS2_INDEXED_DIR_FL;
+}
+
 /*
  * Link an unindexed block with a dir trailer structure into the index free
  * list. This function will modify dirdata_bh, but assumes you've already
-- 
1.7.6



More information about the Ocfs2-devel mailing list