OpenAFS CVS Commit: openafs/src/afs/LINUX by shadow
cvs@penn.central.org
cvs@penn.central.org
Tue, 30 Jan 2001 21:28:15 EST
Update of /usr1/cvs/openafs/src/afs/LINUX
In directory penn.central.org:/usr0/build/openafs/openafs/src/afs/LINUX
Modified Files:
osi_file.c osi_misc.c osi_vfsops.c osi_vnodeops.c
Log Message:
DELTA linux-iput-and-glock-changes-20010130
AUTHOR chas@cmf.nrl.navy.mil
". afs_dentry_iput is essentially osi_iput, so it now calls osi_iput
it wasnt locking before checking i_count (and osi_iput didnt either)
osi_iput now AFS_GLOCK's. to do this afs_delete_inode was split
into afs_delete_inode (which does the locking) and osi_clear_inode
before osi_iput called afs_delete_inode, which since it wanted
to hold AFS_GLOCK, osi_iput couldnt call AFS_GLOCK. this seems
to have cured the problem i saw (running multiple 'ls -R &' would
cause a bad iput w/o fail) and i hope it fixes it otherwise.
its possible vc->lock should be held inside osi_clear_inode.
. removed osi_notify_change (i added during 2.4.0 development) and
now i just call inode_change_ok/inode_setattr. the 2.4.0
notify_change checks the dentry parent (which doenst exist for
the cache inodes)
. moved the locks around inside writepage, writepage_sync, commit_write.
the guy next door complained about pauses while running afs. i think
this addresses those issues. apparently you only need to lock_kernel()
during commit_write(). in order to get lock_kernel() inside AFS_GLOCK()
the AFS_GLOCK() was moved out of writepage_sync and into writepage
and commit_write"
--- DELTA config follows ---
linux-iput-and-glock-changes-20010130 openafs/src/afs/LINUX/osi_file.c 1.5 1.6
linux-iput-and-glock-changes-20010130 openafs/src/afs/LINUX/osi_misc.c 1.4 1.5
linux-iput-and-glock-changes-20010130 openafs/src/afs/LINUX/osi_vfsops.c 1.4 1.5
linux-iput-and-glock-changes-20010130 openafs/src/afs/LINUX/osi_vnodeops.c 1.9 1.10