summaryrefslogtreecommitdiff
path: root/src/MultiDiskAdaptor.cc
Commit message (Collapse)AuthorAgeFilesLines
* flush OS write buffers before saving control fileAli MJ Al-Nasrawy2020-06-171-0/+11
| | | | | | | | | | This ensures that pieces are physically written to disk before marking them as finished in the control file. This should prevent data loss and corruption when resuming downloads after a system crash. Signed-off-by: Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com>
* Fix compiler warning with Android NDK clangTatsuhiro Tsujikawa2017-01-231-1/+2
|
* Simplify cache writeTatsuhiro Tsujikawa2016-05-151-91/+3
| | | | | | | | | | The previous cache write routine was too complex. I'm sure I can rewrite it to more elegantly. But the primary motivation of this complex logic is for disk activity reduction on Windows 7, and I observed it on my old IDE disk. I checked it again recently, and there is no difference between with and without this complex logic. For this reason, it was removed. Will revert this change if many of users are not happy with this.
* make clang-format using clang-format-3.6Tatsuhiro Tsujikawa2015-12-271-164/+145
|
* Use user-defined literal for k, m, and g (powers of 1024)Tatsuhiro Tsujikawa2015-06-211-1/+1
|
* Refactor MultiDiskAdaptor::closeFile() and add assert for debuggingTatsuhiro Tsujikawa2015-03-221-7/+9
|
* Fixed some typos in code commentsDan Fandrich2015-01-161-2/+2
|
* Fix regression 100% CPU utility when -V is used and download is multi-file BTTatsuhiro Tsujikawa2014-07-201-0/+4
| | | | This is regression of a3426821c8a7f9cf8d80a81726157d4eb844f661
* MultiDiskAdaptor: Handle short readTatsuhiro Tsujikawa2014-07-021-5/+15
|
* Disard cache when checking checksumTatsuhiro Tsujikawa2014-07-021-0/+15
| | | | This will slow down checksum checking but does not thrash cache.
* Fix use-after-free on exit with multi-file torrent download + DHTTatsuhiro Tsujikawa2014-06-081-5/+7
| | | | | | | | | | | DefaultPieceStorage may be referenced by one of DHT task (e.g., DHTPeerLookupTask), after RequestGroup was deleted, and even after RequestGroupMan was deleted. DefaultPieceStorage has a reference to MultiDiskAdaptor which calls RequestGroupMan object on destruction. So when DHT task is destroyed, DefaultPieceStorage is destroyed, which in turn destroys MultiDiskAdaptor. DHT task is destroyed after RequestGroupMan was destroyed, MultiDiskAdaptor will use now freed RequestGroupMan object, this is use-after-free.
* Fix bug that zero length file is not opened when flushing cacheTatsuhiro Tsujikawa2014-06-081-0/+3
| | | | This bug was only seen when MultiDiskAdaptor was used.
* Fix unitest crashTatsuhiro Tsujikawa2014-01-051-1/+3
|
* Fix bug that numOpenFile_ is not reduced when MultiDiskAdaptor is deletedTatsuhiro Tsujikawa2013-12-311-2/+10
| | | | This bug caused assertion error in RequestGroupMan::ensureMaxOpenFileLimit
* Limit number of opened file globally with --bt-max-open-files optionTatsuhiro Tsujikawa2013-11-171-23/+26
| | | | | | | | | | This change changes the behavior of --bt-max-open-files. Previously, it specifies the maximum number of opened files for each multi-file download. Since it is more useful to limit the number globally, the option now specifies the global limit. This change suggests that aria2.changeOption() method now ignores --bt-max-open-files and aria2.changeGlobalOption now reads it and dynamically change the limit.
* Use std::unique_ptr for FileAllocationIteratorTatsuhiro Tsujikawa2013-07-061-2/+2
|
* MultiDiskWriter: Rewrite resetDiskWriterEntries() using simpler algorithmTatsuhiro Tsujikawa2013-07-061-60/+31
|
* MultiDiskAdaptor: Use std::unique_ptr for DiskWriterEntry and DiskWriterTatsuhiro Tsujikawa2013-07-061-116/+87
| | | | | MultiFileAllocationIterator is also rewritten so that it does not requre copying DiskWriterEntry objects.
* Cleanup a2functional.hTatsuhiro Tsujikawa2013-06-221-2/+2
| | | | | | Remove mem_fun_sh in favor of std::mem_fun. Remove unused functions. Use std::mem_fn instead of mem_fun_sh
* Require -std=c++11 and use std::shared_ptr instead of SharedHandleTatsuhiro Tsujikawa2013-06-221-30/+30
|
* Write data in 4K aligned offset in write with disk cache enabledTatsuhiro Tsujikawa2012-12-061-0/+98
| | | | | This greatly reduces disk activity especially on Win + NTFS. Not so much difference on Linux.
* Fixed bug that mmap won't work if MultiDiskAdaptor is usedTatsuhiro Tsujikawa2012-10-081-6/+11
|
* Removed trailing spacesTatsuhiro Tsujikawa2012-10-011-5/+5
|
* Removed *Handle typedefTatsuhiro Tsujikawa2012-09-281-2/+2
|
* Use int64_t instead of off_tTatsuhiro Tsujikawa2012-07-231-17/+17
| | | | | | | | Using off_t, at least, in DiskAdaptor layer is problematic because torrent can contain under 2GiB files but total sum of those files may exceed 2GiB limit, which makes off_t overflow in 32 bit system without large file support. So we use int64_t in API. We'll check the file length before download so that it does not exceed max off_t.
* Removed static_cast<int64>()s where they are unnecessaryTatsuhiro Tsujikawa2012-06-251-2/+1
|
* Use PRId64 for int64_t format specifierTatsuhiro Tsujikawa2012-06-251-7/+7
|
* Added --enable-mmap option.Tatsuhiro Tsujikawa2012-06-241-1/+10
| | | | | If this option is used, map files into memory using mmap(2). This option is experimental.
* No retry for close() with EINTR. Also reverted changes in d5ffa253.Tatsuhiro Tsujikawa2011-12-251-14/+2
|
* AbstractDiskWriter::closeFile(): Throw exception if close() failed.Tatsuhiro Tsujikawa2011-12-091-2/+14
| | | | | | | | | | | ~AbstractDiskWriter calles closeFile(), but suppresses exception. MultiDiskAdaptor::closeFile() logs error if child DiskWriter::closeFile() throws exception. This exception is not rethrown. If at least one exception is caught, MultiDiskAdaptor::closeFile() throws new DlAbortEx. RequestGroupMan::closeFile() just logs exception and suppress each exception. Generally, don't call closeFile() in destructor. If you need to call it, it must suppress the exception.
* Use int or int32_t instead of size_t where suitableTatsuhiro Tsujikawa2011-12-091-2/+2
|
* Replaced uint64_t with off_t or int64_t.Tatsuhiro Tsujikawa2011-12-091-21/+17
| | | | | Since off_t is int64_t with LFS, we cannot take advantage of extra capacity of uint64_t.
* Use fmt instead of util::itosTatsuhiro Tsujikawa2011-11-131-4/+3
|
* Removed utf8ToNative from log message and exception message.Tatsuhiro Tsujikawa2011-08-081-4/+4
|
* In MinGW32, open file with UNICODE filename and print them in ANSI.Tatsuhiro Tsujikawa2011-08-041-8/+10
|
* Removed use of O_DIRECT because it performs bad.Tatsuhiro Tsujikawa2011-07-161-42/+0
|
* 2010-11-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-11-251-11/+6
| | | | | | | | | Removed MultiDiskAdaptor::mkdir() because directory structure is created at AbstractDiskWriter::createFile(). * src/MultiDiskAdaptor.cc * src/MultiDiskAdaptor.h
* 2010-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-11-201-6/+5
| | | | | | Replaced StringFormat with fmt
* 2010-11-20 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-11-201-33/+31
| | | | | | | Rewritten Logger interface. Logger now writes source file name and line number in log file.
* 2010-11-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-11-141-0/+2
| | | | | | | | | Added .cc file for classes/structs that only provided by header file. Defined non-POD classes' ctor, dtor in .cc file. Moved implementation code in header file to .cc file for major classes/strucsts.
* 2010-11-12 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-11-121-3/+3
| | | | | | | | Removed SharedHandle::isNull(). Instead we added operator* and operator unspecified_bool_type. Removed use of WeakHandle and replaced with raw pointer.
* 2010-11-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-11-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To match the behavior of friend operator functions in SharedHandle.h to std::tr1::shared_ptr, we intentionally broke these functions and modified code so that our code does not depend on old behavior. * src/AbstractCommand.cc * src/DHTAbstractNodeLookupTask.h * src/DHTBucket.cc * src/DHTMessageReceiver.cc * src/DHTNodeLookupEntry.cc * src/DHTRoutingTable.cc * src/DefaultBtRequestFactory.cc * src/DefaultPeerStorage.cc * src/DefaultPieceStorage.cc * src/DownloadContext.cc * src/EpollEventPoll.cc * src/Event.h * src/HttpConnection.cc * src/KqueueEventPoll.cc * src/MultiDiskAdaptor.cc * src/PeerAbstractCommand.cc * src/PieceStatMan.cc * src/PollEventPoll.cc * src/PortEventPoll.cc * src/SegmentMan.cc * src/SelectEventPoll.cc * src/SelectEventPoll.h * src/ServerStatMan.cc * src/SharedHandle.h * src/UnknownLengthPieceStorage.cc * src/a2functional.h * src/option_processing.cc * src/version_usage.cc * test/BNodeTest.cc * test/DHTAnnouncePeerMessageTest.cc * test/DHTBucketTest.cc * test/DHTFindNodeMessageTest.cc * test/DHTGetPeersMessageTest.cc * test/DHTIDCloserTest.cc * test/DHTMessageFactoryImplTest.cc * test/DHTPingMessageTest.cc * test/DefaultBtRequestFactoryTest.cc * test/DefaultPeerStorageTest.cc * test/SequentialPickerTest.cc * test/SingletonHolderTest.cc
* 2010-10-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-10-301-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use unnamed namespace instead of static keyword. * src/AbstractCommand.cc * src/AdaptiveURISelector.cc * src/Base64.cc * src/BitfieldMan.cc * src/BtDependency.cc * src/ConsoleStatCalc.cc * src/ContentTypeRequestGroupCriteria.cc * src/CookieStorage.cc * src/DHTMessageFactoryImpl.cc * src/DHTRoutingTableDeserializer.cc * src/DefaultBtAnnounce.cc * src/DefaultBtProgressInfoFile.cc * src/DefaultPeerStorage.cc * src/DefaultPieceStorage.cc * src/DownloadCommand.cc * src/DownloadEngine.cc * src/EpollEventPoll.cc * src/ExpatMetalinkProcessor.cc * src/ExpatXmlRpcRequestProcessor.cc * src/FileEntry.cc * src/HttpRequest.cc * src/HttpRequestCommand.cc * src/HttpResponseCommand.cc * src/KqueueEventPoll.cc * src/LongestSequencePieceSelector.cc * src/MetalinkParserStateV3Impl.cc * src/MetalinkParserStateV4Impl.cc * src/MultiDiskAdaptor.cc * src/MultiUrlRequestInfo.cc * src/OptionParser.cc * src/PeerSessionResource.cc * src/PortEventPoll.cc * src/Request.cc * src/RequestGroupMan.cc * src/SelectEventPoll.cc * src/SessionSerializer.cc * src/SimpleLogFormatter.cc * src/Sqlite3CookieParser.cc * src/TrackerWatcherCommand.cc * src/XML2SAXMetalinkProcessor.cc * src/Xml2XmlRpcRequestProcessor.cc * src/XmlRpcMethod.cc * src/XmlRpcMethodImpl.cc * src/XmlRpcResponse.cc * src/base32.cc * src/bencode2.cc * src/bittorrent_helper.cc * src/download_helper.cc * src/main.cc * src/messageDigest.cc * src/option_processing.cc * src/util.cc * test/AnnounceListTest.cc * test/BtRegistryTest.cc * test/DHTBucketTest.cc * test/DHTRoutingTableTest.cc * test/DefaultBtAnnounceTest.cc * test/FileEntryTest.cc * test/FtpConnectionTest.cc * test/MSEHandshakeTest.cc * test/MagnetTest.cc * test/XmlRpcMethodTest.cc * test/array_funTest.cc
* 2010-10-30 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-10-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added '// namespace' after end of unnamed namespace. * src/AbstractCommand.cc * src/AnnounceList.cc * src/BtSeederStateChoke.cc * src/ConsoleStatCalc.cc * src/CookieStorage.cc * src/DHTBucket.cc * src/DHTPeerAnnounceEntry.cc * src/DHTPeerAnnounceStorage.cc * src/DHTTaskQueueImpl.cc * src/DefaultBtMessageDispatcher.cc * src/DefaultBtRequestFactory.cc * src/DefaultPeerStorage.cc * src/DefaultPieceStorage.cc * src/ExpatMetalinkProcessor.cc * src/ExpatXmlRpcRequestProcessor.cc * src/FeedbackURISelector.cc * src/FileEntry.cc * src/GZipEncoder.cc * src/Metalink2RequestGroup.cc * src/MetalinkEntry.cc * src/MetalinkParserStateV3Impl.cc * src/MetalinkParserStateV4Impl.cc * src/Metalinker.cc * src/MultiDiskAdaptor.cc * src/Netrc.cc * src/NsCookieParser.cc * src/OptionParser.cc * src/PieceStatMan.cc * src/RarestPieceSelector.cc * src/RequestGroupMan.cc * src/SegmentMan.cc * src/ServerStatMan.cc * src/SocketCore.cc * src/XML2SAXMetalinkProcessor.cc * src/Xml2XmlRpcRequestProcessor.cc * src/XmlRpcMethodImpl.cc * src/cookie_helper.cc * src/download_helper.cc * src/messageDigest.cc * src/util.cc
* 2010-10-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-10-281-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixed compiler warning about printf format. * src/AdaptiveURISelector.cc * src/BtPieceMessage.cc * src/DHTAbstractNodeLookupTask.h * src/DHTMessageFactoryImpl.cc * src/DHTPeerLookupTask.cc * src/DHTReplaceNodeTask.cc * src/DefaultBtAnnounce.cc * src/DefaultBtInteractive.cc * src/DefaultBtMessageDispatcher.cc * src/DefaultBtProgressInfoFile.cc * src/DefaultBtRequestFactory.cc * src/DefaultExtensionMessageFactory.cc * src/DefaultPieceStorage.cc * src/DownloadCommand.cc * src/FileAllocationCommand.cc * src/FileEntry.cc * src/HandshakeExtensionMessage.cc * src/IteratableChunkChecksumValidator.cc * src/LibgcryptDHKeyExchange.h * src/LibsslDHKeyExchange.h * src/LpdDispatchMessageCommand.cc * src/MSEHandshake.cc * src/MessageDigestHelper.cc * src/MultiDiskAdaptor.cc * src/PeerConnection.cc * src/SegmentMan.cc * src/TimedHaltCommand.cc * src/UTMetadataRequestExtensionMessage.cc * src/UTPexExtensionMessage.cc * src/bencode2.cc * src/bittorrent_helper.cc * src/message.h
* 2010-08-31 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-08-311-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enclosed classes and structs declared in *.cc files unnamed namespace. Added static keyword for function template in *.cc files(TODO we should use unnamed namespace instead of static). * src/AbstractCommand.cc * src/AnnounceList.cc * src/BtLeecherStateChoke.cc * src/BtLeecherStateChoke.h * src/BtSeederStateChoke.cc * src/BtSeederStateChoke.h * src/ConsoleStatCalc.cc * src/ContentTypeRequestGroupCriteria.cc * src/CookieStorage.cc * src/DHTBucket.cc * src/DHTPeerAnnounceEntry.cc * src/DHTPeerAnnounceStorage.cc * src/DefaultBtMessageDispatcher.cc * src/DefaultBtRequestFactory.cc * src/DefaultPeerStorage.cc * src/DefaultPieceStorage.cc * src/ExpatMetalinkProcessor.cc * src/ExpatXmlRpcRequestProcessor.cc * src/FeedbackURISelector.cc * src/FileEntry.cc * src/Metalink2RequestGroup.cc * src/MetalinkEntry.cc * src/Metalinker.cc * src/MultiDiskAdaptor.cc * src/Netrc.cc * src/OptionParser.cc * src/PieceStatMan.cc * src/RarestPieceSelector.cc * src/RequestGroupMan.cc * src/SegmentMan.cc * src/ServerStatMan.cc * src/XML2SAXMetalinkProcessor.cc * src/Xml2XmlRpcRequestProcessor.cc * src/XmlRpcResponse.cc * src/a2algo.h * src/download_helper.cc
* 2010-07-10 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-07-101-1/+1
| | | | | | | | | | Removed unusable typedefs * src/FileAllocationIterator.h * src/MultiDiskAdaptor.cc * src/MultiFileAllocationIterator.h * src/SingleFileAllocationIterator.h
* 2010-06-21 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-06-211-69/+69
| | | | | | | Changed naming standards for class member variable: now it looks like var_ instead of _var.
* 2010-06-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-06-111-92/+82
| | | | | | | | | | | | | | | | | | | Made protected member variable private. Added accessor funcs. * src/AbstractSingleDiskAdaptor.cc * src/AbstractSingleDiskAdaptor.h * src/DirectDiskAdaptor.cc * src/DirectDiskAdaptor.h * src/DiskAdaptor.cc * src/DiskAdaptor.h * src/MultiDiskAdaptor.cc * src/MultiDiskAdaptor.h * src/MultiFileAllocationIterator.cc * src/MultiFileAllocationIterator.h * test/BtBitfieldMessageTest.cc * test/BtHaveAllMessageTest.cc * test/BtHaveMessageTest.cc
* 2010-03-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>Tatsuhiro Tsujikawa2010-02-281-28/+35
| | | | | | | | Avoid to calculate end() iterator in each loop. std::deque is particularly slow. Make sure that recalculate end iterator if element is erased during loop.