Назад | Перейти на главную страницу

Why does `chattr +e <file>`провалиться, когда на устройстве не осталось места, когда их много?</file>

У меня проблема. chattr +e <file> не работает, если файл не имеет +e attr установлен на нем, или если он удален и добавлен повторно.

[root@ip-203-0-113-13 log]# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs          tmpfs     3.8G     0  3.8G   0% /dev/shm
tmpfs          tmpfs     3.8G  388K  3.8G   1% /run
tmpfs          tmpfs     3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1 ext4       30G  1.2G   28G   5% /
tmpfs          tmpfs     763M     0  763M   0% /run/user/1000
[root@ip-203-0-113-13 log]# df -ih
Filesystem     Inodes IUsed IFree IUse% Mounted on
devtmpfs         950K   343  949K    1% /dev
tmpfs            953K     1  953K    1% /dev/shm
tmpfs            953K   389  953K    1% /run
tmpfs            953K    17  953K    1% /sys/fs/cgroup
/dev/nvme0n1p1   1.9M   97K  1.8M    6% /
tmpfs            953K     5  953K    1% /run/user/1000
[root@ip-203-0-113-13 log]# find /tmp -type f | wc -l
6126
[root@ip-203-0-113-13 tmp]# touch bar
[root@ip-203-0-113-13 tmp]# chattr -e bar
[root@ip-203-0-113-13 tmp]# chattr +e bar
chattr: No space left on device while setting flags on bar

Вааааат?

Там есть много места на устройстве и много инодов бесплатно, так почему chattr +e не получается? Если это имеет значение, я вижу этот сбой в Fedora 28 на EC2. Я не вижу в SUSE 42 на EC2 (пока?)

Обновить:

Я побежал Strace по команде. Не уверен, что это поможет, но кажется интересным ...

Если вы проверяете руководство, этот параметр не должен изменяться, я удивлен, что вы можете удалить, так как он не может найти смежную область, он показывает ошибку выше.

Extent format   e   (unavailable)   
The e attribute indicates that the file is using extents for mapping the blocks on disk