kftpd buffers the files somewhat in memory, and writes them to disk through the kernel block I/O layer. Note that the kernel itself performs disc caching, removing any need for the application (kftpd) to reinvent the wheel.
However, the kftpd code does currently do a "sys_fsync()" at the end of each file upload, which pauses service until the current file has been committed to disc -- perhaps that line could be removed, since a full "sys_sync()" happens on session termination anyway.
Presumably jemplode opens one FTP session, and keeps it open over multiple file xfers.. ?
Cheers