[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