From c2491f3dcdd17a63c5a0aa5a193d4031829a059e Mon Sep 17 00:00:00 2001 From: wessels <> Date: Tue, 10 Feb 1998 02:07:00 +0000 Subject: [PATCH] - Don't doubly call storeUnlockObject() e.g. when file_write fails - reset filemap bit when clearing swap_file_number --- src/store_swapout.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/store_swapout.cc b/src/store_swapout.cc index e3da6152ee..713047bece 100644 --- a/src/store_swapout.cc +++ b/src/store_swapout.cc @@ -40,6 +40,7 @@ storeSwapOutHandle(int fdnotused, int flag, size_t len, void *data) e->swap_status = SWAPOUT_NONE; if (e->swap_file_number > -1) { storeUnlinkFileno(e->swap_file_number); + storeDirMapBitReset(e->swap_file_number); e->swap_file_number = -1; } if (flag == DISK_NO_SPACE_LEFT) { @@ -194,14 +195,15 @@ void storeSwapOutFileClose(StoreEntry * e) { MemObject *mem = e->mem_obj; - if (mem->swapout.fd > -1) + if (mem->swapout.fd > -1) { file_close(mem->swapout.fd); + mem->swapout.fd = -1; + storeUnlockObject(e); + } #if USE_ASYNC_IO else aioCancel(-1, e); /* Make doubly certain pending ops are gone */ #endif - mem->swapout.fd = -1; - storeUnlockObject(e); } static void -- 2.47.2