Quando eu envio um arquivo, digamos 755M, o relatório do proftpd "Não há espaço disponível no dispositivo"
lftp localhost: / > coloque test.bin put: Acesso falhou: 552 791230988: Não há espaço disponível no dispositivo (test.bin)
mas eu corro / bin / df -h, eu posso ver que ainda existem 414G disponíveis. meu diretório raiz do ftp está em / home / ftproot
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda4 ext4 1.8T 1.3T 414G 75% /home
Então, acho que há alguns erros no código-fonte do proftpd.
depois de revisar o código, encontre a causa raiz.
proftpd-dfsg-1.3.5 ~ rc3 / modules / mod_xfer.c +2381
2380 } else {
2381 if (requested_sz > avail_sz) {
2382 pr_log_debug(DEBUG5, "%s requested %" PR_LU " bytes, only %" PR_LU
2383 " bytes available on '%s'", cmd->argv[0], (pr_off_t) requested_sz,
2384 (pr_off_t) avail_sz, path);
2385 pr_response_add_err(R_552, "%s: %s", cmd->arg, strerror(ENOSPC));
2386 return PR_ERROR(cmd);
2387 }
2388 }
2389 }
na linha 2381, a unidade requesed_sz (791,230,988) está em bytes, mas a unidade avail_sz (435,293,500) está em kb
veja: proftpd-dfsg-1.3.5 ~ rc3 / src / fsio.c +4263
4259 /* In order to return a size in KB, as get_fs_size() does, we need
4260 * to divide by 1024.
4261 */
4262 *fs_size = (((off_t) fs.f_bavail * (off_t) fs.f_frsize) / 1024);
para corrigir esse bug:
if (requested_sz > avail_sz) {
tem que ser modificado como
if (requested_sz > avail_sz * 1024) {
mas eu não sei como reportar bug para o proftpd devel team, quem pode cometer o proftpd?