IoStatus->Information = 0;
return FALSE;
}
+ if (current->FileOffset >= ReadOffset + Length)
+ break;
current_entry = current_entry->Flink;
}
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
/* datas not available */
return FALSE;
}
+ if (CacheSeg->FileOffset >= WriteOffset + Length)
+ break;
current_entry = current_entry->Flink;
}
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
ULONG TempLength;
Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
- if (Wait)
+ if (!Wait)
{
/* testing, if the requested datas are available */
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
/* datas not available */
return FALSE;
}
+ if (CacheSeg->FileOffset >= WriteOffset.u.LowPart + Length)
+ break;
current_entry = current_entry->Flink;
}
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
CACHE_SEGMENT,
BcbSegmentListEntry);
current_entry = current_entry->Flink;
- if (current->FileOffset > FileSizes->AllocationSize.QuadPart ||
- (current->FileOffset == 0 && FileSizes->AllocationSize.QuadPart == 0))
+ if (current->FileOffset >= FileSizes->AllocationSize.QuadPart)
{
if ((current->ReferenceCount == 0) || ((current->ReferenceCount == 1) && current->Dirty))
{
NULL);
return current;
}
+ if (current->FileOffset > FileOffset)
+ break;
current_entry = current_entry->Flink;
}
}
if (current->FileOffset < FileOffset)
{
- if (previous == NULL)
- {
- previous = current;
- }
- else
- {
- if (previous->FileOffset < current->FileOffset)
- {
- previous = current;
- }
- }
+ ASSERT(previous == NULL ||
+ previous->FileOffset < current->FileOffset);
+ previous = current;
}
+ if (current->FileOffset > FileOffset)
+ break;
current_entry = current_entry->Flink;
}
/* There was no existing segment. */