]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/qnx4/namei.c
perf annotate: Print a sorted summary of annotated overhead lines
[mv-sheeva.git] / fs / qnx4 / namei.c
index c3d83f67154a61c2fe39421d7809a04d4769577b..5972ed21493725d762995d8d8110c8abb0b1529c 100644 (file)
  * 04-07-1998 by Frank Denis : first step for rmdir/unlink.
  */
 
-#include <linux/time.h>
-#include <linux/fs.h>
-#include <linux/qnx4_fs.h>
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/stat.h>
-#include <linux/fcntl.h>
-#include <linux/errno.h>
 #include <linux/smp_lock.h>
 #include <linux/buffer_head.h>
+#include "qnx4.h"
 
 
 /*
@@ -128,10 +121,12 @@ struct dentry * qnx4_lookup(struct inode *dir, struct dentry *dentry, struct nam
        }
        brelse(bh);
 
-       if ((foundinode = iget(dir->i_sb, ino)) == NULL) {
+       foundinode = qnx4_iget(dir->i_sb, ino);
+       if (IS_ERR(foundinode)) {
                unlock_kernel();
-               QNX4DEBUG(("qnx4: lookup->iget -> NULL\n"));
-               return ERR_PTR(-EACCES);
+               QNX4DEBUG(("qnx4: lookup->iget -> error %ld\n",
+                          PTR_ERR(foundinode)));
+               return ERR_CAST(foundinode);
        }
 out:
        unlock_kernel();
@@ -185,12 +180,11 @@ int qnx4_rmdir(struct inode *dir, struct dentry *dentry)
        de->di_status = 0;
        memset(de->di_fname, 0, sizeof de->di_fname);
        de->di_mode = 0;
-       mark_buffer_dirty(bh);
-       inode->i_nlink = 0;
+       mark_buffer_dirty_inode(bh, dir);
+       clear_nlink(inode);
        mark_inode_dirty(inode);
        inode->i_ctime = dir->i_ctime = dir->i_mtime = CURRENT_TIME_SEC;
-       dir->i_nlink--;
-       mark_inode_dirty(dir);
+       inode_dec_link_count(dir);
        retval = 0;
 
       end_rmdir:
@@ -231,12 +225,11 @@ int qnx4_unlink(struct inode *dir, struct dentry *dentry)
        de->di_status = 0;
        memset(de->di_fname, 0, sizeof de->di_fname);
        de->di_mode = 0;
-       mark_buffer_dirty(bh);
+       mark_buffer_dirty_inode(bh, dir);
        dir->i_ctime = dir->i_mtime = CURRENT_TIME_SEC;
        mark_inode_dirty(dir);
-       inode->i_nlink--;
        inode->i_ctime = dir->i_ctime;
-       mark_inode_dirty(inode);
+       inode_dec_link_count(inode);
        retval = 0;
 
 end_unlink: