summaryrefslogtreecommitdiff
path: root/src/FileAllocationEntry.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FileAllocationEntry.cc')
-rw-r--r--src/FileAllocationEntry.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/FileAllocationEntry.cc b/src/FileAllocationEntry.cc
index af9c67c1..5bc39ee9 100644
--- a/src/FileAllocationEntry.cc
+++ b/src/FileAllocationEntry.cc
@@ -38,13 +38,24 @@
#include "RequestGroup.h"
#include "PieceStorage.h"
#include "DiskAdaptor.h"
+#include "prefs.h"
+#include "Option.h"
FileAllocationEntry::FileAllocationEntry(RequestGroup* requestGroup, Command* nextCommand):
RequestGroupEntry(requestGroup, nextCommand),
_fileAllocationIterator(requestGroup->getPieceStorage()->getDiskAdaptor()->fileAllocationIterator())
-{}
+{
+ if(_requestGroup->getOption()->getAsBool(PREF_ENABLE_DIRECT_IO)) {
+ _requestGroup->getPieceStorage()->getDiskAdaptor()->enableDirectIO();
+ }
+}
-FileAllocationEntry:: ~FileAllocationEntry() {}
+FileAllocationEntry:: ~FileAllocationEntry()
+{
+ if(_requestGroup->getOption()->getAsBool(PREF_ENABLE_DIRECT_IO)) {
+ _requestGroup->getPieceStorage()->getDiskAdaptor()->disableDirectIO();
+ }
+}
int64_t FileAllocationEntry::getCurrentLength()
{