btfs icon indicating copy to clipboard operation
btfs copied to clipboard

Torrent being downloaded completely soon after mounted

Open fabianski7 opened this issue 4 years ago • 11 comments

Well, I'm sorry if this is an invalid bug and this is the default behavior of btfs, but the description in the readme says that the files are downloaded as needed, not all at once.

The contents of the files will be downloaded on-demand as they are read by applications

I am using version 2.24 from the archlinux repository, with kernel 5.11.11 and kde plasma 5.21.3

fabianski7 avatar Mar 31 '21 20:03 fabianski7

This is by design. Parts that are read by applications are prioritized, but if there is bandwidth available it will download the rest of the torrent.

johang avatar Jul 15 '21 11:07 johang

is there any way to change this?

fabianski7 avatar Jul 15 '21 13:07 fabianski7

You can patch the function setup() in btfs.cc to set all files to priority 0.

johang avatar Jul 16 '21 09:07 johang

here?

https://github.com/johang/btfs/blob/master/src/btfs.cc#L103

fabianski7 avatar Jul 16 '21 12:07 fabianski7

No, here: https://github.com/johang/btfs/blob/master/src/btfs.cc#L206

johang avatar Jul 16 '21 17:07 johang

@johang how would you set all the files to priority 0? I'd like to patch this as well to prevent it downloading as soon as it's mounted.

pkillnine avatar Oct 13 '21 11:10 pkillnine

Look in libtorrents docs (torrent_handle::file_priority(...)).

johang avatar Oct 13 '21 20:10 johang

@johang thanks, this patch seems to work - note that once a file is accessed it attempts to download the whole thing. Is it possible to set it so it only downloads what is accessed, rather than the whole file?

diff --git a/src/btfs.cc b/src/btfs.cc
index 1f4a72d..4da1ebe 100644
--- a/src/btfs.cc
+++ b/src/btfs.cc
@@ -205,6 +205,7 @@ setup() {
 		handle.pause();
 
 	for (int i = 0; i < ti->num_files(); ++i) {
+		handle.file_priority(i, 0);
 		std::string parent("");
 
 #if LIBTORRENT_VERSION_NUM < 10100

pkillnine avatar Oct 13 '21 22:10 pkillnine

This is by design. Parts that are read by applications are prioritized, but if there is bandwidth available it will download the rest of the torrent.

Same problem. There is no point in this utility without the "download files as needed" feature. It's not about the available bandwidth. You can download the torrent using qbittorrent. The point is the available disk space. You need to be able to view a specific file. But qbittorrent can do that too. Therefore, it is very important to download "only some parts" of the file. For example, when previewing video or audio (when searching). It would be nice to use some amount of cache (configurable), which would not save data to disk. For example, provided that the file is viewed by no more than 10 percent. Or work without saving to disk at all.

btfs 2.24-1 / archlinux 5.15.3-arch1-1 / spectrwm

leadenhead avatar Nov 25 '21 11:11 leadenhead

If anyone interested, I've patched btfs to handle the "no fetch" case, where pieces are downloaded only when really needed, no auto-downloading of anything except what's asked to be read through fuse, in a branch here https://github.com/rienafairefr/btfs/tree/no-fetch

rienafairefr avatar Oct 20 '23 21:10 rienafairefr

Check out https://github.com/distribyted/distribyted too — solved my problem.

OliverOffing avatar Jan 03 '24 18:01 OliverOffing