Hello, guys,
I've been trying to implement RESVSP-based allocation in rtorrent. From the
very beginning it has, alas, misbehaved, thus (also considering my very basic
programming skills and experience and unfamiliarity with rtorrent's code)
after hours of trying to determine what's wrong, I finally observed that
blocks of files allocated with RESVSP (previously ftruncated to a proper
size) and being downloaded in rtorrent don't have their unwritten flags
removed (as confirmed by xfs_bmap -vp). In the effect downloaded file
promptly corrupts (read: changes its md5sum). What is interesting, files
RESVSP-allocated in ktorrent and then imported to rtorrent seem to download
properly.
Everything works properly with ALLOCSP (although I've noticed that while
RESVSP worked with l_start = 0 and l_length = size, ALLOCSP worked with
l_start = size and l_length = 0; is that intended?).
I'm not quite sure what's at fault here. Perhaps rtorrent, as it prides itself
on "directly between file pages mapped to memory by the mmap() function and
the network stack". I haven't been yet able to determine how it actually
writes chunks to files (aforementioned lacks of skills, experience and
familiarity). Perhaps it's somehow XFS's fault, hence my posting to this ML.
Any help/suggestions would be appreciated.
Cheers,
Luke
|