[PVFS2-CVS] commit by neill in pvfs2/src/kernel/linux-2.6: inode.c namei.c pvfs2-utils.c

CVS commit program cvs at parl.clemson.edu
Wed Sep 1 15:08:09 EDT 2004


Update of /projects/cvsroot/pvfs2/src/kernel/linux-2.6
In directory parlweb:/tmp/cvs-serv22419/src/kernel/linux-2.6

Modified Files:
	inode.c namei.c pvfs2-utils.c 
Log Message:
- fixed possible flow mutex memory leak (ptr set to null before free
  check was done)
- try to keep the existing mutex (if any) throughout the flow_reset
- make pass over kernel code making sure that out link counts are
  correct again
- fixed directory inode mtime and ctime changes on updates
- misc cleanups


Index: inode.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/kernel/linux-2.6/inode.c,v
diff -p -u -r1.46 -r1.47
--- inode.c	25 Aug 2004 16:42:03 -0000	1.46
+++ inode.c	1 Sep 2004 18:08:09 -0000	1.47
@@ -259,14 +259,10 @@ int pvfs2_setattr(struct dentry *dentry,
 
     pvfs2_print("pvfs2_setattr: called on %s\n", dentry->d_name.name);
 
-    ret = inode_change_ok(inode, iattr);
-    if (ret == 0)
+    if (inode_change_ok(inode, iattr) == 0)
     {
-        if (S_ISREG(inode->i_mode))
-        {
-            ret = inode_setattr(inode, iattr);
-            pvfs2_print("pvfs2_setattr: inode_setattr returned %d\n", ret);
-        }
+        ret = inode_setattr(inode, iattr);
+        pvfs2_print("pvfs2_setattr: inode_setattr returned %d\n", ret);
 
         if (ret == 0)
         {

Index: namei.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/kernel/linux-2.6/namei.c,v
diff -p -u -r1.56 -r1.57
--- namei.c	28 Jul 2004 14:32:53 -0000	1.56
+++ namei.c	1 Sep 2004 18:08:09 -0000	1.57
@@ -37,8 +37,14 @@ static int pvfs2_create(
     inode = pvfs2_create_entry(
         dir, dentry, NULL, mode, PVFS2_VFS_OP_CREATE, &ret);
 
-    pvfs2_print("pvfs2_create: returning %d\n", (inode ? 0 : ret));
-    return (inode ? 0 : ret);
+    if (inode)
+    {
+        dir->i_mtime = dir->i_ctime = CURRENT_TIME;
+        ret = 0;
+    }
+
+    pvfs2_print("pvfs2_create: returning %d\n", ret);
+    return ret;
 }
 
 #ifdef PVFS2_LINUX_KERNEL_2_4
@@ -228,6 +234,7 @@ static int pvfs2_unlink(
     {
         inode->i_nlink--;
         inode->i_ctime = dir->i_ctime;
+        dir->i_mtime = dir->i_ctime = CURRENT_TIME;
     }
     return ret;
 }
@@ -245,20 +252,13 @@ static int pvfs2_symlink(
     inode = pvfs2_create_entry(
         dir, dentry, symname, mode, PVFS2_VFS_OP_SYMLINK, &ret);
 
-    return (inode ? 0 : ret);
-}
-
-#if 0
-static int pvfs2_mknod(
-    struct inode *dir,
-    struct dentry *dentry,
-    int mode,
-    dev_t rdev)
-{
-    pvfs2_print("pvfs2_mknod: called\n");
-    return 0;
+    if (inode)
+    {
+        dir->i_mtime = dir->i_ctime = CURRENT_TIME;
+        ret = 0;
+    }
+    return ret;
 }
-#endif
 
 static int pvfs2_mkdir(
     struct inode *dir,
@@ -274,6 +274,7 @@ static int pvfs2_mkdir(
     if (inode)
     {
 	dir->i_nlink++;
+        dir->i_mtime = dir->i_ctime = CURRENT_TIME;
 	ret = 0;
     }
     return ret;
@@ -286,18 +287,12 @@ static int pvfs2_rmdir(
     int ret = -ENOTEMPTY;
     struct inode *inode = dentry->d_inode;
 
-    /* FIXME: is this necessary? */
-    if (!d_unhashed(dentry))
-    {
-	return -EBUSY;
-    }
-
     ret = pvfs2_unlink(dir, dentry);
     if (ret == 0)
     {
         dentry->d_inode->i_nlink--;
         inode->i_size = 0;
-        dir->i_nlink--;
+	dir->i_nlink--;
         dir->i_mtime = dir->i_ctime = CURRENT_TIME;
     }
     return ret;

Index: pvfs2-utils.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/kernel/linux-2.6/pvfs2-utils.c,v
diff -p -u -r1.85 -r1.86
--- pvfs2-utils.c	31 Aug 2004 18:03:52 -0000	1.85
+++ pvfs2-utils.c	1 Sep 2004 18:08:09 -0000	1.86
@@ -760,9 +760,11 @@ struct inode *pvfs2_create_entry(
         switch (op_type)
         {
             case PVFS2_VFS_OP_CREATE:
-                return pvfs2_create_file(dir, dentry, mode, error_code);
+                return pvfs2_create_file(
+                    dir, dentry, mode, error_code);
             case PVFS2_VFS_OP_MKDIR:
-                return pvfs2_create_dir(dir, dentry, mode, error_code);
+                return pvfs2_create_dir(
+                    dir, dentry, mode, error_code);
             case PVFS2_VFS_OP_SYMLINK:
                 return pvfs2_create_symlink(
                     dir, dentry, symname, mode, error_code);



More information about the PVFS2-CVS mailing list