Bug 48085

Summary: Проброс virtiofs не работает с ACL
Product: Альт Сервер Reporter: Андрей <mckspm>
Component: Ошибки работыAssignee: Evgeny Sinelnikov <sin>
Status: NEW --- QA Contact: qa-p8 <qa-p8>
Severity: major    
Priority: P4 CC: lav
Version: 10.1   
Hardware: x86_64   
OS: Linux   

Description Андрей 2023-10-20 10:02:00 MSK
[b]Дано:[/b]

Сервер с ОС alt-server-v-10.1-x86_64 (ядро 5.10.194-std-def-alt1)

На сервере две VM:

VM1: ОС alt-server-10.1-x86_64 (ядро 5.10.197-std-def-alt1)
VM2: ОС alt-kworkstation-10.2-x86_64 (ядро 6.1.54-un-def-alt1)

Все три ОС обновлены и актуальны.

К серверу виртуализации подмонтированы два одинаковых диска с ext4 и параметром acl. Права acl на сервере виртуализации работают без ошибок.
[code]#cat /etc/fstab | grep work
UUID=7033abb5-684a-4e17-8e1d-a98847608f12       /mnt/work1      ext4    nosuid,nodev,noexec,usrquota,grpquota,acl       1       0
UUID=d38acd9c-2522-4168-93c2-ac1ab9769a79       /mnt/work2      ext4    nosuid,nodev,noexec,usrquota,grpquota,acl       1       0
[/code]

Сервер виртуализации настроен на проброс этих дисков:

Настройки VM1:
[code]<filesystem type='mount' accessmode='passthrough'>
  <driver type='virtiofs'/>
  <binary path='/usr/libexec/my-virtiofsd'/>
  <source dir='/mnt/work1/work'/>
  <target dir='work'/>
  <alias name='fs0'/>
  <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</filesystem>[/code]

Настройки VM2:
[code]<filesystem type='mount' accessmode='passthrough'>
  <driver type='virtiofs'/>
  <binary path='/usr/libexec/my-virtiofsd'/>
  <source dir='/mnt/work2/work'/>
  <target dir='work'/>
  <alias name='fs0'/>
  <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</filesystem>[/code]

Скрипт /usr/libexec/my-virtiofsd перехватывает запросы к virtiofsd добавляя в них флаги поддержки ACL
[code]cat /usr/libexec/my-virtiofsd
#!/bin/sh
exec /usr/libexec/virtiofsd --cache=always --xattr --posix-acl $@[/code]

На обеих VM virtiofs смонтировано одинаково (без флага acl, т.к. virtio не хочет видеть этот флаг в fstab):
[code]#cat /etc/fstab | grep virtiofs
work            /mnt/work       virtiofs        rw,noatime,nodev,nosuid,_netdev         0 2[/code]


[b]ПРОБЛЕМА:[/b]

На VM2 ACL работает на всех дисках без ошибок.

На VM1 ACL работает на системном диске, но virtiofs не может подключить проброшенный диск с флагами "--xattr --posix-acl" (без этих флагов диск пробрасывается без ошибок).
В логе на сервере виртуализации при попытке подключения диска полявляются строки:

[code]cat /var/log/libvirt/qemu/vm1-fs0-virtiofsd.log
[2023-10-19T08:18:57Z ERROR virtiofsd::passthrough] Cannot enable posix ACLs, client does not support it[/code]

Из лога следует, что virtiofsd не верит, что VM1 (ОС alt-server-10.1-x86_64) поддерживает ACL, хотя по факту обе VM настраивались одинаково и обе поддерживают ACL.
[b]Можно ли добавить поддержку acl через virtiofs в ОС alt-server-10.1-x86_64?[/b]


В дополнение привожу параметры загрузки ядра VM.

[b]VM1[/b]
[code]# cat /boot/config-5.10.197-std-def-alt1 | grep ACL
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

# cat /boot/config-5.10.197-std-def-alt1 | grep XATTR
CONFIG_EXT2_FS_XATTR=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_F2FS_FS_XATTR=y
CONFIG_TMPFS_XATTR=y
CONFIG_JFFS2_FS_XATTR=y
CONFIG_UBIFS_FS_XATTR=y
CONFIG_SQUASHFS_XATTR=y
CONFIG_EROFS_FS_XATTR=y
CONFIG_CIFS_XATTR=y
CONFIG_EVM_EXTRA_SMACK_XATTRS=y
# CONFIG_EVM_ADD_XATTRS is not set
[/code]


[b]VM2[/b]
[code]cat /boot/config-6.1.54-un-def-alt1 | grep ACL
CONFIG_XILINX_EMACLITE=m
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_F2FS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_NTFS3_FS_POSIX_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_JFFS2_FS_POSIX_ACL=y
CONFIG_EROFS_FS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CEPH_FS_POSIX_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

cat /boot/config-6.1.54-un-def-alt1 | grep XATTR
CONFIG_EXT2_FS_XATTR=y
CONFIG_REISERFS_FS_XATTR=y
CONFIG_F2FS_FS_XATTR=y
CONFIG_TMPFS_XATTR=y
CONFIG_JFFS2_FS_XATTR=y
CONFIG_UBIFS_FS_XATTR=y
CONFIG_SQUASHFS_XATTR=y
CONFIG_EROFS_FS_XATTR=y
CONFIG_CIFS_XATTR=y
CONFIG_EVM_EXTRA_SMACK_XATTRS=y
# CONFIG_EVM_ADD_XATTRS is not set[/code]