]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
- Don't doubly call storeUnlockObject() e.g. when file_write fails
authorwessels <>
Tue, 10 Feb 1998 02:07:00 +0000 (02:07 +0000)
committerwessels <>
Tue, 10 Feb 1998 02:07:00 +0000 (02:07 +0000)
- reset filemap bit when clearing swap_file_number

src/store_swapout.cc

index e3da6152ee635672a732a6a916407b1516f4cd82..713047beceafa28bf62d369e65e555dbfb7b539b 100644 (file)
@@ -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