merged disk buffer pool change from RC_0_16
This commit is contained in:
parent
8d8d160b35
commit
56e4c48873
|
@ -17,6 +17,10 @@
|
||||||
* fix uTP edge case where udp socket buffer fills up
|
* fix uTP edge case where udp socket buffer fills up
|
||||||
* fix nagle implementation in uTP
|
* fix nagle implementation in uTP
|
||||||
|
|
||||||
|
* don't use pool allocator for disk blocks (cache may now return pages to the kernel)
|
||||||
|
|
||||||
|
0.16.9 release
|
||||||
|
|
||||||
* fix long filename truncation on windows
|
* fix long filename truncation on windows
|
||||||
* distinguish file open mode when checking files and downloading/seeding with bittorrent. updates storage interface
|
* distinguish file open mode when checking files and downloading/seeding with bittorrent. updates storage interface
|
||||||
* improve file_storage::map_file when dealing with invalid input
|
* improve file_storage::map_file when dealing with invalid input
|
||||||
|
|
|
@ -38,10 +38,6 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/session_settings.hpp"
|
#include "libtorrent/session_settings.hpp"
|
||||||
#include "libtorrent/allocator.hpp"
|
#include "libtorrent/allocator.hpp"
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_POOL_ALLOCATOR
|
|
||||||
#include <boost/pool/pool.hpp>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TORRENT_DISK_STATS
|
#ifdef TORRENT_DISK_STATS
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#endif
|
#endif
|
||||||
|
@ -101,12 +97,6 @@ namespace libtorrent
|
||||||
|
|
||||||
mutable mutex m_pool_mutex;
|
mutable mutex m_pool_mutex;
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_POOL_ALLOCATOR
|
|
||||||
// memory pool for read and write operations
|
|
||||||
// and disk cache
|
|
||||||
boost::pool<page_aligned_allocator> m_pool;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined TORRENT_DISK_STATS || defined TORRENT_STATS
|
#if defined TORRENT_DISK_STATS || defined TORRENT_STATS
|
||||||
int m_allocations;
|
int m_allocations;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -47,9 +47,6 @@ namespace libtorrent
|
||||||
disk_buffer_pool::disk_buffer_pool(int block_size)
|
disk_buffer_pool::disk_buffer_pool(int block_size)
|
||||||
: m_block_size(block_size)
|
: m_block_size(block_size)
|
||||||
, m_in_use(0)
|
, m_in_use(0)
|
||||||
#ifndef TORRENT_DISABLE_POOL_ALLOCATOR
|
|
||||||
, m_pool(block_size, m_settings.cache_buffer_chunk_size)
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
#if defined TORRENT_DISK_STATS || defined TORRENT_STATS
|
#if defined TORRENT_DISK_STATS || defined TORRENT_STATS
|
||||||
m_allocations = 0;
|
m_allocations = 0;
|
||||||
|
@ -83,11 +80,7 @@ namespace libtorrent
|
||||||
if (m_buf_to_category.find(buffer)
|
if (m_buf_to_category.find(buffer)
|
||||||
== m_buf_to_category.end()) return false;
|
== m_buf_to_category.end()) return false;
|
||||||
#endif
|
#endif
|
||||||
#ifdef TORRENT_DISABLE_POOL_ALLOCATOR
|
|
||||||
return true;
|
return true;
|
||||||
#else
|
|
||||||
return m_pool.is_from(buffer);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool disk_buffer_pool::is_disk_buffer(char* buffer) const
|
bool disk_buffer_pool::is_disk_buffer(char* buffer) const
|
||||||
|
@ -101,12 +94,7 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
mutex::scoped_lock l(m_pool_mutex);
|
mutex::scoped_lock l(m_pool_mutex);
|
||||||
TORRENT_ASSERT(m_magic == 0x1337);
|
TORRENT_ASSERT(m_magic == 0x1337);
|
||||||
#ifdef TORRENT_DISABLE_POOL_ALLOCATOR
|
|
||||||
char* ret = page_aligned_allocator::malloc(m_block_size);
|
char* ret = page_aligned_allocator::malloc(m_block_size);
|
||||||
#else
|
|
||||||
char* ret = (char*)m_pool.malloc();
|
|
||||||
m_pool.set_next_size(m_settings.cache_buffer_chunk_size);
|
|
||||||
#endif
|
|
||||||
++m_in_use;
|
++m_in_use;
|
||||||
#if TORRENT_USE_MLOCK
|
#if TORRENT_USE_MLOCK
|
||||||
if (m_settings.lock_disk_cache)
|
if (m_settings.lock_disk_cache)
|
||||||
|
@ -197,21 +185,13 @@ namespace libtorrent
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef TORRENT_DISABLE_POOL_ALLOCATOR
|
|
||||||
page_aligned_allocator::free(buf);
|
page_aligned_allocator::free(buf);
|
||||||
#else
|
|
||||||
m_pool.free(buf);
|
|
||||||
#endif
|
|
||||||
--m_in_use;
|
--m_in_use;
|
||||||
}
|
}
|
||||||
|
|
||||||
void disk_buffer_pool::release_memory()
|
void disk_buffer_pool::release_memory()
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(m_magic == 0x1337);
|
TORRENT_ASSERT(m_magic == 0x1337);
|
||||||
#ifndef TORRENT_DISABLE_POOL_ALLOCATOR
|
|
||||||
mutex::scoped_lock l(m_pool_mutex);
|
|
||||||
m_pool.release_memory();
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue