Index: src/kernel/linux-2.6/pvfs2-utils.c
===================================================================
--- src/kernel/linux-2.6/pvfs2-utils.c	(revision 18666)
+++ src/kernel/linux-2.6/pvfs2-utils.c	(working copy)
@@ -285,17 +285,7 @@
                 /* copy link target to inode private data */
                 if (pvfs2_inode && symname)
                 {
-                    if (pvfs2_inode->link_target)
-                    {
-                        kfree(pvfs2_inode->link_target);
-                        pvfs2_inode->link_target = NULL;
-                    }
-                    pvfs2_inode->link_target = kmalloc(
-                        (strlen(symname) + 1), PVFS2_GFP_FLAGS);
-                    if (pvfs2_inode->link_target)
-                    {
-                        strcpy(pvfs2_inode->link_target, symname);
-                    }
+                    strncpy(pvfs2_inode->link_target, symname, PVFS_NAME_MAX);
                     gossip_debug(GOSSIP_UTILS_DEBUG, "Copied attr link target %s\n",
                                 pvfs2_inode->link_target);
                 }
@@ -1969,6 +1959,9 @@
     return (ret);
 }
 
+/*
+  We want to clear everything except for rw_semaphore and the vfs_inode
+*/
 void pvfs2_inode_initialize(pvfs2_inode_t *pvfs2_inode)
 {
     if (!InitFlag(pvfs2_inode))
@@ -1976,15 +1969,16 @@
         pvfs2_inode->refn.handle = PVFS_HANDLE_NULL;
         pvfs2_inode->refn.fs_id = PVFS_FS_ID_NULL;
         pvfs2_inode->last_failed_block_index_read = 0;
-        pvfs2_inode->link_target = NULL;
+        memset(pvfs2_inode->link_target, 0, sizeof(pvfs2_inode->link_target));
         pvfs2_inode->error_code = 0;
+        pvfs2_inode->revalidate_failed = 0;
+        pvfs2_inode->pinode_flags = 0;
         SetInitFlag(pvfs2_inode);
     }
 }
 
 /*
   this is called from super:pvfs2_destroy_inode.
-  pvfs2_inode_cache_dtor frees the link_target if any
 */
 void pvfs2_inode_finalize(pvfs2_inode_t *pvfs2_inode)
 {
Index: src/kernel/linux-2.6/pvfs2-cache.c
===================================================================
--- src/kernel/linux-2.6/pvfs2-cache.c	(revision 18666)
+++ src/kernel/linux-2.6/pvfs2-cache.c	(working copy)
@@ -198,26 +198,11 @@
     }
 }
 
-static void dev_req_cache_ctor(
-    void *req,
-    pvfs2_kmem_cache_t * cachep,
-    unsigned long flags)
-{
-    if (flags & SLAB_CTOR_CONSTRUCTOR)
-    {
-        memset(req, 0, sizeof(MAX_ALIGNED_DEV_REQ_DOWNSIZE));
-    }
-    else
-    {
-        gossip_err("WARNING!! devreq_ctor called without ctor flag\n");
-    }
-}
-
 int dev_req_cache_initialize(void)
 {
     dev_req_cache = kmem_cache_create(
         "pvfs2_devreqcache", MAX_ALIGNED_DEV_REQ_DOWNSIZE, 0,
-        PVFS2_CACHE_CREATE_FLAGS, dev_req_cache_ctor, NULL);
+        PVFS2_CACHE_CREATE_FLAGS, NULL, NULL);
 
     if (!dev_req_cache)
     {
@@ -246,6 +231,10 @@
     {
         gossip_err("Failed to allocate from dev_req_cache\n"); 
     }
+    else
+    {
+        memset(buffer, 0, sizeof(MAX_ALIGNED_DEV_REQ_DOWNSIZE));
+    }
     return buffer;
 }
 
@@ -263,19 +252,15 @@
 }
 
 static void pvfs2_inode_cache_ctor(
-    void *new_pvfs2_inode,
+    void *req,
     pvfs2_kmem_cache_t * cachep,
     unsigned long flags)
 {
-    pvfs2_inode_t *pvfs2_inode = (pvfs2_inode_t *)new_pvfs2_inode;
+    pvfs2_inode_t *pvfs2_inode = (pvfs2_inode_t *)req;
 
-    if (flags & SLAB_CTOR_CONSTRUCTOR)
-    {
-        memset(pvfs2_inode, 0, sizeof(pvfs2_inode_t));
-        ClearInitFlag(pvfs2_inode);
+    ClearInitFlag(pvfs2_inode);
+    pvfs2_inode_initialize(pvfs2_inode);
 
-        pvfs2_inode_initialize(pvfs2_inode);
-
 #ifndef PVFS2_LINUX_KERNEL_2_4
         /*
            inode_init_once is from 2.6.x's inode.c; it's normally run
@@ -288,28 +273,9 @@
         pvfs2_inode->vfs_inode.i_version = 1;
 #endif
         /* Initialize the reader/writer semaphore */
-        init_rwsem(&pvfs2_inode->xattr_sem);
-    }
-    else
-    {
-        gossip_err("WARNING!! inode_ctor called without ctor flag\n");
-    }
+    init_rwsem(&pvfs2_inode->xattr_sem);
 }
 
-static void pvfs2_inode_cache_dtor(
-    void *old_pvfs2_inode,
-    pvfs2_kmem_cache_t * cachep,
-    unsigned long flags)
-{
-    pvfs2_inode_t *pvfs2_inode = (pvfs2_inode_t *)old_pvfs2_inode;
-
-    if (pvfs2_inode && pvfs2_inode->link_target)
-    {
-        kfree(pvfs2_inode->link_target);
-        pvfs2_inode->link_target = NULL;
-    }
-}
-
 static inline void add_to_pinode_list(pvfs2_inode_t *pvfs2_inode)
 {
     spin_lock(&pvfs2_inode_list_lock);
@@ -330,8 +296,7 @@
 {
     pvfs2_inode_cache = kmem_cache_create(
         "pvfs2_inode_cache", sizeof(pvfs2_inode_t), 0,
-        PVFS2_CACHE_CREATE_FLAGS, pvfs2_inode_cache_ctor,
-        pvfs2_inode_cache_dtor);
+        PVFS2_CACHE_CREATE_FLAGS, pvfs2_inode_cache_ctor, NULL);
 
     if (!pvfs2_inode_cache)
     {
@@ -377,7 +342,10 @@
     {
         gossip_err("Failed to allocate pvfs2_inode\n");
     }
-    else {
+    else 
+    {
+        ClearInitFlag(pvfs2_inode);
+        pvfs2_inode_initialize(pvfs2_inode);
         add_to_pinode_list(pvfs2_inode);
     }
     return pvfs2_inode;
@@ -398,27 +366,11 @@
 
 #ifdef HAVE_AIO_VFS_SUPPORT
 
-static void kiocb_ctor(
-    void *req,
-    pvfs2_kmem_cache_t * cachep,
-    unsigned long flags)
-{
-    if (flags & SLAB_CTOR_CONSTRUCTOR)
-    {
-        memset(req, 0, sizeof(pvfs2_kiocb));
-    }
-    else
-    {
-        gossip_err("WARNING!! kiocb_ctor called without ctor flag\n");
-    }
-}
-
-
 int kiocb_cache_initialize(void)
 {
     pvfs2_kiocb_cache = kmem_cache_create(
         "pvfs2_kiocbcache", sizeof(pvfs2_kiocb), 0,
-        PVFS2_CACHE_CREATE_FLAGS, kiocb_ctor, NULL);
+        PVFS2_CACHE_CREATE_FLAGS, NULL, NULL);
 
     if (!pvfs2_kiocb_cache)
     {
@@ -447,6 +399,10 @@
     {
         gossip_err("kiocb_alloc: kmem_cache_alloc failed!\n");
     }
+    else
+    {
+        memset(x, 0, sizeof(pvfs2_kiocb));
+    }
     return x;
 }
 
Index: src/kernel/linux-2.6/pvfs2-kernel.h
===================================================================
--- src/kernel/linux-2.6/pvfs2-kernel.h	(revision 18666)
+++ src/kernel/linux-2.6/pvfs2-kernel.h	(working copy)
@@ -363,7 +363,7 @@
 typedef struct
 {
     PVFS_object_ref refn;
-    char *link_target;
+    char link_target[PVFS_NAME_MAX];
     /*
      * Reading/Writing Extended attributes need to acquire the appropriate
      * reader/writer semaphore on the pvfs2_inode_t structure.
