1N/A * See the file LICENSE for redistribution information. 1N/A * Copyright (c) 1996, 1997, 1998 1N/A * Sleepycat Software. All rights reserved. 1N/A#
endif /* not lint */ 1N/A * Mpool file put function. 1N/A /* Validate arguments. */ 1N/A "%s: dirty flag set for readonly file page",
1N/A /* Decrement the pinned reference count. */ 1N/A "%s: put: more blocks returned than retrieved",
1N/A * If we're mapping the file, there's nothing to do. Because we can 1N/A * stop mapping the file at any time, we have to check on each buffer 1N/A * to see if the address we gave the application was part of the map 1N/A /* Convert the page address to a buffer header. */ 1N/A * Check for a reference count going to zero. This can happen if the 1N/A * application returns a page twice. 1N/A * If more than one reference to the page, we're done. Ignore the 1N/A * discard flags (for now) and leave it at its position in the LRU 1N/A * chain. The rest gets done at last reference close. 1N/A /* Move the buffer to the head/tail of the LRU chain. */ 1N/A * If this buffer is scheduled for writing because of a checkpoint, we 1N/A * need to write it (if we marked it dirty), or update the checkpoint 1N/A * counters (if we didn't mark it dirty). If we try to write it and 1N/A * can't, that's not necessarily an error, but set a flag so that the 1N/A * next time the memp_sync function runs we try writing it there, as 1N/A * the checkpoint application better be able to write all of the files.