diff options
author | dyson <dyson@FreeBSD.org> | 1996-05-24 05:14:44 +0000 |
---|---|---|
committer | dyson <dyson@FreeBSD.org> | 1996-05-24 05:14:44 +0000 |
commit | 5ff3dd6648cbbe60b55533ce971e45cc65804fb0 (patch) | |
tree | 9ceeb087306a821156d8fada4649819f3f709cd7 /sys/vm/default_pager.c | |
parent | 428f960220011db581fa259b20ce6af8eb71b6cd (diff) | |
download | FreeBSD-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/default_pager.c')
-rw-r--r-- | sys/vm/default_pager.c | 12 |
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); |