Whamcloud - gitweb
* fix build breakage when this branch is built in a real SLES10 env
[fs/lustre-release.git] / libsysio / src / file.c
index bffc3fd..fbd91d8 100644 (file)
@@ -45,6 +45,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <sys/types.h>
+#include <sys/stat.h>
 #include <sys/queue.h>
 
 #include "sysio.h"
@@ -74,7 +75,8 @@ _sysio_fnew(struct inode *ino, int flags)
                return NULL;
 
        _SYSIO_FINIT(fil, ino, flags);
-       I_REF(ino);
+       F_REF(fil);
+       I_REF(fil->f_ino);
 
        return fil;
 }
@@ -91,6 +93,7 @@ _sysio_fgone(struct file *fil)
        assert(fil->f_ino);
        err = (*fil->f_ino->i_ops.inop_close)(fil->f_ino);
        assert(!err);
+       I_RELE(fil->f_ino);
        free(fil);
 }
 
@@ -271,7 +274,7 @@ _sysio_fd_dup(int oldfd, int newfd, int force)
        struct file *fil;
        int     fd;
 
-       if (oldfd == newfd)
+       if (oldfd == newfd && oldfd >= 0)
                return newfd;
 
        fil = _sysio_fd_find(oldfd);