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
add proc pointers to appropriate vnode operations
[unix-history]
/
usr
/
src
/
sys
/
ufs
/
ufs
/
ufs_inode.c
diff --git
a/usr/src/sys/ufs/ufs/ufs_inode.c
b/usr/src/sys/ufs/ufs/ufs_inode.c
index
d525c14
..
e1954e4
100644
(file)
--- a/
usr/src/sys/ufs/ufs/ufs_inode.c
+++ b/
usr/src/sys/ufs/ufs/ufs_inode.c
@@
-4,25
+4,24
@@
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)ufs_inode.c 7.3
5
(Berkeley) %G%
+ * @(#)ufs_inode.c 7.3
9
(Berkeley) %G%
*/
#include "param.h"
#include "systm.h"
#include "mount.h"
*/
#include "param.h"
#include "systm.h"
#include "mount.h"
-#include "user.h"
#include "proc.h"
#include "file.h"
#include "buf.h"
#include "proc.h"
#include "file.h"
#include "buf.h"
-#include "cmap.h"
#include "vnode.h"
#include "vnode.h"
-#include "../ufs/quota.h"
-#include "../ufs/inode.h"
-#include "../ufs/fs.h"
-#include "../ufs/ufsmount.h"
#include "kernel.h"
#include "malloc.h"
#include "kernel.h"
#include "malloc.h"
+#include "quota.h"
+#include "inode.h"
+#include "fs.h"
+#include "ufsmount.h"
+
#define INOHSZ 512
#if ((INOHSZ&(INOHSZ-1)) == 0)
#define INOHASH(dev,ino) (((dev)+(ino))&(INOHSZ-1))
#define INOHSZ 512
#if ((INOHSZ&(INOHSZ-1)) == 0)
#define INOHASH(dev,ino) (((dev)+(ino))&(INOHSZ-1))
@@
-113,6
+112,7
@@
loop:
ip->i_devvp = 0;
ip->i_mode = 0;
ip->i_diroff = 0;
ip->i_devvp = 0;
ip->i_mode = 0;
ip->i_diroff = 0;
+ ip->i_lockf = 0;
#ifdef QUOTA
for (i = 0; i < MAXQUOTAS; i++)
ip->i_dquot[i] = NODQUOT;
#ifdef QUOTA
for (i = 0; i < MAXQUOTAS; i++)
ip->i_dquot[i] = NODQUOT;
@@
-230,8
+230,9
@@
iput(ip)
* Last reference to an inode, write the inode out and if necessary,
* truncate and deallocate the file.
*/
* Last reference to an inode, write the inode out and if necessary,
* truncate and deallocate the file.
*/
-ufs_inactive(vp)
+ufs_inactive(vp
, p
)
struct vnode *vp;
struct vnode *vp;
+ struct proc *p;
{
register struct inode *ip = VTOI(vp);
int mode, error = 0;
{
register struct inode *ip = VTOI(vp);
int mode, error = 0;
@@
-377,6
+378,7
@@
itrunc(oip, length, flags)
int aflags, error, allerror;
struct inode tip;
int aflags, error, allerror;
struct inode tip;
+ vnode_pager_setsize(ITOV(oip), length);
if (oip->i_size <= length) {
oip->i_flag |= ICHG|IUPD;
error = iupdat(oip, &time, &time, 1);
if (oip->i_size <= length) {
oip->i_flag |= ICHG|IUPD;
error = iupdat(oip, &time, &time, 1);
@@
-418,9
+420,7
@@
itrunc(oip, length, flags)
return (error);
oip->i_size = length;
size = blksize(fs, oip, lbn);
return (error);
oip->i_size = length;
size = blksize(fs, oip, lbn);
- bn = bp->b_blkno;
- count = howmany(size, CLBYTES);
- munhash(oip->i_devvp, bn + i * CLBYTES / DEV_BSIZE);
+ (void) vnode_pager_uncache(ITOV(oip));
bzero(bp->b_un.b_addr + offset, (unsigned)(size - offset));
allocbuf(bp, size);
if (flags & IO_SYNC)
bzero(bp->b_un.b_addr + offset, (unsigned)(size - offset));
allocbuf(bp, size);
if (flags & IO_SYNC)
@@
-646,14
+646,13
@@
ilock(ip)
while (ip->i_flag & ILOCKED) {
ip->i_flag |= IWANT;
while (ip->i_flag & ILOCKED) {
ip->i_flag |= IWANT;
- if (ip->i_spare0 ==
u.u_procp
->p_pid)
+ if (ip->i_spare0 ==
curproc
->p_pid)
panic("locking against myself");
panic("locking against myself");
- ip->i_spare1 =
u.u_procp
->p_pid;
+ ip->i_spare1 =
curproc
->p_pid;
(void) sleep((caddr_t)ip, PINOD);
}
ip->i_spare1 = 0;
(void) sleep((caddr_t)ip, PINOD);
}
ip->i_spare1 = 0;
- ip->i_spare0 = u.u_procp->p_pid;
- u.u_spare[0]++;
+ ip->i_spare0 = curproc->p_pid;
ip->i_flag |= ILOCKED;
}
ip->i_flag |= ILOCKED;
}
@@
-667,7
+666,6
@@
iunlock(ip)
if ((ip->i_flag & ILOCKED) == 0)
vprint("iunlock: unlocked inode", ITOV(ip));
ip->i_spare0 = 0;
if ((ip->i_flag & ILOCKED) == 0)
vprint("iunlock: unlocked inode", ITOV(ip));
ip->i_spare0 = 0;
- u.u_spare[0]--;
ip->i_flag &= ~ILOCKED;
if (ip->i_flag&IWANT) {
ip->i_flag &= ~IWANT;
ip->i_flag &= ~ILOCKED;
if (ip->i_flag&IWANT) {
ip->i_flag &= ~IWANT;