Opened 12 years ago

Closed 12 years ago

Last modified 12 years ago

#2531 closed Enhancement (fixed)

Don't reverify the torrent after moving it on the same disk

Reported by: Rolcol Owned by: charles
Priority: Low Milestone: 1.80
Component: libtransmission Version: 1.76
Severity: Normal Keywords:
Cc:

Description (last modified by charles)

The current (r9408) libtransmission code that moves the torrent data from the incomplete folder to the final destination after it has finished requires a verify. This can be very time consuming if the torrent is several gigabytes in size. The old code, when this feature was only on the Mac client, did not need to verify the data and I did not encounter data corruption. What Transmission could do instead is check that the files are at their destination but without actually verifying the data within.

Change History (13)

comment:1 Changed 12 years ago by charles

  • Description modified (diff)
  • Version set to 1.76

comment:2 Changed 12 years ago by charles

  • Resolution set to invalid
  • Status changed from new to closed

We don't require a verify pass if rename() is successful s.t. the folder's inode is renamed/moved.

But if we are moving data from one disk to another, IMO there could be errors with the disk writing, or errors with the media itself, and we might not find out about it without a verify check.

I see points on both sides of this argument, but IMO it's better to go with the safer choice and run a verify pass after we move the data from one disk to another.

comment:3 Changed 12 years ago by Rolcol

I don't move between drives and it still requires a verify. Could this be an OSX bug then?

comment:4 Changed 12 years ago by livings124

  • Resolution invalid deleted
  • Status changed from closed to reopened

It reverifies for me too, and it uses libtransmission's code for moving.

comment:5 Changed 12 years ago by Rolcol

  • Version changed from 1.76 to 1.76+

comment:6 follow-up: Changed 12 years ago by charles

  • Version changed from 1.76+ to 1.76

The '+' notation indicates that this is a regression that was introduced after 1.76 was released. Please don't mark that as the version unless that's what you mean by it.

comment:7 Changed 12 years ago by charles

  • Milestone changed from None Set to 1.80
  • Summary changed from Do not verify torrent immediately after moving finished torrent. to Don't reverify the torrent after moving it on the same disk

comment:8 in reply to: ↑ 6 Changed 12 years ago by Rolcol

Replying to charles:

The '+' notation indicates that this is a regression that was introduced after 1.76 was released. Please don't mark that as the version unless that's what you mean by it.

Oh, I'm sorry. I understand now. What if there was a '-' version for pre-released versions? 1.80- for anything going into 1.80 without being part of the release code.

comment:9 Changed 12 years ago by charles

  • Resolution set to fixed
  • Status changed from reopened to closed

Fixed in trunk for 1.80 by r9421

comment:10 Changed 12 years ago by KyleK

  • Resolution fixed deleted
  • Status changed from closed to reopened

I had a torrent downloading containing a single file, which was at around 90%. At that time I quit Transmission, updated to the latest SVN version, recompiled and restarted. A bit later the torrent finished, and according to Transmission was moved from the Incomplete folder to the Download directory. But, the torrent is nowhere to be found. I can't locate it anywhere on the hard drive, and when telling Transmission to re-verify the file, it couldn't find it either.

setLocation() calls tr_torrentDeleteLocalData(), which here is only supposed to delete leftover empty directories at the torrent's old location.

I believe the problem is that the function uses tr_torrentFindFile2() at some point, which finds the file wherever it is at the time of the function call. In this case, it's in the download folder (where it was moved to), and then it is deleted.

comment:11 Changed 12 years ago by charles

KyleK: surely that belongs in a separate ticket?

comment:12 Changed 12 years ago by KyleK

  • Resolution set to fixed
  • Status changed from reopened to closed

Good point. I'll create a new one.

comment:13 Changed 12 years ago by charles

Thanks :)

Note: See TracTickets for help on using tickets.