The NetBSD Project

CVS log for src/sys/fs/puffs/puffs_sys.h

[BACK] Up to [] / src / sys / fs / puffs

Request diff between arbitrary revisions

Default branch: MAIN
Current tag: netbsd-5-2-2-RELEASE

Revision / (download) - annotate - [select for diffs], Sat Sep 17 18:53:29 2011 UTC (7 years, 2 months ago) by bouyer
Branch: netbsd-5
CVS Tags: netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2
Changes since +3 -1 lines
Diff to previous (colored) to branchpoint 1.70 (colored) next main 1.71 (colored)

Pull up following revision(s) (requested by manu in ticket #1666):
	sys/fs/puffs/puffs_sys.h: revision 1.78 via patch
	sys/fs/puffs/puffs_node.c: revision 1.20 via patch
	sys/fs/puffs/puffs_vnops.c: revision 1.155 via patch
Add a mutex for operations that touch size (setattr, getattr, write, fsync).
This is required to avoid data corruption bugs, where a getattr slices
itself within a setattr operation, and sets the size to the stall value
it got from the filesystem. That value is smaller than the one set by
setattr, and the call to uvm_vnp_setsize() trigged a spurious truncate.
The result is a chunk of zeroed data in the file.
Such a situation can easily happen when the ioflush thread issue a
VOP_FSYNC/puffs_vnop_sync/flushvncache/dosetattrn while andother process
do a sys_stat/VOP_GETATTR/puffs_vnop_getattr.
This mutex on size operation can be removed the day we decide VOP_GETATTR
has to operated on a locked vnode, since the other operations that touch
size already require that.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.

CVSweb <>