Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-5] src/sys/fs/puffs

Module Name:    src
Committed By:   riz
Date:           Wed Nov  2 20:11:12 UTC 2011

Modified Files:
        src/sys/fs/puffs [netbsd-5]: puffs_msgif.c puffs_node.c puffs_vfsops.c

Log Message:
Pull up following revision(s) (requested by manu in ticket #1679):
        sys/fs/puffs/puffs_vnops.c: revision 1.157
        sys/fs/puffs/puffs_vnops.c: revision 1.158
        sys/fs/puffs/puffs_vnops.c: revision 1.159
        sys/fs/puffs/puffs_vfsops.c: revision 1.97
        sys/fs/puffs/puffs_vfsops.c: revision 1.99
        sys/fs/puffs/puffs_vnops.c: revision 1.160
        sys/fs/puffs/puffs_vfsops.c: revision 1.100
        sys/miscfs/syncfs/sync_subr.c: revision 1.47
        sys/fs/puffs/puffs_node.c: revision 1.21
        sys/fs/puffs/puffs_node.c: revision 1.22
        sys/fs/puffs/puffs_msgif.c: revision 1.88
        sys/fs/puffs/puffs_msgif.c: revision 1.89
        sys/fs/puffs/puffs_vnops.c: revision 1.156
Make sure ioflush does not sleep in PUFFS code path, waiting for a mutex,
a memory allocation, or a response from the filesystem.
This avoids deadlocks in the following situations:
1) when memory is low: ioflush waits the fileystem, the fielsystem waits
   for memory
2) when the filesystem does not respond (e.g.: network outage ona
   distributed filesystem)
Fix the build that was broken by struct lwp *updateproc reference in
RUMP-visible code. Instead of checking that updateproc (aka ioflush,
aka syncer) will not sleep in PUFFS code, I check for any kernel thread:
after all none of them are designed to hang awaiting for a remote filesystem
operation to complete.
Roll back the change that forced kernel threads to not sleep in PUFFS.
The change does not make consensus, since only pagedaemon should need it.
Other threads will tolerate sleeping, and problems here are only symptoms
that something is going wrong in memory management. The cause, not the
symptoms, need to be fixed.
Make sure pagedaemon does not sleep for memory in puffs_vnop_sleep.
Add KASSERT on any sleeping memory allocation to check it cannot happen again.
Remove #ifdef DIAGNOSTIC guards around KASSERT, as the macro contains them

To generate a diff of this commit:
cvs rdiff -u -r1.72.4.4 -r1.72.4.5 src/sys/fs/puffs/puffs_msgif.c
cvs rdiff -u -r1.13.10.2 -r1.13.10.3 src/sys/fs/puffs/puffs_node.c
cvs rdiff -u -r1.81.8.2 -r1.81.8.3 src/sys/fs/puffs/puffs_vfsops.c
cvs rdiff -u -r1.129.4.10 -r1.129.4.11 src/sys/fs/puffs/puffs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Home | Main Index | Thread Index | Old Index