mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 05:35:25 +00:00
Compare commits
8 Commits
f3fde178c0
...
d32cac25c8
Author | SHA1 | Date | |
---|---|---|---|
|
d32cac25c8 | ||
|
32d836bc6f | ||
|
61bd4d9b01 | ||
|
0e566614ff | ||
|
34f7ca668f | ||
|
5afaf127c0 | ||
|
80de00d92a | ||
|
31f446cf37 |
32
NEWS.rst
32
NEWS.rst
@ -36,6 +36,13 @@ v10.2.0 (unreleased)
|
|||||||
use the upcoming QEMU 9.0.0 release together with the development version
|
use the upcoming QEMU 9.0.0 release together with the development version
|
||||||
of edk2.
|
of edk2.
|
||||||
|
|
||||||
|
* qemu: Introduce virDomainGraphicsReload API
|
||||||
|
|
||||||
|
Reloading the graphics display is now supported for QEMU guests using
|
||||||
|
VNC. This is useful to make QEMU reload the TLS certificates without
|
||||||
|
restarting the guest. Available via the ``virDomainGraphicsReload`` API
|
||||||
|
and the ``domdisplay-reload`` virsh command.
|
||||||
|
|
||||||
* **Improvements**
|
* **Improvements**
|
||||||
|
|
||||||
* **Bug fixes**
|
* **Bug fixes**
|
||||||
@ -52,6 +59,31 @@ v10.2.0 (unreleased)
|
|||||||
releases to 10.2.0 works as well, but the other direction remains broken
|
releases to 10.2.0 works as well, but the other direction remains broken
|
||||||
unless the fix is backported.
|
unless the fix is backported.
|
||||||
|
|
||||||
|
* node_device: Don't report spurious errors from PCI VPD parsing
|
||||||
|
|
||||||
|
In last release the PCI Vital Product Data parser was enhanced to report
|
||||||
|
errors but that effort failed as some kernels have the file but don't allow
|
||||||
|
reading it causing logs to be spammed with::
|
||||||
|
|
||||||
|
libvirtd[21055]: operation failed: failed to read the PCI VPD data
|
||||||
|
|
||||||
|
Since the data is used only in the node device XML and errors are ignored if
|
||||||
|
the parsing failed, this release removes all the error reporting.
|
||||||
|
|
||||||
|
* qemu: set correct SELinux label for unprivileged virtiofsd
|
||||||
|
|
||||||
|
It is now possible to use virtiofsd-based ``<filesystem>`` shares even
|
||||||
|
if the guest is confined using SELinux.
|
||||||
|
|
||||||
|
* qemu: fix a crash on unprivileged virtiofsd hotplug
|
||||||
|
|
||||||
|
Hotplugging virtiofsd-based filesystems works now.
|
||||||
|
|
||||||
|
* virt-admin: Fix segfault when libvirtd dies
|
||||||
|
|
||||||
|
``virt-admin`` no longer crashes when ``libvirtd`` unexpectedly closes
|
||||||
|
the connection.
|
||||||
|
|
||||||
|
|
||||||
v10.1.0 (2024-03-01)
|
v10.1.0 (2024-03-01)
|
||||||
====================
|
====================
|
||||||
|
@ -313,7 +313,6 @@ src/util/virnuma.c
|
|||||||
src/util/virnvme.c
|
src/util/virnvme.c
|
||||||
src/util/virobject.c
|
src/util/virobject.c
|
||||||
src/util/virpci.c
|
src/util/virpci.c
|
||||||
src/util/virpcivpd.c
|
|
||||||
src/util/virperf.c
|
src/util/virperf.c
|
||||||
src/util/virpidfile.c
|
src/util/virpidfile.c
|
||||||
src/util/virpolkit.c
|
src/util/virpolkit.c
|
||||||
|
90
po/ko.po
90
po/ko.po
@ -18,7 +18,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: libvirt 6.0.0\n"
|
"Project-Id-Version: libvirt 6.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
|
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
|
||||||
"POT-Creation-Date: 2024-03-22 09:54+0000\n"
|
"POT-Creation-Date: 2024-03-22 09:54+0000\n"
|
||||||
"PO-Revision-Date: 2024-02-29 14:36+0000\n"
|
"PO-Revision-Date: 2024-03-27 17:36+0000\n"
|
||||||
"Last-Translator: 김인수 <simmon@nplob.com>\n"
|
"Last-Translator: 김인수 <simmon@nplob.com>\n"
|
||||||
"Language-Team: Korean <https://translate.fedoraproject.org/projects/libvirt/"
|
"Language-Team: Korean <https://translate.fedoraproject.org/projects/libvirt/"
|
||||||
"libvirt/ko/>\n"
|
"libvirt/ko/>\n"
|
||||||
@ -482,7 +482,7 @@ msgstr " 저장소:"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " [[--%1$s] <string>]..."
|
msgid " [[--%1$s] <string>]..."
|
||||||
msgstr ""
|
msgstr " [[--%1$s] <문자열>]..."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -498,7 +498,7 @@ msgstr ""
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " {[--%1$s] <string>}..."
|
msgid " {[--%1$s] <string>}..."
|
||||||
msgstr ""
|
msgstr " {[--%1$s] <문자열>}..."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -2850,7 +2850,7 @@ msgstr "resctrl 디렉토리 '%1$s'를 생성 할 수 없음"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot create save directory '%1$s'"
|
msgid "Cannot create save directory '%1$s'"
|
||||||
msgstr ""
|
msgstr "저장 디렉토리 '%1$s'를 생성 할 수 없습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot create socket '%1$s'"
|
msgid "Cannot create socket '%1$s'"
|
||||||
@ -3888,7 +3888,7 @@ msgid "Connections from inside daemon must be direct"
|
|||||||
msgstr "내부 데몬에서 직접 연결해야 합니다"
|
msgstr "내부 데몬에서 직접 연결해야 합니다"
|
||||||
|
|
||||||
msgid "Console only works in PTY mode"
|
msgid "Console only works in PTY mode"
|
||||||
msgstr ""
|
msgstr "PTY 방식에서 콘솔만 동작합니다"
|
||||||
|
|
||||||
msgid "Constant pages:"
|
msgid "Constant pages:"
|
||||||
msgstr "고정 페이지:"
|
msgstr "고정 페이지:"
|
||||||
@ -6638,19 +6638,19 @@ msgstr "%1$s 삭제 실패"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to cleanup stale managed save dir '%1$s'"
|
msgid "Failed to cleanup stale managed save dir '%1$s'"
|
||||||
msgstr ""
|
msgstr "오래된 관리 저장 디렉토리 '%1$s' 정리에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to clear security context for agent for %1$s"
|
msgid "Failed to clear security context for agent for %1$s"
|
||||||
msgstr "%1$s를 위한 에이젠트의 보안 문맥을 삭제하는데 실패하였습니다"
|
msgstr "%1$s용 관리를 위한 보안 문맥을 정리하는 데 실패하였습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to clear security context for monitor for %1$s"
|
msgid "Failed to clear security context for monitor for %1$s"
|
||||||
msgstr "%1$s의 모니터에 대한 보안 문맥을 삭제하는데 실패"
|
msgstr "%1$s용 모니터를 위한 보안 문맥 정리에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to clone vol from %1$s"
|
msgid "Failed to clone vol from %1$s"
|
||||||
msgstr "%1$s에서 볼륨 복제하기 실패"
|
msgstr "%1$s에서 볼륨 복제에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to close bind target %1$s"
|
msgid "Failed to close bind target %1$s"
|
||||||
@ -6720,13 +6720,13 @@ msgstr "연결장치 개요 %1$d를 이름으로 변환하는데 실패"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to convert loadparm '%1$s' to upper case"
|
msgid "Failed to convert loadparm '%1$s' to upper case"
|
||||||
msgstr "loadparm '%1$s'을(를) 대문자로 변환하지 못했습니다"
|
msgstr "loadparm '%1$s'를 대문자로 변환하는 데 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to convert the command string to argv-lists"
|
msgid "Failed to convert the command string to argv-lists"
|
||||||
msgstr "명령 문자열을 argv-lists로 변환하지 못했습니다"
|
msgstr "명령 문자열을 argv-lists로 변환하는 데 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to copy XML node"
|
msgid "Failed to copy XML node"
|
||||||
msgstr "XML 노드를 복사하지 못했습니다"
|
msgstr "XML 노드 복사에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to core dump domain '%1$s' to %2$s"
|
msgid "Failed to core dump domain '%1$s' to %2$s"
|
||||||
@ -6755,10 +6755,10 @@ msgstr "SASL 클라이언트 문맥을 생성하는 데 실패: %1$d (%2$s)"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create SAVE dir %1$s"
|
msgid "Failed to create SAVE dir %1$s"
|
||||||
msgstr ""
|
msgstr "저장 디렉토리 %1$s 생성에 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create XML"
|
msgid "Failed to create XML"
|
||||||
msgstr "XML 생성하기 실패"
|
msgstr "XML 생성에 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create XML config object"
|
msgid "Failed to create XML config object"
|
||||||
msgstr "XML 구성 개체를 생성하지 못했습니다"
|
msgstr "XML 구성 개체를 생성하지 못했습니다"
|
||||||
@ -6795,42 +6795,42 @@ msgid "Failed to create directory for device %1$s"
|
|||||||
msgstr "장치 %1$s의 디렉토리를 생성하는데 실패했습니다"
|
msgstr "장치 %1$s의 디렉토리를 생성하는데 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create disk pool geometry"
|
msgid "Failed to create disk pool geometry"
|
||||||
msgstr "디스크 풀 지오메트리 생성 실패"
|
msgstr "디스크 풀 지오메트리 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create domain from %1$s"
|
msgid "Failed to create domain from %1$s"
|
||||||
msgstr "%1$s에서 도메인 생성하기 실패"
|
msgstr "%1$s에서 도메인 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create domain save file '%1$s'"
|
msgid "Failed to create domain save file '%1$s'"
|
||||||
msgstr "도메인 저장 파일 '%1$s'를 만드는 데 실패"
|
msgstr "도메인 저장 파일 '%1$s' 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create dump dir %1$s"
|
msgid "Failed to create dump dir %1$s"
|
||||||
msgstr "덤프 디렉토리 %1$s을(를) 생성하지 못했습니다"
|
msgstr "덤프 디렉토리 %1$s 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create file '%1$s'"
|
msgid "Failed to create file '%1$s'"
|
||||||
msgstr "파일 '%1$s' 생성하기 실패"
|
msgstr "파일 '%1$s' 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create file '%1$s': couldn't determine fs type"
|
msgid "Failed to create file '%1$s': couldn't determine fs type"
|
||||||
msgstr "파일 '%1$s' 만들기 실패: fs 유형 확인 실패"
|
msgstr "파일 '%1$s' 생성에 실패: fs 유형 확인 할 수 없습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create filesystem probe for device %1$s"
|
msgid "Failed to create filesystem probe for device %1$s"
|
||||||
msgstr "장치 %1$s의 파일시스템 조사를 생성하는데 실패했습니다"
|
msgstr "장치 %1$s의 파일시스템 조사 생성에 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create interface node under bridge node in xml document"
|
msgid "Failed to create interface node under bridge node in xml document"
|
||||||
msgstr "xml 문서에서 브리지 노드 아래에 인터페이스 노드를 생성하는데 실패"
|
msgstr "xml 문서에서 브리지 노드 하에서 연결장치 노드를 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create iscsi context for %1$s"
|
msgid "Failed to create iscsi context for %1$s"
|
||||||
msgstr "%1$s를 위한 iscsi 문맥을 생성하는데 실패"
|
msgstr "%1$s를 위한 iscsi 문맥 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create lib dir %1$s"
|
msgid "Failed to create lib dir %1$s"
|
||||||
msgstr "라이브러리 디렉토리 %1$s을(를) 작성하지 못했습니다"
|
msgstr "라이브러리 디렉토리 %1$s 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create memory backing dir %1$s"
|
msgid "Failed to create memory backing dir %1$s"
|
||||||
@ -6861,47 +6861,47 @@ msgstr "passt 상태 디렉토리 %1$s 생성에 실패함"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create pool %1$s"
|
msgid "Failed to create pool %1$s"
|
||||||
msgstr "풀 %1$s를 생성하는 데 실패"
|
msgstr "풀 %1$s를 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create pool from %1$s"
|
msgid "Failed to create pool from %1$s"
|
||||||
msgstr "%1$s에서 풀 생성하기 실패"
|
msgstr "%1$s에서 풀 생성에 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create reboot thread, killing domain"
|
msgid "Failed to create reboot thread, killing domain"
|
||||||
msgstr "재부팅 스레드 생성 실패, 도메인 종료"
|
msgstr "재부팅 스레드 생성 실패, 도메인 종료"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create save dir %1$s"
|
msgid "Failed to create save dir %1$s"
|
||||||
msgstr "저장 디렉토리 %1$s를 작성하지 못했습니다"
|
msgstr "저장 디렉토리 %1$s 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create slirp state dir %1$s"
|
msgid "Failed to create slirp state dir %1$s"
|
||||||
msgstr "slirp 상태 디렉토리 %1$s을 생성하는데 실패했습니다"
|
msgstr "slirp 상태 디렉토리 %1$s 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create snapshot dir %1$s"
|
msgid "Failed to create snapshot dir %1$s"
|
||||||
msgstr "순간찍기 디렉토리 %1$s 생성에 실패함"
|
msgstr "순간찍기 디렉토리 %1$s 생성에 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create socket"
|
msgid "Failed to create socket"
|
||||||
msgstr "소켓 생성하기 실패"
|
msgstr "소켓 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create state dir %1$s"
|
msgid "Failed to create state dir %1$s"
|
||||||
msgstr "상태 디렉토리 %1$s를 작성하지 못했습니다"
|
msgstr "상태 디렉토리 %1$s 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create state dir '%1$s'"
|
msgid "Failed to create state dir '%1$s'"
|
||||||
msgstr "상태 디렉토리 '%1$s'를 작성하지 못했습니다"
|
msgstr "상태 디렉토리 '%1$s' 생성에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create symlink '%1$s' to '%2$s'"
|
msgid "Failed to create symlink '%1$s' to '%2$s'"
|
||||||
msgstr "심볼릭 링크 '%1$s'를 '%2$s'에 대해 만들 수 없음"
|
msgstr "심볼릭 링크 '%1$s'를 '%2$s'로 생성하는 데 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create thread"
|
msgid "Failed to create thread"
|
||||||
msgstr "스레드 생성 실패"
|
msgstr "쓰레드 생성에 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create thread for receiving migration data"
|
msgid "Failed to create thread for receiving migration data"
|
||||||
msgstr "이전 자료를 수신하기 위하여 쓰레드 생성하는데 실패했습니다"
|
msgstr "이전 자료를 수신하기 위하여 쓰레드 생성에 실패했습니다"
|
||||||
|
|
||||||
msgid "Failed to create thread to handle daemon restart"
|
msgid "Failed to create thread to handle daemon restart"
|
||||||
msgstr "데몬 재시작을 처리할 스레드를 생성하지 못했습니다"
|
msgstr "데몬 재시작을 처리할 스레드를 생성하지 못했습니다"
|
||||||
@ -6948,43 +6948,43 @@ msgstr "%1$s에서 볼륨 생성하기 실패"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create/open domain save xml file '%1$s'"
|
msgid "Failed to create/open domain save xml file '%1$s'"
|
||||||
msgstr ""
|
msgstr "도메인 저장 xml 파일 '%1$s' 생성/열기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define domain from %1$s"
|
msgid "Failed to define domain from %1$s"
|
||||||
msgstr "%1$s에서 도메인 정의하기 실패"
|
msgstr "%1$s에서 도메인 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define interface from %1$s"
|
msgid "Failed to define interface from %1$s"
|
||||||
msgstr "%1$s에서 인터페이스 정의하기 실패"
|
msgstr "%1$s에서 인터페이스 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define network filter from %1$s"
|
msgid "Failed to define network filter from %1$s"
|
||||||
msgstr "%1$s에서 네트워크 필터 정의에 실패"
|
msgstr "%1$s에서 네트워크 필터 정의에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define network from %1$s"
|
msgid "Failed to define network from %1$s"
|
||||||
msgstr "%1$s에서 네트워크 정의하기 실패"
|
msgstr "%1$s에서 네트워크 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define new bridge interface %1$s"
|
msgid "Failed to define new bridge interface %1$s"
|
||||||
msgstr "새로운 브리지 인터페이스 %1$s 정의 실패"
|
msgstr "새로운 브리지 연결장치 %1$s 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define new interface %1$s"
|
msgid "Failed to define new interface %1$s"
|
||||||
msgstr "새로운 인터페이스 %1$s를 정의하는데 실패"
|
msgstr "새로운 연결장치 %1$s 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define node device from '%1$s'"
|
msgid "Failed to define node device from '%1$s'"
|
||||||
msgstr "'%1$s'에서 노드 장치를 정의하지 못했습니다"
|
msgstr "'%1$s'에서 노드 장치를 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define pool %1$s"
|
msgid "Failed to define pool %1$s"
|
||||||
msgstr "풀 %1$s를 정의하는 데 실패"
|
msgstr "풀 %1$s를 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define pool from %1$s"
|
msgid "Failed to define pool from %1$s"
|
||||||
msgstr "%1$s에서 풀 정의하기 실패"
|
msgstr "%1$s에서 풀 정의하기에 실패했습니다"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to delete DiskDescriptor.xml of volume '%1$s'"
|
msgid "Failed to delete DiskDescriptor.xml of volume '%1$s'"
|
||||||
|
103
po/uk.po
103
po/uk.po
@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: libvirt 6.0.0\n"
|
"Project-Id-Version: libvirt 6.0.0\n"
|
||||||
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
|
"Report-Msgid-Bugs-To: https://libvirt.org/bugs.html\n"
|
||||||
"POT-Creation-Date: 2024-03-22 09:54+0000\n"
|
"POT-Creation-Date: 2024-03-22 09:54+0000\n"
|
||||||
"PO-Revision-Date: 2024-02-28 13:55+0000\n"
|
"PO-Revision-Date: 2024-03-27 17:36+0000\n"
|
||||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
||||||
"Language-Team: Ukrainian <https://translate.fedoraproject.org/projects/"
|
"Language-Team: Ukrainian <https://translate.fedoraproject.org/projects/"
|
||||||
"libvirt/libvirt/uk/>\n"
|
"libvirt/libvirt/uk/>\n"
|
||||||
@ -489,7 +489,7 @@ msgstr " Сховище:"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " [[--%1$s] <string>]..."
|
msgid " [[--%1$s] <string>]..."
|
||||||
msgstr ""
|
msgstr " [[--%1$s] <рядок>]..."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -505,7 +505,7 @@ msgstr ""
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid " {[--%1$s] <string>}..."
|
msgid " {[--%1$s] <string>}..."
|
||||||
msgstr ""
|
msgstr " {[--%1$s] <рядок>}..."
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -2978,7 +2978,7 @@ msgstr "Не вдалося створити каталог resctrl «%1$s»"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot create save directory '%1$s'"
|
msgid "Cannot create save directory '%1$s'"
|
||||||
msgstr ""
|
msgstr "Не вдалося зберегти каталог «%1$s»"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Cannot create socket '%1$s'"
|
msgid "Cannot create socket '%1$s'"
|
||||||
@ -4091,7 +4091,7 @@ msgid "Connections from inside daemon must be direct"
|
|||||||
msgstr "З'єднання із внутрішньої фонової служби мають бути безпосередніми"
|
msgstr "З'єднання із внутрішньої фонової служби мають бути безпосередніми"
|
||||||
|
|
||||||
msgid "Console only works in PTY mode"
|
msgid "Console only works in PTY mode"
|
||||||
msgstr ""
|
msgstr "Консоль працює лише у режимі PTY"
|
||||||
|
|
||||||
msgid "Constant pages:"
|
msgid "Constant pages:"
|
||||||
msgstr "Незмінні сторінки:"
|
msgstr "Незмінні сторінки:"
|
||||||
@ -6023,6 +6023,9 @@ msgid ""
|
|||||||
"virtualization is enabled in the host BIOS, and host configuration is setup "
|
"virtualization is enabled in the host BIOS, and host configuration is setup "
|
||||||
"to load the mshv modules."
|
"to load the mshv modules."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Домен потребує пристрою MSHV, але він є недоступним. Перевірте, чи увімкнено "
|
||||||
|
"віртуалізацію у BIOS основної системи, і основну систему налаштовано на "
|
||||||
|
"завантаження модулів mshv."
|
||||||
|
|
||||||
msgid "Domain requires at least 1 vCPU"
|
msgid "Domain requires at least 1 vCPU"
|
||||||
msgstr "Для домену потрібне принаймні один віртуальний процесор"
|
msgstr "Для домену потрібне принаймні один віртуальний процесор"
|
||||||
@ -6927,7 +6930,7 @@ msgstr "Не вдалося спорожнити %1$s"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to cleanup stale managed save dir '%1$s'"
|
msgid "Failed to cleanup stale managed save dir '%1$s'"
|
||||||
msgstr ""
|
msgstr "Не вдалося очистити статичний керований каталог збереження «%1$s»"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to clear security context for agent for %1$s"
|
msgid "Failed to clear security context for agent for %1$s"
|
||||||
@ -7046,7 +7049,7 @@ msgstr "Не вдалося створити контекст клієнта SAS
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create SAVE dir %1$s"
|
msgid "Failed to create SAVE dir %1$s"
|
||||||
msgstr ""
|
msgstr "Не вдалося створити каталог SAVE %1$s"
|
||||||
|
|
||||||
msgid "Failed to create XML"
|
msgid "Failed to create XML"
|
||||||
msgstr "Не вдається створити XML"
|
msgstr "Не вдається створити XML"
|
||||||
@ -7245,7 +7248,7 @@ msgstr "Не вдалося створити том з %1$s"
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to create/open domain save xml file '%1$s'"
|
msgid "Failed to create/open domain save xml file '%1$s'"
|
||||||
msgstr ""
|
msgstr "Не вдалося створити або відкрити файл XML збереження домену «%1$s»"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to define domain from %1$s"
|
msgid "Failed to define domain from %1$s"
|
||||||
@ -8015,7 +8018,7 @@ msgstr "Не вдалося відкрити файл образу домену
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open domain save file '%1$s'"
|
msgid "Failed to open domain save file '%1$s'"
|
||||||
msgstr ""
|
msgstr "Не вдалося відкрити файл збереження домену «%1$s»"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to open file '%1$s'"
|
msgid "Failed to open file '%1$s'"
|
||||||
@ -8365,7 +8368,7 @@ msgstr "Не вдалося вилучити образ керованого з
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to remove managed save path '%1$s'"
|
msgid "Failed to remove managed save path '%1$s'"
|
||||||
msgstr ""
|
msgstr "Не вдалося вилучити керований шлях збереження «%1$s»"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to remove storage volume '%1$s'(%2$s)"
|
msgid "Failed to remove storage volume '%1$s'(%2$s)"
|
||||||
@ -8517,7 +8520,7 @@ msgid "Failed to save VM settings"
|
|||||||
msgstr "Не вдалося зберегти параметри ВМ"
|
msgstr "Не вдалося зберегти параметри ВМ"
|
||||||
|
|
||||||
msgid "Failed to save domain"
|
msgid "Failed to save domain"
|
||||||
msgstr ""
|
msgstr "Не вдалося зберегти домен"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to save domain '%1$d' with libxenlight"
|
msgid "Failed to save domain '%1$d' with libxenlight"
|
||||||
@ -8730,7 +8733,7 @@ msgid "Failed to shutdown domain '%1$s'"
|
|||||||
msgstr "Помилка вимикання домену «%1$s»"
|
msgstr "Помилка вимикання домену «%1$s»"
|
||||||
|
|
||||||
msgid "Failed to shutoff after domain save"
|
msgid "Failed to shutoff after domain save"
|
||||||
msgstr ""
|
msgstr "Не вдалося завершити роботу після збереження домену"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Failed to soft reset VM '%1$s'. Destroying VM"
|
msgid "Failed to soft reset VM '%1$s'. Destroying VM"
|
||||||
@ -8959,7 +8962,7 @@ msgid "Failed to write '%1$s'"
|
|||||||
msgstr "Не вдалося записати «%1$s»"
|
msgstr "Не вдалося записати «%1$s»"
|
||||||
|
|
||||||
msgid "Failed to write file header"
|
msgid "Failed to write file header"
|
||||||
msgstr ""
|
msgstr "Не вдалося записати заголовок файла"
|
||||||
|
|
||||||
msgid "Failed to write pixel data"
|
msgid "Failed to write pixel data"
|
||||||
msgstr "Не вдалося записати піксельні дані"
|
msgstr "Не вдалося записати піксельні дані"
|
||||||
@ -8980,7 +8983,7 @@ msgid "Failed to write vmx file '%1$s'"
|
|||||||
msgstr "Не вдалося виконати запис файла VMX «%1$s»"
|
msgstr "Не вдалося виконати запис файла VMX «%1$s»"
|
||||||
|
|
||||||
msgid "Failed to write xml definition"
|
msgid "Failed to write xml definition"
|
||||||
msgstr ""
|
msgstr "Не вдалося записати визначення XML"
|
||||||
|
|
||||||
msgid "Failed to write xml description"
|
msgid "Failed to write xml description"
|
||||||
msgstr "Не вдалося записати опис у форматі XML"
|
msgstr "Не вдалося записати опис у форматі XML"
|
||||||
@ -9311,16 +9314,17 @@ msgid "Get or set perf event"
|
|||||||
msgstr "Отримати або встановити подію perf"
|
msgstr "Отримати або встановити подію perf"
|
||||||
|
|
||||||
msgid "Get or set the current blkio parameters for a guest domain."
|
msgid "Get or set the current blkio parameters for a guest domain."
|
||||||
msgstr ""
|
msgstr "Отримати або встановити поточні параметри blkio для гостьового домену."
|
||||||
|
|
||||||
msgid "Get or set the current memory parameters for a guest domain."
|
msgid "Get or set the current memory parameters for a guest domain."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Отримати або встановити поточні параметри пам'яті для гостьового домену."
|
||||||
|
|
||||||
msgid "Get or set the current numa parameters for a guest domain."
|
msgid "Get or set the current numa parameters for a guest domain."
|
||||||
msgstr ""
|
msgstr "Отримати або встановити поточні параметри NUMA для гостьового домену."
|
||||||
|
|
||||||
msgid "Get or set the current perf events for a guest domain."
|
msgid "Get or set the current perf events for a guest domain."
|
||||||
msgstr ""
|
msgstr "Отримати або встановити поточні події perf для гостьового домену."
|
||||||
|
|
||||||
msgid "Get or set the current snapshot"
|
msgid "Get or set the current snapshot"
|
||||||
msgstr "Отримання або встановлення поточного знімка"
|
msgstr "Отримання або встановлення поточного знімка"
|
||||||
@ -12318,6 +12322,8 @@ msgid ""
|
|||||||
"NUMA mode, one of strict, preferred and interleave or a number from the "
|
"NUMA mode, one of strict, preferred and interleave or a number from the "
|
||||||
"virDomainNumatuneMemMode enum"
|
"virDomainNumatuneMemMode enum"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Режим NUMA, одне зі значень, strict, preferred та interleave, або число з "
|
||||||
|
"переліку virDomainNumatuneMemMode"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "NUMA node %1$d is not available"
|
msgid "NUMA node %1$d is not available"
|
||||||
@ -14254,7 +14260,7 @@ msgid "Relative backing during copy not supported yet"
|
|||||||
msgstr "Підтримки відносного резервування під час копіювання ще не передбачено"
|
msgstr "Підтримки відносного резервування під час копіювання ще не передбачено"
|
||||||
|
|
||||||
msgid "Reload domain's graphics display certificates"
|
msgid "Reload domain's graphics display certificates"
|
||||||
msgstr ""
|
msgstr "Перезавантажити сертифікати графічного дисплея домену"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Remote command terminated with non-zero code: %1$d"
|
msgid "Remote command terminated with non-zero code: %1$d"
|
||||||
@ -14446,10 +14452,10 @@ msgid "Retrieve identity details about <client> from <server>"
|
|||||||
msgstr "Отримати дані профілю клієнта <client> з сервера <server>"
|
msgstr "Отримати дані профілю клієнта <client> з сервера <server>"
|
||||||
|
|
||||||
msgid "Retrieve server's client-related configuration limits"
|
msgid "Retrieve server's client-related configuration limits"
|
||||||
msgstr ""
|
msgstr "Отримати з сервера пов'язані із клієнтом обмеження налаштувань"
|
||||||
|
|
||||||
msgid "Retrieve threadpool attributes from a server."
|
msgid "Retrieve threadpool attributes from a server."
|
||||||
msgstr ""
|
msgstr "Отримати атрибути буфера потоків з сервера."
|
||||||
|
|
||||||
msgid "Return pool info in bytes"
|
msgid "Return pool info in bytes"
|
||||||
msgstr "Повернути дані щодо буфера у байтах"
|
msgstr "Повернути дані щодо буфера у байтах"
|
||||||
@ -14938,7 +14944,7 @@ msgstr ""
|
|||||||
"гостьової системи"
|
"гостьової системи"
|
||||||
|
|
||||||
msgid "Serial only works in UNIX/PTY modes"
|
msgid "Serial only works in UNIX/PTY modes"
|
||||||
msgstr ""
|
msgstr "Послідовний режим працює лише у режимах UNIX/PTY"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Serial port index %1$d out of [0..3] range"
|
msgid "Serial port index %1$d out of [0..3] range"
|
||||||
@ -19861,6 +19867,7 @@ msgstr "Несподівано отримано порт мережі без з'
|
|||||||
|
|
||||||
msgid "Unix Socket backend is not supported by this version of ch."
|
msgid "Unix Socket backend is not supported by this version of ch."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Підтримки модуля обробки даних сокетів Unix у цій версії ch не передбачено."
|
||||||
|
|
||||||
msgid "Unix file descriptors not supported on this platform"
|
msgid "Unix file descriptors not supported on this platform"
|
||||||
msgstr "На цій платформі не передбачено підтримки дескрипторів файлів UNIX"
|
msgstr "На цій платформі не передбачено підтримки дескрипторів файлів UNIX"
|
||||||
@ -23520,10 +23527,10 @@ msgid "cannot revert snapshot of running domain"
|
|||||||
msgstr "не можна відновлювати попередній стан запущеного домену"
|
msgstr "не можна відновлювати попередній стан запущеного домену"
|
||||||
|
|
||||||
msgid "cannot save domain with host devices"
|
msgid "cannot save domain with host devices"
|
||||||
msgstr ""
|
msgstr "не вдалося зберегти домен із гостьовими пристроями"
|
||||||
|
|
||||||
msgid "cannot save domain with network interfaces"
|
msgid "cannot save domain with network interfaces"
|
||||||
msgstr ""
|
msgstr "не вдалося зберегти домен із мережевими інтерфейсами"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot save file '%1$s'"
|
msgid "cannot save file '%1$s'"
|
||||||
@ -24109,10 +24116,10 @@ msgid "command '%1$s' requires <%2$s> option"
|
|||||||
msgstr "для команди «%1$s» потрібно вказати параметр <%2$s>"
|
msgstr "для команди «%1$s» потрібно вказати параметр <%2$s>"
|
||||||
|
|
||||||
msgid "command groups is NULL run vshInit before reloading"
|
msgid "command groups is NULL run vshInit before reloading"
|
||||||
msgstr ""
|
msgstr "групи команд дорівнюють NULL; запустіть vshInit до перезавантаження"
|
||||||
|
|
||||||
msgid "command groups must be non-NULL"
|
msgid "command groups must be non-NULL"
|
||||||
msgstr ""
|
msgstr "групи команд не повинні дорівнювати NULL"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "command is already running as pid %1$lld"
|
msgid "command is already running as pid %1$lld"
|
||||||
@ -27671,7 +27678,7 @@ msgid "failed to read AppArmor template"
|
|||||||
msgstr "не вдалося прочитати дані шаблону AppArmor"
|
msgstr "не вдалося прочитати дані шаблону AppArmor"
|
||||||
|
|
||||||
msgid "failed to read CHSaveXMLHeader header"
|
msgid "failed to read CHSaveXMLHeader header"
|
||||||
msgstr ""
|
msgstr "не вдалося прочитати заголовок CHSaveXMLHeader"
|
||||||
|
|
||||||
msgid "failed to read XML"
|
msgid "failed to read XML"
|
||||||
msgstr "не вдалося прочитати XML"
|
msgstr "не вдалося прочитати XML"
|
||||||
@ -27805,19 +27812,21 @@ msgid "failed to resolve symlink %1$s: %2$s"
|
|||||||
msgstr "не вдалося знайти джерело символічного посилання %1$s: %2$s"
|
msgstr "не вдалося знайти джерело символічного посилання %1$s: %2$s"
|
||||||
|
|
||||||
msgid "failed to restore domain"
|
msgid "failed to restore domain"
|
||||||
msgstr ""
|
msgstr "не вдалося відновити домен"
|
||||||
|
|
||||||
msgid "failed to restore domain from managed save"
|
msgid "failed to restore domain from managed save"
|
||||||
msgstr ""
|
msgstr "не вдалося відновити домен із керованого сховища збережених даних"
|
||||||
|
|
||||||
msgid "failed to resume domain"
|
msgid "failed to resume domain"
|
||||||
msgstr "помилка відновлення роботи домену"
|
msgstr "помилка відновлення роботи домену"
|
||||||
|
|
||||||
msgid "failed to resume domain after restore"
|
msgid "failed to resume domain after restore"
|
||||||
msgstr ""
|
msgstr "не вдалося відновити роботу домену після відновлення"
|
||||||
|
|
||||||
msgid "failed to resume domain after restore from managed save"
|
msgid "failed to resume domain after restore from managed save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"не вдалося відновити роботу домену після відновлення з керованого сховища "
|
||||||
|
"збережених даних"
|
||||||
|
|
||||||
msgid "failed to retrieve XML"
|
msgid "failed to retrieve XML"
|
||||||
msgstr "не вдалося отримати XML"
|
msgstr "не вдалося отримати XML"
|
||||||
@ -27941,7 +27950,7 @@ msgid "failed to suspend domain"
|
|||||||
msgstr "не вдалося призупинити роботу домену"
|
msgstr "не вдалося призупинити роботу домену"
|
||||||
|
|
||||||
msgid "failed to suspend domain before saving"
|
msgid "failed to suspend domain before saving"
|
||||||
msgstr ""
|
msgstr "не вдалося призупинити роботу домену до збереження"
|
||||||
|
|
||||||
msgid "failed to take screenshot"
|
msgid "failed to take screenshot"
|
||||||
msgstr "не вдалося створити знімок вікна"
|
msgstr "не вдалося створити знімок вікна"
|
||||||
@ -28659,7 +28668,7 @@ msgstr ""
|
|||||||
"потрібен графічний пристрій для значення атрибуту 'display=on' у <hostdev>"
|
"потрібен графічний пристрій для значення атрибуту 'display=on' у <hostdev>"
|
||||||
|
|
||||||
msgid "graphics display type"
|
msgid "graphics display type"
|
||||||
msgstr ""
|
msgstr "тип графічного дисплея"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"graphics type 'egl-headless' is only supported with one of: 'vnc', 'spice' "
|
"graphics type 'egl-headless' is only supported with one of: 'vnc', 'spice' "
|
||||||
@ -29058,6 +29067,8 @@ msgid ""
|
|||||||
"hypervisor provided conflicting CPU data: feature '%1$s' is both enabled and "
|
"hypervisor provided conflicting CPU data: feature '%1$s' is both enabled and "
|
||||||
"disabled at the same time"
|
"disabled at the same time"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"наданий гіпервізор конфліктує із даними процесора: можливість «%1$s» одразу "
|
||||||
|
"увімкнено і вимкнено"
|
||||||
|
|
||||||
msgid "i - turn off validation and try to redefine again"
|
msgid "i - turn off validation and try to redefine again"
|
||||||
msgstr "i - вимкнути перевірку і спробувати визначити все знову"
|
msgstr "i - вимкнути перевірку і спробувати визначити все знову"
|
||||||
@ -31175,7 +31186,7 @@ msgstr ""
|
|||||||
"агента)"
|
"агента)"
|
||||||
|
|
||||||
msgid "maplen must be non-negative"
|
msgid "maplen must be non-negative"
|
||||||
msgstr ""
|
msgstr "maplen має бути невід'ємним"
|
||||||
|
|
||||||
msgid "mark inactive domains with managed save state"
|
msgid "mark inactive domains with managed save state"
|
||||||
msgstr "позначити неактивні домени позначкою стану керованого збереження"
|
msgstr "позначити неактивні домени позначкою стану керованого збереження"
|
||||||
@ -31213,7 +31224,7 @@ msgid "maxcells > REMOTE_NODE_MAX_CELLS"
|
|||||||
msgstr "maxcells > REMOTE_NODE_MAX_CELLS"
|
msgstr "maxcells > REMOTE_NODE_MAX_CELLS"
|
||||||
|
|
||||||
msgid "maxcells must be non-negative"
|
msgid "maxcells must be non-negative"
|
||||||
msgstr ""
|
msgstr "maxcells має бути невід'ємним"
|
||||||
|
|
||||||
msgid "maxerrors too large"
|
msgid "maxerrors too large"
|
||||||
msgstr "значення maxerrors є занадто великим"
|
msgstr "значення maxerrors є занадто великим"
|
||||||
@ -31222,7 +31233,7 @@ msgid "maxids > REMOTE_DOMAIN_LIST_MAX"
|
|||||||
msgstr "maxids > REMOTE_DOMAIN_LIST_MAX"
|
msgstr "maxids > REMOTE_DOMAIN_LIST_MAX"
|
||||||
|
|
||||||
msgid "maxids must be non-negative"
|
msgid "maxids must be non-negative"
|
||||||
msgstr ""
|
msgstr "maxids має бути невід'ємним"
|
||||||
|
|
||||||
msgid "maximum"
|
msgid "maximum"
|
||||||
msgstr "maximum"
|
msgstr "maximum"
|
||||||
@ -31273,7 +31284,7 @@ msgid "maxinfo > REMOTE_VCPUINFO_MAX"
|
|||||||
msgstr "maxinfo > REMOTE_VCPUINFO_MAX"
|
msgstr "maxinfo > REMOTE_VCPUINFO_MAX"
|
||||||
|
|
||||||
msgid "maxinfo must be non-negative"
|
msgid "maxinfo must be non-negative"
|
||||||
msgstr ""
|
msgstr "maxinfo має бути невід'ємним"
|
||||||
|
|
||||||
msgid "maxnames > REMOTE_DOMAIN_LIST_MAX"
|
msgid "maxnames > REMOTE_DOMAIN_LIST_MAX"
|
||||||
msgstr "maxnames > REMOTE_DOMAIN_LIST_MAX"
|
msgstr "maxnames > REMOTE_DOMAIN_LIST_MAX"
|
||||||
@ -31303,13 +31314,13 @@ msgid "maxnames > REMOTE_STORAGE_VOL_LIST_MAX"
|
|||||||
msgstr "maxnames > REMOTE_STORAGE_VOL_LIST_MAX"
|
msgstr "maxnames > REMOTE_STORAGE_VOL_LIST_MAX"
|
||||||
|
|
||||||
msgid "maxnames must be non-negative"
|
msgid "maxnames must be non-negative"
|
||||||
msgstr ""
|
msgstr "maxnames має бути невід'ємним"
|
||||||
|
|
||||||
msgid "maxuuids > REMOTE_SECRET_LIST_MAX"
|
msgid "maxuuids > REMOTE_SECRET_LIST_MAX"
|
||||||
msgstr "maxuuids > REMOTE_SECRET_LIST_MAX"
|
msgstr "maxuuids > REMOTE_SECRET_LIST_MAX"
|
||||||
|
|
||||||
msgid "maxuuids must be non-negative"
|
msgid "maxuuids must be non-negative"
|
||||||
msgstr ""
|
msgstr "maxuuids має бути невід'ємним"
|
||||||
|
|
||||||
msgid "mdev attribute missing name or value"
|
msgid "mdev attribute missing name or value"
|
||||||
msgstr "у атрибуті mdev пропущено назву або значення"
|
msgstr "у атрибуті mdev пропущено назву або значення"
|
||||||
@ -32690,10 +32701,10 @@ msgid "msi option is only supported with a server"
|
|||||||
msgstr "підтримку параметра msi передбачено лише з сервером"
|
msgstr "підтримку параметра msi передбачено лише з сервером"
|
||||||
|
|
||||||
msgid "mtp is not supported with this QEMU binary"
|
msgid "mtp is not supported with this QEMU binary"
|
||||||
msgstr ""
|
msgstr "підтримки mtp у цьому виконуваному файлі QEMU не передбачено"
|
||||||
|
|
||||||
msgid "mtp only supports passthrough accessmode"
|
msgid "mtp only supports passthrough accessmode"
|
||||||
msgstr ""
|
msgstr "у mtp передбачено підтримку лише режиму доступу і пропусканням"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -32829,7 +32840,7 @@ msgid "ncpumaps > REMOTE_VCPUINFO_MAX"
|
|||||||
msgstr "ncpumaps > REMOTE_VCPUINFO_MAX"
|
msgstr "ncpumaps > REMOTE_VCPUINFO_MAX"
|
||||||
|
|
||||||
msgid "ncpumaps must be non-negative"
|
msgid "ncpumaps must be non-negative"
|
||||||
msgstr ""
|
msgstr "ncpumaps має бути невід'ємним"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ncpus count exceeds maximum: %1$u > %2$u"
|
msgid "ncpus count exceeds maximum: %1$u > %2$u"
|
||||||
@ -33857,7 +33868,7 @@ msgid "nparams in %1$s must be equal to %2$d"
|
|||||||
msgstr "значення nparams у %1$s має дорівнювати %2$d"
|
msgstr "значення nparams у %1$s має дорівнювати %2$d"
|
||||||
|
|
||||||
msgid "nparams must be non-negative"
|
msgid "nparams must be non-negative"
|
||||||
msgstr ""
|
msgstr "nparams має бути невід'ємним"
|
||||||
|
|
||||||
msgid "nparams too large"
|
msgid "nparams too large"
|
||||||
msgstr "надто великий розмір nparams"
|
msgstr "надто великий розмір nparams"
|
||||||
@ -34100,7 +34111,7 @@ msgid "only can resume paused domain"
|
|||||||
msgstr "можна відновити роботу лише призупиненого домену"
|
msgstr "можна відновити роботу лише призупиненого домену"
|
||||||
|
|
||||||
msgid "only can save running/paused domain"
|
msgid "only can save running/paused domain"
|
||||||
msgstr ""
|
msgstr "збереження можливе лише для запущеного або призупиненого домену"
|
||||||
|
|
||||||
msgid "only can shutdown running/paused domain"
|
msgid "only can shutdown running/paused domain"
|
||||||
msgstr "вимикати можна лише запущений або призупинений домен"
|
msgstr "вимикати можна лише запущений або призупинений домен"
|
||||||
@ -34356,7 +34367,7 @@ msgstr ""
|
|||||||
"вивести рядок XML щодо системної інформації гіпервізора, якщо він доступний"
|
"вивести рядок XML щодо системної інформації гіпервізора, якщо він доступний"
|
||||||
|
|
||||||
msgid "output help for each command"
|
msgid "output help for each command"
|
||||||
msgstr ""
|
msgstr "вивести довідку для кожної команди"
|
||||||
|
|
||||||
msgid "output the list of options which are missing completers"
|
msgid "output the list of options which are missing completers"
|
||||||
msgstr "вивести список параметрів, де не вистачає завершувачів"
|
msgstr "вивести список параметрів, де не вистачає завершувачів"
|
||||||
@ -36000,7 +36011,7 @@ msgid "save image is incomplete"
|
|||||||
msgstr "збережений образ є неповним"
|
msgstr "збережений образ є неповним"
|
||||||
|
|
||||||
msgid "save image magic is incorrect"
|
msgid "save image magic is incorrect"
|
||||||
msgstr ""
|
msgstr "контрольна сума збереженого образу є помилковою"
|
||||||
|
|
||||||
msgid "saved"
|
msgid "saved"
|
||||||
msgstr "збережено"
|
msgstr "збережено"
|
||||||
@ -38002,7 +38013,7 @@ msgstr "невідповідність типів у події (маємо 0x%1
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "type must be less than %1$d"
|
msgid "type must be less than %1$d"
|
||||||
msgstr ""
|
msgstr "type має бути меншим за %1$d"
|
||||||
|
|
||||||
msgid "type of source (block|file|network)"
|
msgid "type of source (block|file|network)"
|
||||||
msgstr "тип джерела (block|file|network)"
|
msgstr "тип джерела (block|file|network)"
|
||||||
@ -40421,7 +40432,7 @@ msgstr "У virVMXContext не встановлено функцію parseFileNam
|
|||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "virt type '%1$s' is not supported"
|
msgid "virt type '%1$s' is not supported"
|
||||||
msgstr ""
|
msgstr "підтримки типу віртуалізації «%1$s» не передбачено"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -3066,15 +3066,12 @@ virNodeDeviceGetPCIVPDDynamicCap(virNodeDevCapPCIDev *devCapPCIDev)
|
|||||||
if (!(pciDev = virPCIDeviceNew(&devAddr)))
|
if (!(pciDev = virPCIDeviceNew(&devAddr)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (virPCIDeviceHasVPD(pciDev)) {
|
/* VPD is optional in PCI(e) specs. If it is there, attempt to add it. */
|
||||||
/* VPD is optional in PCI(e) specs. If it is there, attempt to add it. */
|
if ((res = virPCIDeviceGetVPD(pciDev))) {
|
||||||
if ((res = virPCIDeviceGetVPD(pciDev))) {
|
devCapPCIDev->flags |= VIR_NODE_DEV_CAP_FLAG_PCI_VPD;
|
||||||
devCapPCIDev->flags |= VIR_NODE_DEV_CAP_FLAG_PCI_VPD;
|
devCapPCIDev->vpd = g_steal_pointer(&res);
|
||||||
devCapPCIDev->vpd = g_steal_pointer(&res);
|
|
||||||
} else {
|
|
||||||
virResetLastError();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -429,9 +429,10 @@ def expand_model(model):
|
|||||||
"""Expand a qemu cpu model description that has its feature split up into
|
"""Expand a qemu cpu model description that has its feature split up into
|
||||||
different fields and may have differing versions into several libvirt-
|
different fields and may have differing versions into several libvirt-
|
||||||
friendly cpu models."""
|
friendly cpu models."""
|
||||||
|
name = model.pop(".name")
|
||||||
|
|
||||||
result = {
|
result = {
|
||||||
"name": model.pop(".name"),
|
"name": name,
|
||||||
"vendor": translate_vendor(model.pop(".vendor")),
|
"vendor": translate_vendor(model.pop(".vendor")),
|
||||||
"features": set(),
|
"features": set(),
|
||||||
"extra": dict()}
|
"extra": dict()}
|
||||||
@ -454,7 +455,8 @@ def expand_model(model):
|
|||||||
|
|
||||||
for version in versions:
|
for version in versions:
|
||||||
result = copy.deepcopy(result)
|
result = copy.deepcopy(result)
|
||||||
result["name"] = version.pop(".alias", result["name"])
|
version_num = version.pop(".version", '1')
|
||||||
|
result["name"] = name + "-v" + version_num
|
||||||
|
|
||||||
props = version.pop(".props", dict())
|
props = version.pop(".props", dict())
|
||||||
for k, v in props:
|
for k, v in props:
|
||||||
@ -475,6 +477,11 @@ def expand_model(model):
|
|||||||
|
|
||||||
yield result
|
yield result
|
||||||
|
|
||||||
|
alias = version.pop(".alias", None)
|
||||||
|
if alias:
|
||||||
|
result = copy.deepcopy(result)
|
||||||
|
result["name"] = alias
|
||||||
|
yield result
|
||||||
|
|
||||||
def output_model(f, model):
|
def output_model(f, model):
|
||||||
if model["extra"]:
|
if model["extra"]:
|
||||||
|
@ -3107,7 +3107,6 @@ virPCIDeviceGetUnbindFromStub;
|
|||||||
virPCIDeviceGetUsedBy;
|
virPCIDeviceGetUsedBy;
|
||||||
virPCIDeviceGetVPD;
|
virPCIDeviceGetVPD;
|
||||||
virPCIDeviceHasPCIExpressLink;
|
virPCIDeviceHasPCIExpressLink;
|
||||||
virPCIDeviceHasVPD;
|
|
||||||
virPCIDeviceIsAssignable;
|
virPCIDeviceIsAssignable;
|
||||||
virPCIDeviceIsPCIExpress;
|
virPCIDeviceIsPCIExpress;
|
||||||
virPCIDeviceListAdd;
|
virPCIDeviceListAdd;
|
||||||
|
@ -3078,24 +3078,14 @@ virPCIGetVirtualFunctionInfo(const char *vf_sysfs_device_path,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool
|
|
||||||
virPCIDeviceHasVPD(virPCIDevice *dev)
|
|
||||||
{
|
|
||||||
g_autofree char *vpdPath = virPCIFile(dev->name, "vpd");
|
|
||||||
bool ret = virFileIsRegular(vpdPath);
|
|
||||||
|
|
||||||
VIR_DEBUG("path='%s', exists='%d'", vpdPath, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virPCIDeviceGetVPD:
|
* virPCIDeviceGetVPD:
|
||||||
* @dev: a PCI device to get a PCI VPD for.
|
* @dev: a PCI device to get a PCI VPD for.
|
||||||
*
|
*
|
||||||
* Obtain a PCI device's Vital Product Data (VPD). VPD is optional in
|
* Obtain a PCI device's Vital Product Data (VPD). VPD is optional in
|
||||||
* both PCI Local Bus and PCIe specifications so there is no guarantee it
|
* both PCI Local Bus and PCIe specifications so there is no guarantee it
|
||||||
* will be there for a particular device.
|
* will be there for a particular device. The VPD data is returned in @vpd if
|
||||||
|
* it's available or otherwise NULL is set.
|
||||||
*
|
*
|
||||||
* Returns: a pointer to virPCIVPDResource which needs to be freed by the caller
|
* Returns: a pointer to virPCIVPDResource which needs to be freed by the caller
|
||||||
* or NULL if getting it failed for some reason (e.g. invalid format, I/O error).
|
* or NULL if getting it failed for some reason (e.g. invalid format, I/O error).
|
||||||
@ -3106,16 +3096,12 @@ virPCIDeviceGetVPD(virPCIDevice *dev)
|
|||||||
g_autofree char *vpdPath = virPCIFile(dev->name, "vpd");
|
g_autofree char *vpdPath = virPCIFile(dev->name, "vpd");
|
||||||
VIR_AUTOCLOSE fd = -1;
|
VIR_AUTOCLOSE fd = -1;
|
||||||
|
|
||||||
if (!virPCIDeviceHasVPD(dev)) {
|
fd = open(vpdPath, O_RDONLY);
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, _("Device %1$s does not have a VPD"),
|
|
||||||
virPCIDeviceGetName(dev));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((fd = open(vpdPath, O_RDONLY)) < 0) {
|
VIR_DEBUG("dev='%s' path='%s' fd='%d'", virPCIDeviceGetName(dev), vpdPath, fd);
|
||||||
virReportSystemError(errno, _("Failed to open a VPD file '%1$s'"), vpdPath);
|
|
||||||
|
if (fd < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
|
|
||||||
return virPCIVPDParse(fd);
|
return virPCIVPDParse(fd);
|
||||||
}
|
}
|
||||||
@ -3194,17 +3180,10 @@ virPCIGetVirtualFunctionInfo(const char *vf_sysfs_device_path G_GNUC_UNUSED,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
virPCIDeviceHasVPD(virPCIDevice *dev G_GNUC_UNUSED)
|
|
||||||
{
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported));
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
virPCIVPDResource *
|
virPCIVPDResource *
|
||||||
virPCIDeviceGetVPD(virPCIDevice *dev G_GNUC_UNUSED)
|
virPCIDeviceGetVPD(virPCIDevice *dev G_GNUC_UNUSED)
|
||||||
{
|
{
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _(unsupported));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif /* __linux__ */
|
#endif /* __linux__ */
|
||||||
|
@ -270,7 +270,6 @@ int virPCIGetVirtualFunctionInfo(const char *vf_sysfs_device_path,
|
|||||||
char **pfname,
|
char **pfname,
|
||||||
int *vf_index);
|
int *vf_index);
|
||||||
|
|
||||||
bool virPCIDeviceHasVPD(virPCIDevice *dev);
|
|
||||||
virPCIVPDResource * virPCIDeviceGetVPD(virPCIDevice *dev);
|
virPCIVPDResource * virPCIDeviceGetVPD(virPCIDevice *dev);
|
||||||
|
|
||||||
int virPCIDeviceUnbind(virPCIDevice *dev);
|
int virPCIDeviceUnbind(virPCIDevice *dev);
|
||||||
|
@ -361,9 +361,9 @@ virPCIVPDResourceUpdateKeyword(virPCIVPDResource *res,
|
|||||||
* @offset: The offset at which bytes need to be read.
|
* @offset: The offset at which bytes need to be read.
|
||||||
* @csum: A pointer to a byte containing the current checksum value. Mutated by this function.
|
* @csum: A pointer to a byte containing the current checksum value. Mutated by this function.
|
||||||
*
|
*
|
||||||
* Returns 0 if exactly @count bytes were read from @vpdFileFd. The csum value is
|
* Returns 0 if exactly @count bytes were read from @vpdFileFd. The csum value
|
||||||
* also modified as bytes are read. If an error occurs while reading data from the VPD file
|
* is also modified as bytes are read. If an error occurs while reading data
|
||||||
* descriptor, it is reported and -1 is returned to the caller.
|
* from the VPD file descriptor -1 is returned to the caller.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
virPCIVPDReadVPDBytes(int vpdFileFd,
|
virPCIVPDReadVPDBytes(int vpdFileFd,
|
||||||
@ -375,8 +375,7 @@ virPCIVPDReadVPDBytes(int vpdFileFd,
|
|||||||
ssize_t numRead = pread(vpdFileFd, buf, count, offset);
|
ssize_t numRead = pread(vpdFileFd, buf, count, offset);
|
||||||
|
|
||||||
if (numRead != count) {
|
if (numRead != count) {
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("read='%zd' expected='%zu'", numRead, count);
|
||||||
_("failed to read the PCI VPD data"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,8 +446,7 @@ virPCIVPDParseVPDLargeResourceFields(int vpdFileFd,
|
|||||||
|
|
||||||
case VIR_PCI_VPD_RESOURCE_FIELD_VALUE_FORMAT_RDWR:
|
case VIR_PCI_VPD_RESOURCE_FIELD_VALUE_FORMAT_RDWR:
|
||||||
if (readOnly) {
|
if (readOnly) {
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("unexpected RW keyword in read-only section");
|
||||||
_("failed to read the PCI VPD data: unexpected RW keyword in read-only section"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -457,8 +455,7 @@ virPCIVPDParseVPDLargeResourceFields(int vpdFileFd,
|
|||||||
|
|
||||||
case VIR_PCI_VPD_RESOURCE_FIELD_VALUE_FORMAT_RESVD:
|
case VIR_PCI_VPD_RESOURCE_FIELD_VALUE_FORMAT_RESVD:
|
||||||
if (!readOnly) {
|
if (!readOnly) {
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("unexpected RV keyword in read-write section");
|
||||||
_("failed to read the PCI VPD data: unexpected RV keyword in read-write section"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
/* Only need one byte to be read and accounted towards
|
/* Only need one byte to be read and accounted towards
|
||||||
@ -477,8 +474,7 @@ virPCIVPDParseVPDLargeResourceFields(int vpdFileFd,
|
|||||||
if (resPos + resDataLen < fieldPos + fieldDataLen) {
|
if (resPos + resDataLen < fieldPos + fieldDataLen) {
|
||||||
/* In this case the field cannot simply be skipped since the position of the
|
/* In this case the field cannot simply be skipped since the position of the
|
||||||
* next field is determined based on the length of a previous field. */
|
* next field is determined based on the length of a previous field. */
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("data field length invalid");
|
||||||
_("failed to read the PCI VPD data: data field length invalid"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -517,8 +513,7 @@ virPCIVPDParseVPDLargeResourceFields(int vpdFileFd,
|
|||||||
case VIR_PCI_VPD_RESOURCE_FIELD_VALUE_FORMAT_RESVD:
|
case VIR_PCI_VPD_RESOURCE_FIELD_VALUE_FORMAT_RESVD:
|
||||||
if (*csum) {
|
if (*csum) {
|
||||||
/* All bytes up to and including the checksum byte should add up to 0. */
|
/* All bytes up to and including the checksum byte should add up to 0. */
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("invalid checksum");
|
||||||
_("failed to read the PCI VPD data: invalid checksum"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
hasChecksum = true;
|
hasChecksum = true;
|
||||||
@ -546,14 +541,12 @@ virPCIVPDParseVPDLargeResourceFields(int vpdFileFd,
|
|||||||
* they were not the last fields in the section. */
|
* they were not the last fields in the section. */
|
||||||
if ((fieldPos < resPos + resDataLen)) {
|
if ((fieldPos < resPos + resDataLen)) {
|
||||||
/* unparsed data still present */
|
/* unparsed data still present */
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("parsing ended prematurely");
|
||||||
_("failed to read the PCI VPD data: parsing ended prematurely"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (readOnly && !hasChecksum) {
|
if (readOnly && !hasChecksum) {
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("missing mandatory checksum");
|
||||||
_("failed to read the PCI VPD data: missing mandatory checksum"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -568,7 +561,7 @@ virPCIVPDParseVPDLargeResourceFields(int vpdFileFd,
|
|||||||
* @resDataLen: A length of the data portion of a resource.
|
* @resDataLen: A length of the data portion of a resource.
|
||||||
* @csum: A pointer to a 1-byte checksum.
|
* @csum: A pointer to a 1-byte checksum.
|
||||||
*
|
*
|
||||||
* Returns: 0 on success -1 and an error on failure
|
* Returns: 0 on success -1 on failure. No libvirt errors are reported.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
virPCIVPDParseVPDLargeResourceString(int vpdFileFd, uint16_t resPos,
|
virPCIVPDParseVPDLargeResourceString(int vpdFileFd, uint16_t resPos,
|
||||||
@ -584,8 +577,7 @@ virPCIVPDParseVPDLargeResourceString(int vpdFileFd, uint16_t resPos,
|
|||||||
|
|
||||||
resValue = g_strdup(g_strstrip(buf));
|
resValue = g_strdup(g_strstrip(buf));
|
||||||
if (!virPCIVPDResourceIsValidTextValue(resValue)) {
|
if (!virPCIVPDResourceIsValidTextValue(resValue)) {
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("PCI VPD string contains invalid characters");
|
||||||
_("failed to parse PCI VPD string value with invalid characters"));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
res->name = g_steal_pointer(&resValue);
|
res->name = g_steal_pointer(&resValue);
|
||||||
@ -599,7 +591,7 @@ virPCIVPDParseVPDLargeResourceString(int vpdFileFd, uint16_t resPos,
|
|||||||
* Parse a PCI device's Vital Product Data (VPD) contained in a file descriptor.
|
* Parse a PCI device's Vital Product Data (VPD) contained in a file descriptor.
|
||||||
*
|
*
|
||||||
* Returns: a pointer to a GList of VPDResource types which needs to be freed by the caller or
|
* Returns: a pointer to a GList of VPDResource types which needs to be freed by the caller or
|
||||||
* NULL if getting it failed for some reason.
|
* NULL if getting it failed for some reason. No libvirt errors are reported.
|
||||||
*/
|
*/
|
||||||
virPCIVPDResource *
|
virPCIVPDResource *
|
||||||
virPCIVPDParse(int vpdFileFd)
|
virPCIVPDParse(int vpdFileFd)
|
||||||
@ -629,7 +621,8 @@ virPCIVPDParse(int vpdFileFd)
|
|||||||
if (tag & PCI_VPD_LARGE_RESOURCE_FLAG) {
|
if (tag & PCI_VPD_LARGE_RESOURCE_FLAG) {
|
||||||
if (resPos > PCI_VPD_ADDR_MASK + 1 - 3) {
|
if (resPos > PCI_VPD_ADDR_MASK + 1 - 3) {
|
||||||
/* Bail if the large resource starts at the position where the end tag should be. */
|
/* Bail if the large resource starts at the position where the end tag should be. */
|
||||||
goto malformed;
|
VIR_DEBUG("expected end tag, got more data");
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read the two length bytes of the large resource record. */
|
/* Read the two length bytes of the large resource record. */
|
||||||
@ -652,8 +645,7 @@ virPCIVPDParse(int vpdFileFd)
|
|||||||
if (tag == PCI_VPD_RESOURCE_END_TAG) {
|
if (tag == PCI_VPD_RESOURCE_END_TAG) {
|
||||||
/* Stop VPD traversal since the end tag was encountered. */
|
/* Stop VPD traversal since the end tag was encountered. */
|
||||||
if (!hasReadOnly) {
|
if (!hasReadOnly) {
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
VIR_DEBUG("missing read-only section");
|
||||||
_("failed to read the PCI VPD data: missing read-only section"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -662,7 +654,8 @@ virPCIVPDParse(int vpdFileFd)
|
|||||||
|
|
||||||
if (resDataLen > PCI_VPD_ADDR_MASK + 1 - resPos) {
|
if (resDataLen > PCI_VPD_ADDR_MASK + 1 - resPos) {
|
||||||
/* Bail if the resource is too long to fit into the VPD address space. */
|
/* Bail if the resource is too long to fit into the VPD address space. */
|
||||||
goto malformed;
|
VIR_DEBUG("VPD resource too long");
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
@ -698,9 +691,7 @@ virPCIVPDParse(int vpdFileFd)
|
|||||||
resPos += resDataLen;
|
resPos += resDataLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
malformed:
|
VIR_DEBUG("unexpected end of VPD data, expected end tag");
|
||||||
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
|
|
||||||
_("failed to read the PCI VPD data: malformed data"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -709,8 +700,7 @@ virPCIVPDParse(int vpdFileFd)
|
|||||||
virPCIVPDResource *
|
virPCIVPDResource *
|
||||||
virPCIVPDParse(int vpdFileFd G_GNUC_UNUSED)
|
virPCIVPDParse(int vpdFileFd G_GNUC_UNUSED)
|
||||||
{
|
{
|
||||||
virReportError(VIR_ERR_NO_SUPPORT, "%s",
|
VIR_DEBUG("not implemented");
|
||||||
_("PCI VPD reporting not available on this platform"));
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user