proftpd put: Ошибка доступа: 552 791230988: на устройстве не осталось места (test.bin)

Когда я загружаю файл, скажем, 755M, отчет proftpd «На устройстве не осталось места»

lftp localhost: /> put test.bin put: Ошибка доступа: 552 791230988: На устройстве не осталось места ( test.bin)

но я запускаю / bin / df -h, я вижу, что все еще есть 414G. мой корневой каталог ftp находится в / home / ftproot

Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda4      ext4      1.8T  1.3T  414G  75% /home

Так что я думаю, что в исходном коде proftpd есть некоторые ошибки.

После просмотра кода найдите основную причину.

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   }

в строке 2381, единица Requesed_sz (791,230,988) в байтах, но единичная поставка instance_sz (435,293,500) находится в килобайтах

, см .: 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);

, чтобы исправить эту ошибку:

if (requested_sz > avail_sz) {

нужно изменить как

if (requested_sz > avail_sz * 1024) {

, но я не знаю, как сообщить об ошибке команде proftpd devel, которая может зафиксировать ее proftpd?

1
задан 25 April 2014 в 12:28

0 ответов

Другие вопросы по тегам:

Похожие вопросы: