7#include "ScsiController.h"
12 if (!controller || !controller->canWaitForCompletion() || !controller->acquireDiskOperation(use))
16PagingStatus ScsiDisk::doPagingTransfer(PagingOperation, uint64_t,
void*) {
17 return PagingStatus::Unsupported;
22 if (prepared != Cache::DiscardStatus::Ready) {
23 if (prepared == Cache::DiscardStatus::NoMemory)
24 return PagingStatus::NoMemory;
25 return prepared == Cache::DiscardStatus::Closed ? PagingStatus::Closed : PagingStatus::Busy;
28 return PagingStatus::IoError;
30 const PagingStatus flushed = transport.transfer(PagingOperation::Flush, 0,
nullptr);
31 if (flushed != PagingStatus::Success)
33 discard.get()->commit();
34 return PagingStatus::Success;
37bool ScsiDisk::hasNoCacheLoans() {
39 return m_Cache.
prepareDiscardFrom(0,
nullptr, 0, discard) == Cache::DiscardStatus::Ready;
DiscardStatus prepareDiscardFrom(uintptr_t cutoff, const DiscardReference *references, size_t count, UniquePointer< PreparedDiscard > &result)
static bool retireCachePageCallback(uintptr_t key, uintptr_t page, void *meta)