[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