save and restore storage allocation mode in resume data

This commit is contained in:
arvidn 2016-02-18 20:52:09 -05:00 committed by arvidn
parent 8304cb07bc
commit 40f6afc2f8
3 changed files with 9 additions and 8 deletions

View File

@ -486,11 +486,8 @@ The file format is a bencoded dictionary containing the following fields:
| | +-------------+--------------------------------------------+ | | | +-------------+--------------------------------------------+ |
| | | | | |
+--------------------------+--------------------------------------------------------------+ +--------------------------+--------------------------------------------------------------+
| ``allocation`` | The allocation mode for the storage. Can be either ``full`` | | ``allocation`` | The allocation mode for the storage. Can be either |
| | or ``compact``. If this is full, the file sizes and | | | ``allocate`` or ``sparse``. |
| | timestamps are disregarded. Pieces are assumed not to have |
| | moved around even if the files have been modified after the |
| | last resume data checkpoint. |
+--------------------------+--------------------------------------------------------------+ +--------------------------+--------------------------------------------------------------+
storage allocation storage allocation

View File

@ -68,9 +68,12 @@ namespace libtorrent
add_torrent_params read_resume_data(bdecode_node const& rd, error_code& ec) add_torrent_params read_resume_data(bdecode_node const& rd, error_code& ec)
{ {
// TODO: 4 where is "allocation" read?
add_torrent_params ret; add_torrent_params ret;
if (bdecode_node alloc = rd.dict_find_string("allocation"))
{
ret.storage_mode = (alloc.string_value() == "allocate"
|| alloc.string_value() == "full") ? storage_mode_allocate : storage_mode_sparse;
}
if (rd.dict_find_string_value("file-format") if (rd.dict_find_string_value("file-format")
!= "libtorrent resume file") != "libtorrent resume file")

View File

@ -2105,7 +2105,6 @@ namespace libtorrent
inc_refcount("check_fastresume"); inc_refcount("check_fastresume");
// async_check_files will gut links // async_check_files will gut links
// TODO: 4 check_fastresume should probably be renamed check_files.
m_ses.disk_thread().async_check_files( m_ses.disk_thread().async_check_files(
m_storage.get(), m_add_torrent_params ? m_add_torrent_params.get() : NULL m_storage.get(), m_add_torrent_params ? m_add_torrent_params.get() : NULL
, links, boost::bind(&torrent::on_resume_data_checked , links, boost::bind(&torrent::on_resume_data_checked
@ -6713,6 +6712,8 @@ namespace libtorrent
ret["file-format"] = "libtorrent resume file"; ret["file-format"] = "libtorrent resume file";
ret["file-version"] = 1; ret["file-version"] = 1;
ret["libtorrent-version"] = LIBTORRENT_VERSION; ret["libtorrent-version"] = LIBTORRENT_VERSION;
ret["allocation"] = m_storage_mode == storage_mode_allocate
? "allocate" : "sparse";
ret["total_uploaded"] = m_total_uploaded; ret["total_uploaded"] = m_total_uploaded;
ret["total_downloaded"] = m_total_downloaded; ret["total_downloaded"] = m_total_downloaded;