[Ocfs2-commits] khackel commits r1365 - trunk/src

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Fri Aug 20 01:10:54 CDT 2004


Author: khackel
Date: 2004-08-20 00:10:52 -0500 (Fri, 20 Aug 2004)
New Revision: 1365

Modified:
   trunk/src/Makefile
   trunk/src/dcache.c
   trunk/src/file.c
   trunk/src/file.h
   trunk/src/inode.c
   trunk/src/namei.c
Log:
ok you might hate me for checking this in, but it is really handy... can always revert it if you want

Modified: trunk/src/Makefile
===================================================================
--- trunk/src/Makefile	2004-08-19 22:18:00 UTC (rev 1364)
+++ trunk/src/Makefile	2004-08-20 05:10:52 UTC (rev 1365)
@@ -21,7 +21,8 @@
 OPTS += -g
 endif
 
-GLOBAL_DEFINES =
+GLOBAL_DEFINES = 
+#GLOBAL_DEFINES += -DPURE_EVIL
 
 ifdef OCFS_DEBUG
 GLOBAL_DEFINES += -DDEBUG

Modified: trunk/src/dcache.c
===================================================================
--- trunk/src/dcache.c	2004-08-19 22:18:00 UTC (rev 1364)
+++ trunk/src/dcache.c	2004-08-20 05:10:52 UTC (rev 1365)
@@ -40,6 +40,7 @@
 
 #include "dcache.h"
 #include "vote.h"
+#include "file.h"
 
 #define OCFS_DEBUG_CONTEXT    OCFS_DEBUG_CONTEXT_DCACHE
 
@@ -60,6 +61,12 @@
 
 	osb = OCFS_SB(inode->i_sb);
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		LOG_ERROR_ARGS("EVIL REVALIDATE: flags=%d\n", flags);
+	}
+#endif
+
 	OCFS_ASSERT(osb);
 
 	if (inode == osb->root_inode) {

Modified: trunk/src/file.c
===================================================================
--- trunk/src/file.c	2004-08-19 22:18:00 UTC (rev 1364)
+++ trunk/src/file.c	2004-08-20 05:10:52 UTC (rev 1365)
@@ -178,6 +178,12 @@
 
 	osb = OCFS_SB(inode->i_sb);
 
+#ifdef PURE_EVIL	
+	if (evil_filename_check(EVIL_FILE, file)) {
+		LOG_ERROR_ARGS("EVIL FOPEN: mode=%d\n", mode);
+	}
+#endif
+
 	if (osb->osb_flags & OCFS_OSB_FLAGS_SHUTDOWN) {
 		LOG_ERROR_STR ("Volume has been shutdown");
 		status = -EACCES;
@@ -307,6 +313,13 @@
 
 	dentry = file->f_dentry;
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		LOG_ERROR_ARGS("EVIL FRELEASE: mode=%d\n", file->f_flags);
+	}
+#endif
+
+
 	osb = OCFS_SB(inode->i_sb);
 
 	/* dir */
@@ -362,16 +375,15 @@
 
 	LOG_ENTRY ();
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_INODE, inode)) {
+		LOG_ERROR_STR("EVIL FILL_EXTMAP");
+	}
+#endif
+
 	fe = (ocfs2_dinode *) fe_bh->b_data;
 	tempoff = fe->i_blkno << osb->sb->s_blocksize_bits;
 
-#warning I think we DO want extent map stuff for dirs now
-#if 0
-	/* we don't want to do the extent map stuff for a directory. */
-	if (S_ISDIR(fe->i_mode))
-		goto leave;
-#endif
-
 	el = &fe->id2.i_list;
 	if (!el->l_tree_depth) {
 		for (j = 0; j < el->l_next_free_rec; j++) {
@@ -466,6 +478,12 @@
 	LOG_ENTRY_ARGS ("(0x%p, 0x%p, %d, '%*s')\n", file, dentry, datasync,
 			dentry->d_name.len, dentry->d_name.name);
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		LOG_ERROR_ARGS("EVIL SYNC_FILE: mode=%d\n", file->f_flags);
+	}
+#endif
+
 	err = ocfs_sync_inode(dentry->d_inode);
 	if (err)
 		goto bail;
@@ -494,6 +512,12 @@
 
 	LOG_ENTRY ();
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_INODE, inode)) {
+		LOG_ERROR_STR("EVIL ATTRIB");
+	}
+#endif
+
 	/* Start a transaction - need a minimal amount of block credits (1) */
 	handle = ocfs_start_trans(osb, 1);
 	if (handle == NULL) {
@@ -562,6 +586,38 @@
 	return status;
 }				/* ocfs_change_file_attrib */
 
+
+#ifdef PURE_EVIL
+int evil_filename_check(int type, void *ptr)
+{
+	struct file *filp = ptr;
+	struct dentry *dentry = ptr;
+	struct inode *inode = ptr;
+	struct page *page = ptr;
+	struct list_head *iter, *temp_iter;
+
+	switch (type) {
+		case EVIL_FILE:
+			dentry = filp ? filp->f_dentry : NULL;
+		case EVIL_DENTRY:
+			return evil_dentry_check(dentry);
+		
+		case EVIL_PAGE:	
+			inode = page ? (page->mapping ? page->mapping->host : NULL) : NULL;
+		case EVIL_INODE:
+			if (inode && S_ISREG(inode->i_mode)) {
+				list_for_each_safe (iter, temp_iter, &(inode->i_dentry)) {
+					dentry = list_entry (iter, struct dentry, d_alias);
+					if (evil_dentry_check(dentry))
+						return 1;
+				}
+			}
+			return 0;
+	}
+	return 0;
+}
+#endif
+
 /*
  * ocfs_file_write()
  * Linux 2.6 TODO: Remove all O_DIRECT conditionals here, they are no longer
@@ -573,7 +629,8 @@
 	int ret = 0;
 	int writingAtEOF = 0;
 	ocfs_super *osb = NULL;
-	struct inode *inode = filp->f_dentry->d_inode;
+	struct dentry *dentry = filp->f_dentry;
+	struct inode *inode = dentry->d_inode;
 	int status;
 	__u64 newsize;
 	struct super_block *sb = inode->i_sb;
@@ -586,6 +643,17 @@
 			(unsigned int)count,
 			filp->f_dentry->d_name.len, filp->f_dentry->d_name.name);
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		int z;
+		LOG_ERROR_ARGS("EVIL FILE_WRITE: count=%u, ppos=%llu, flags=%d\n", (unsigned int)count, *ppos, filp->f_flags);
+		for (z=0; z<(count<16?count:16); z++) {
+			printk("data[%d]=%02x ", z, ((char)buf[z]) & 0xff);
+		}
+		printk("\n");
+	}
+#endif
+
 	/* happy write of zero bytes */
 	if (count == 0) {
 		ret = 0;
@@ -748,7 +816,8 @@
 {
 	int ret = 0;
 	ocfs_super *osb = NULL;
-	struct inode *inode = filp->f_dentry->d_inode;
+	struct dentry *dentry = filp->f_dentry;
+	struct inode *inode = dentry->d_inode;
 	int status = 0;
 	int do_direct_io = 0;
 	int sector_size;
@@ -759,7 +828,13 @@
 			(unsigned int)count,
 			filp->f_dentry->d_name.len, filp->f_dentry->d_name.name);
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		LOG_ERROR_ARGS("EVIL FILE_READ: count=%u, ppos=%llu, flags=%d\n", (unsigned int)count, *ppos, filp->f_flags);
+	}
+#endif
 
+
 	if (!inode) {
 		LOG_ERROR_STR ("Bad inode or inode has no oin");
 		ret = -EINVAL;
@@ -867,6 +942,14 @@
 	new_alloc_size = ocfs_align_bytes_to_clusters(osb->sb,
 						      file_size);
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_INODE, inode)) {
+		LOG_ERROR_ARGS("EVIL TRUNCATE: file_size=%llu, new_alloc=%llu, old=%llu\n",
+			       file_size, new_alloc_size, inode->i_size);
+	}
+#endif
+
+
 	LOG_TRACE_ARGS("new_alloc_size = %llu\n", new_alloc_size);
 
 	/* start a journal transaction */
@@ -967,6 +1050,13 @@
 	unsigned int offset;
 	int res = 0;
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_INODE, inode)) {
+		LOG_ERROR_ARGS("EVIL ZEROEXTEND: i_size=%llu, mmu_priv=%llu\n",
+			       inode->i_size, OCFS_I(inode)->ip_mmu_private);
+	}
+#endif
+
 	/* Start the zeroing of blocks */
 	if (inode->i_size > OCFS_I(inode)->ip_mmu_private) {
 		page = grab_cache_page(mapping,
@@ -1020,6 +1110,13 @@
 	if (!inode)
 		BUG();
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_INODE, inode)) {
+		LOG_ERROR_ARGS("EVIL EXTEND: file_size=%llu, oldsize=%llu\n",
+			       file_size, inode->i_size);
+	}
+#endif
+
 	if (file_size == 0)
 		goto leave;
 
@@ -1291,6 +1388,12 @@
 
 	osb = OCFS_SB(inode->i_sb);
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		LOG_ERROR_ARGS("EVIL SETATTR\n");
+	}
+#endif
+
 	down_write(&OCFS_I(inode)->ip_io_sem);
 
 	if (!dentry->d_parent || !dentry->d_parent->d_inode) {

Modified: trunk/src/file.h
===================================================================
--- trunk/src/file.h	2004-08-19 22:18:00 UTC (rev 1364)
+++ trunk/src/file.h	2004-08-20 05:10:52 UTC (rev 1365)
@@ -47,4 +47,24 @@
 		 struct kstat *stat);
 #endif
 
+#ifdef PURE_EVIL
+#define EVIL_FILENAME        "libctx10.a"
+#define EVIL_FILENAME_LEN    10
+enum {
+	EVIL_FILE,
+	EVIL_INODE,
+	EVIL_DENTRY,
+	EVIL_PAGE
+};
+
+static inline int evil_dentry_check(struct dentry *dentry)
+{
+	return (dentry != NULL && dentry->d_name.len == EVIL_FILENAME_LEN && 
+	    	strncmp(dentry->d_name.name, EVIL_FILENAME, EVIL_FILENAME_LEN) == 0);
+}
+
+int evil_filename_check(int type, void *ptr);
+#endif /* PURE_EVIL */
+
+
 #endif /* OCFS2_FILE_H */

Modified: trunk/src/inode.c
===================================================================
--- trunk/src/inode.c	2004-08-19 22:18:00 UTC (rev 1364)
+++ trunk/src/inode.c	2004-08-20 05:10:52 UTC (rev 1365)
@@ -190,6 +190,8 @@
 	args = opaque;
 
 	if (OCFS_I(inode)->ip_blkno != args->blkno) {
+		LOG_ERROR_ARGS("hmm ip_blkno=%llu, args->blkno=%llu, i_ino=%lu\n",
+			       OCFS_I(inode)->ip_blkno, args->blkno, inode->i_ino);
 		LOG_ERROR_STATUS(-EINVAL);
 		goto bail;
 	}

Modified: trunk/src/namei.c
===================================================================
--- trunk/src/namei.c	2004-08-19 22:18:00 UTC (rev 1364)
+++ trunk/src/namei.c	2004-08-20 05:10:52 UTC (rev 1365)
@@ -195,6 +195,14 @@
 	LOG_ENTRY_ARGS ("(0x%p, 0x%p, %d, %lu, '%*s')\n", dir, dentry, mode,
 			(unsigned long)dev, dentry->d_name.len, dentry->d_name.name);
 
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		LOG_ERROR_ARGS("EVIL MKNOD... creating the file here!\n");
+		LOG_ERROR_ARGS ("(0x%p, 0x%p, %d, %lu, '%*s')\n", dir, dentry, mode,
+			(unsigned long)dev, dentry->d_name.len, dentry->d_name.name);
+	}
+#endif
+
 	down_write(&OCFS_I(dir)->ip_io_sem);
 
 	/* get our super block */
@@ -417,6 +425,13 @@
 	fe = (ocfs2_dinode *) (*new_fe_bh)->b_data;
 	memset(fe, 0, osb->sb->s_blocksize);
 	inode->i_ino = ino_from_blkno(osb->sb, fe_blkno);
+	
+#ifdef PURE_EVIL
+	if (evil_filename_check(EVIL_DENTRY, dentry)) {
+		LOG_ERROR_ARGS("EVIL MKNOD_LOCKED: i_ino to watch is %lu\n", inode->i_ino);
+	}
+#endif
+
 	/*
 	 * FIXME This needs to be
 	 * (node_num << 24) | (nodeconf->gen_counter++ & 0x00FFFFFF)



More information about the Ocfs2-commits mailing list