summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1996-05-24 05:14:44 +0000
committerdyson <dyson@FreeBSD.org>1996-05-24 05:14:44 +0000
commit5ff3dd6648cbbe60b55533ce971e45cc65804fb0 (patch)
tree9ceeb087306a821156d8fada4649819f3f709cd7 /sys/vm
parent428f960220011db581fa259b20ce6af8eb71b6cd (diff)
downloadFreeBSD-src-5ff3dd6648cbbe60b55533ce971e45cc65804fb0.zip
FreeBSD-src-5ff3dd6648cbbe60b55533ce971e45cc65804fb0.tar.gz
Make the conversion from the default pager to swap pager more robust
in the face of low memory conditions.
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/default_pager.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/vm/default_pager.c b/sys/vm/default_pager.c
index dae1837..92db149 100644
--- a/sys/vm/default_pager.c
+++ b/sys/vm/default_pager.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: default_pager.c,v 1.5 1995/12/14 09:54:46 phk Exp $
+ * $Id: default_pager.c,v 1.6 1996/01/19 03:59:36 dyson Exp $
*/
#include <sys/param.h>
@@ -125,10 +125,12 @@ default_pager_putpages(object, m, c, sync, rtvals)
object->type = OBJT_SWAP;
if (swap_pager_swp_alloc(object, M_KERNEL) != 0) {
- object->type = OBJT_DEFAULT;
- for (i = 0; i < c; i++)
- rtvals[i] = VM_PAGER_FAIL;
- return VM_PAGER_FAIL;
+ if (swap_pager_swp_alloc(object, M_NOWAIT) != 0) {
+ object->type = OBJT_DEFAULT;
+ for (i = 0; i < c; i++)
+ rtvals[i] = VM_PAGER_FAIL;
+ return VM_PAGER_FAIL;
+ }
}
return swap_pager_putpages(object, m, c, sync, rtvals);
OpenPOWER on IntegriCloud