projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
drop #ifdef SIMFS for /etc/config's sake
[unix-history]
/
usr
/
src
/
sys
/
ufs
/
ffs
/
ufs_vnops.c
diff --git
a/usr/src/sys/ufs/ffs/ufs_vnops.c
b/usr/src/sys/ufs/ffs/ufs_vnops.c
index
8850d68
..
580ac39
100644
(file)
--- a/
usr/src/sys/ufs/ffs/ufs_vnops.c
+++ b/
usr/src/sys/ufs/ffs/ufs_vnops.c
@@
-1,10
+1,5
@@
-/* ufs_vnops.c 4.2
3 82/04/19
*/
+/* ufs_vnops.c 4.2
7 82/06/25
*/
-/* merged into kernel: @(#)sys3.c 2.2 4/8/82 */
-
-#ifdef SIMFS
-#include "../h/sysrenam.h"
-#endif
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/dir.h"
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/dir.h"
@@
-47,11
+42,9
@@
register struct inode **ipp;
}
if(access(ip, IEXEC))
goto bad;
}
if(access(ip, IEXEC))
goto bad;
- irele(ip);
- if (*ipp) {
- ilock(*ipp);
- iput(*ipp);
- }
+ iunlock(ip);
+ if (*ipp)
+ irele(*ipp);
*ipp = ip;
return;
*ipp = ip;
return;
@@
-122,11
+115,13
@@
open1(ip, mode, trf)
u.u_error = EISDIR;
}
}
u.u_error = EISDIR;
}
}
- if (u.u_error)
- goto out;
+ if (u.u_error) {
+ iput(ip);
+ return;
+ }
if (trf == 1)
itrunc(ip);
if (trf == 1)
itrunc(ip);
- i
rele
(ip);
+ i
unlock
(ip);
if ((fp = falloc()) == NULL)
goto out;
fp->f_flag = mode&(FREAD|FWRITE);
if ((fp = falloc()) == NULL)
goto out;
fp->f_flag = mode&(FREAD|FWRITE);
@@
-138,8
+133,7
@@
open1(ip, mode, trf)
u.u_ofile[i] = NULL;
fp->f_count--;
out:
u.u_ofile[i] = NULL;
fp->f_count--;
out:
- if (ip != NULL)
- iput(ip);
+ irele(ip);
}
/*
}
/*
@@
-200,7
+194,7
@@
link()
ip->i_nlink++;
ip->i_flag |= ICHG;
iupdat(ip, &time, &time, 1);
ip->i_nlink++;
ip->i_flag |= ICHG;
iupdat(ip, &time, &time, 1);
- i
rele
(ip);
+ i
unlock
(ip);
u.u_dirp = (caddr_t)uap->linkname;
xp = namei(uchar, 1, 0);
if (xp != NULL) {
u.u_dirp = (caddr_t)uap->linkname;
xp = namei(uchar, 1, 0);
if (xp != NULL) {
@@
-222,7
+216,7
@@
out:
ip->i_flag |= ICHG;
}
out1:
ip->i_flag |= ICHG;
}
out1:
- i
put
(ip);
+ i
rele
(ip);
}
/*
}
/*
@@
-283,6
+277,7
@@
unlink()
struct fs *fs;
struct buf *bp;
int lbn, bn, base;
struct fs *fs;
struct buf *bp;
int lbn, bn, base;
+ int unlinkingdot = 0;
pp = namei(uchar, 2, 0);
if(pp == NULL)
pp = namei(uchar, 2, 0);
if(pp == NULL)
@@
-294,6
+289,7
@@
unlink()
if (pp->i_number == u.u_dent.d_ino) {
ip = pp;
ip->i_count++;
if (pp->i_number == u.u_dent.d_ino) {
ip = pp;
ip->i_count++;
+ unlinkingdot++;
} else
ip = iget(pp->i_dev, pp->i_fs, u.u_dent.d_ino);
if(ip == NULL)
} else
ip = iget(pp->i_dev, pp->i_fs, u.u_dent.d_ino);
if(ip == NULL)
@@
-345,7
+341,10
@@
unlink()
ip->i_flag |= ICHG;
out:
ip->i_flag |= ICHG;
out:
- iput(ip);
+ if (unlinkingdot)
+ irele(ip);
+ else
+ iput(ip);
out1:
iput(pp);
}
out1:
iput(pp);
}
@@
-480,7
+479,7
@@
stat1(ip, ub)
IUPDAT(ip, &time, &time, 0);
/*
IUPDAT(ip, &time, &time, 0);
/*
- *
First c
opy from inode table
+ *
C
opy from inode table
*/
ds.st_dev = ip->i_dev;
ds.st_ino = ip->i_number;
*/
ds.st_dev = ip->i_dev;
ds.st_ino = ip->i_number;
@@
-493,6
+492,7
@@
stat1(ip, ub)
ds.st_atime = ip->i_atime;
ds.st_mtime = ip->i_mtime;
ds.st_ctime = ip->i_ctime;
ds.st_atime = ip->i_atime;
ds.st_mtime = ip->i_mtime;
ds.st_ctime = ip->i_ctime;
+ ds.st_blksize = ip->i_fs->fs_bsize;
if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
u.u_error = EFAULT;
}
if (copyout((caddr_t)&ds, (caddr_t)ub, sizeof(ds)) < 0)
u.u_error = EFAULT;
}