Hello community,
here is the log from the commit of package libstorage-ng for openSUSE:Factory checked in at 2019-10-16 09:10:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libstorage-ng (Old)
and /work/SRC/openSUSE:Factory/.libstorage-ng.new.2352 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libstorage-ng"
Wed Oct 16 09:10:24 2019 rev:65 rq:737620 version:4.2.16
Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes 2019-10-03 14:06:04.432622842 +0200
+++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.2352/libstorage-ng.changes 2019-10-16 09:10:29.148209745 +0200
@@ -1,0 +2,16 @@
+Sat Oct 12 02:54:34 UTC 2019 - opensuse-packaging@opensuse.org
+
+- Translated using Weblate (Chinese (Taiwan)) (bsc#1149754)
+- 4.2.16
+
+--------------------------------------------------------------------
+Fri Oct 11 12:15:41 UTC 2019 - aschnell@suse.com
+
+- merge gh#openSUSE/libstorage-ng#674
+- cache luks activation information (for bsc#1129496)
+- use password from LUKS activation for resize
+- extended integration test
+- fixed typos
+- 4.2.15
+
+--------------------------------------------------------------------
Old:
----
libstorage-ng-4.2.14.tar.xz
New:
----
libstorage-ng-4.2.16.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libstorage-ng.spec ++++++
--- /var/tmp/diff_new_pack.Ep8K4L/_old 2019-10-16 09:10:30.232206951 +0200
+++ /var/tmp/diff_new_pack.Ep8K4L/_new 2019-10-16 09:10:30.236206941 +0200
@@ -18,7 +18,7 @@
%define libname %{name}1
Name: libstorage-ng
-Version: 4.2.14
+Version: 4.2.16
Release: 0
Summary: Library for storage management
License: GPL-2.0-only
++++++ libstorage-ng-4.2.14.tar.xz -> libstorage-ng-4.2.16.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/LIBVERSION new/libstorage-ng-4.2.16/LIBVERSION
--- old/libstorage-ng-4.2.14/LIBVERSION 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/LIBVERSION 2019-10-12 07:52:56.000000000 +0200
@@ -1 +1 @@
-1.18.0
+1.19.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/VERSION new/libstorage-ng-4.2.16/VERSION
--- old/libstorage-ng-4.2.14/VERSION 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/VERSION 2019-10-12 07:52:56.000000000 +0200
@@ -1 +1 @@
-4.2.14
+4.2.16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/integration-tests/misc/resize-info.py new/libstorage-ng-4.2.16/integration-tests/misc/resize-info.py
--- old/libstorage-ng-4.2.14/integration-tests/misc/resize-info.py 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/integration-tests/misc/resize-info.py 2019-10-12 07:52:56.000000000 +0200
@@ -78,6 +78,12 @@
if resize_info.reasons & RB_MAX_SIZE_FOR_LVM_LV_THIN:
print("RB_MAX_SIZE_FOR_LVM_LV_THIN")
+if resize_info.reasons & RB_SHRINK_NOT_SUPPORTED_BY_MULTIDEVICE_FILESYSTEM:
+ print("RB_SHRINK_NOT_SUPPORTED_BY_MULTIDEVICE_FILESYSTEM")
+
+if resize_info.reasons & RB_PASSWORD_REQUIRED:
+ print("RB_PASSWORD_REQUIRED")
+
if resize_info.resize_ok:
print(byte_to_humanstring(resize_info.min_size, False, 2, True))
print(byte_to_humanstring(resize_info.max_size, False, 2, True))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/po/zh_TW.po new/libstorage-ng-4.2.16/po/zh_TW.po
--- old/libstorage-ng-4.2.14/po/zh_TW.po 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/po/zh_TW.po 2019-10-12 07:52:56.000000000 +0200
@@ -12,8 +12,8 @@
"Project-Id-Version: libstorage\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-09-04 09:26+0200\n"
-"PO-Revision-Date: 2019-03-23 20:24+0000\n"
-"Last-Translator: Emily Dong \n"
+"PO-Revision-Date: 2019-10-12 05:52+0000\n"
+"Last-Translator: Yi-Jyun Pan \n"
"Language-Team: Chinese (Taiwan) <https://l10n.opensuse.org/projects/"
"libstorage/ng-master/zh_TW/>\n"
"Language: zh_TW\n"
@@ -21,7 +21,7 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 3.3\n"
+"X-Generator: Weblate 3.6.1\n"
msgid ""
"\n"
@@ -165,9 +165,9 @@
#. %2$s is replaced by the device size (e.g. 2.0 GiB),
#. %3$s is replaced by one or more devices (e.g /dev/sda1 (2.0 GiB)
#. and /dev/sdb2 (2.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Add %1$s (%2$s) to btrfs on %3$s"
-msgstr "將 %1$s 新增至 %2$s"
+msgstr "新增 %1$s (%2$s) 到 %3$s 上的 btrfs"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sdd),
@@ -213,9 +213,9 @@
#. %2$s is replaced by the device size (e.g. 2.0 GiB),
#. %3$s is replaced by one or more devices (e.g /dev/sda1 (2.0 GiB)
#. and /dev/sdb2 (2.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Adding %1$s (%2$s) to btrfs on %3$s"
-msgstr "正在將 %1$s 新增至 %2$s"
+msgstr "正在新增 %1$s (%2$s) 至 %3$s 上的 btrfs"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sdd),
@@ -260,17 +260,17 @@
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by device name (e.g. /dev/bcache0),
#. %3$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Attach bcache cache set on %1$s to bcache %2$s (%3$s)"
-msgstr "將設定在 %1$s 上的 Bcache 快取連接到 Bcache %2$s (%3$s)"
+msgstr "將 %1$s 上的 bcache 快取集合連結至 bcache %2$s (%3$s)"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by device name (e.g. /dev/bcache0),
#. %3$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Attaching bcache cache set on %1$s to bcache %2$s (%3$s)"
-msgstr "正在將設定在 %1$s 上的 Bcache 快取連接到 Bcache %2$s (%3$s)"
+msgstr "正在將 %1$s 上的 bcache 快取集合連結至 bcache %2$s (%3$s)"
#. TRANSLATORS: symbol for "bytes" (best keep untranslated)
msgid "B"
@@ -405,9 +405,9 @@
#. %1$s is replaced by file system name (e.g. ext4),
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Create %1$s on %2$s"
-msgstr "在 %2$s (%3$s) 上建立 %1$s"
+msgstr "在 %2$s\t建立 %1$s"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sda)
@@ -497,9 +497,9 @@
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/bcache0),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Create bcache %1$s (%2$s)"
-msgstr "建立 Bcache %1$s (%2$s)"
+msgstr "建立 bcache %1$s (%2$s)"
#. TRANSLATORS:
#. %1$s is replaced with the bcache name (e.g. /dev/bcache0),
@@ -539,9 +539,9 @@
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Create bcache cache set on %1$s (%2$s)"
-msgstr "建立在 %1$s (%2$s) 上的 Bcache 叢集"
+msgstr "在 %1$s (%2$s) 建立 bcache 快取集合"
#. TRANSLATORS:
#. %1$s is replaced with the md name (e.g. /dev/md0),
@@ -898,9 +898,9 @@
#. %1$s is replaced by file system name (e.g. ext4),
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Creating %1$s on %2$s"
-msgstr "正於 %2$s (%3$s) 上建立 %1$s"
+msgstr "在 %2$s 建立 %1$s"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda)
@@ -933,16 +933,16 @@
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/bcache0),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Creating bcache %1$s (%2$s)"
-msgstr "正在建立 Bcache %1$s (%2$s)"
+msgstr "正在建立 bcache %1$s (%2$s)"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Creating bcache cache set %1$s (%2$s)"
-msgstr "正在建立 Bcache 快取叢集 %1$s (%2$s)"
+msgstr "正在建立 bcache 快取叢集 %1$s (%2$s)"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1)
@@ -1068,16 +1068,16 @@
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/bcache0),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Deactivate bcache %1$s (%2$s)"
-msgstr "取消啟用 %1$s (%2$s)"
+msgstr "停用 bcache %1$s (%2$s)"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Deactivate bcache cache set on %1$s (%2$s)"
-msgstr "取消啟用 %1$s (%2$s) 上的 Bcache 快取叢集"
+msgstr "停用 %1$s (%2$s) 上的 bcache 快取叢集"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sda1)
@@ -1127,16 +1127,16 @@
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/bcache0),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Deactivating bcache %1$s (%2$s)"
-msgstr "正在取消啟用 Bcache %1$s (%2$s)"
+msgstr "正在停用 bcache %1$s (%2$s)"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Deactivating bcache cache set on %1$s (%2$s)"
-msgstr "正在停用 %1$s (%2$s) 上的 Bcache 快取叢集"
+msgstr "正在停用 %1$s (%2$s) 上的 bcache 快取叢集"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1)
@@ -1220,9 +1220,9 @@
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/bcache0),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Delete bcache %1$s (%2$s)"
-msgstr "刪除 Bcache %1$s (%2$s)"
+msgstr "刪除 bcache %1$s (%2$s)"
#. TRANSLATORS:
#. %1$s is replaced with the bcache name (e.g. /dev/bcache0),
@@ -1235,9 +1235,9 @@
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Delete bcache cache set on %1$s (%2$s)"
-msgstr "刪除 %1$s (%2$s) 上的 Bcache 快取叢集"
+msgstr "刪除 %1$s (%2$s) 上的 bcache 快取叢集"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sda1)
@@ -1381,16 +1381,16 @@
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/bcache0),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Deleting bcache %1$s (%2$s)"
-msgstr "正在刪除 Bcache %1$s (%2$s)"
+msgstr "正在刪除 bcache %1$s (%2$s)"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Deleting bcache cache set on %1$s (%2$s)"
-msgstr "正在刪除 %1$s (%2$s) 上的 Bcache 快取叢集"
+msgstr "正在刪除 %1$s (%2$s) 上的 bcache 快取叢集"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1)
@@ -1488,17 +1488,17 @@
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by device name (e.g. /dev/bcache0),
#. %3$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Detach bcache cache set on %1$s from bcache %2$s (%3$s)"
-msgstr "將 %1$s 上設定的 Bcache 快取從 Bcache %2$s (%3$s) 解除關聯"
+msgstr "從 bcache %2$s (%3$s) 解除對 %1$s 上 bcache 快取叢集的連結"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
#. %2$s is replaced by device name (e.g. /dev/bcache0),
#. %3$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Detaching bcache cache set on %1$s from bcache %2$s (%3$s)"
-msgstr "正在將 %1$s 上設定的 Bcache 快取從 Bcache %2$s (%3$s) 解除關聯"
+msgstr "正在從 bcache %2$s (%3$s) 解除對 %1$s 上 bcache 快取叢集的連結"
#. TRANSLATORS: Error message displayed during probing,
#. %1$s is replaced by a list of device names joined by newlines (e.g.
@@ -1815,9 +1815,9 @@
#. /dev/sdb2 (1.0 GiB)),
#. %4$s is replaced by old size (e.g. 1.0 GiB),
#. %5$s is replaced by new size (e.g. 2.0 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Grow %1$s of %2$s on %3$s from %4$s to %5$s"
-msgstr "將 %2$s 上的 %1$s 從 %3$s 增大到 %4$s"
+msgstr "把 %3$s 上的 %1$s (%2$s) 從 %4$s 增大到 %5$s"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by file system (e.g. ext4),
@@ -1887,9 +1887,9 @@
#. /dev/sdb2 (1.0 GiB)),
#. %4$s is replaced by old size (e.g. 1.0 GiB),
#. %5$s is replaced by new size (e.g. 2.0 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Growing %1$s of %2$s on %3$s from %4$s to %5$s"
-msgstr "正在將 %2$s 上的 %1$s 從 %3$s 增大到 %4$s"
+msgstr "正在把 %3$s 上的 %1$s (%2$s) 從 %4$s 增大到 %5$s"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by file system (e.g. ext4),
@@ -2152,9 +2152,8 @@
msgstr "PiB"
#. TRANSLATORS: name of object
-#, fuzzy
msgid "Plain Encryption"
-msgstr "加密"
+msgstr "明文加密"
#. TRANSLATORS: error message
#, c-format
@@ -2266,9 +2265,9 @@
msgstr "在 %s 上查探檔案系統失敗"
#. TRANSLATORS: error message
-#, fuzzy, c-format
+#, c-format
msgid "Probing file system with UUID %s failed"
-msgstr "在 %s 上查探檔案系統失敗"
+msgstr "探測 UUID 為 %s 的檔案系統失敗"
#. TRANSLATORS: progress message
msgid "Probing file systems"
@@ -2300,14 +2299,12 @@
msgstr "查探 %s 上分割區失敗"
#. TRANSLATORS: progress message
-#, fuzzy
msgid "Probing plain encryptions"
-msgstr "正在查探分割區"
+msgstr "正在探測明文加密"
#. TRANSLATORS: error message
-#, fuzzy
msgid "Probing plain encryptions failed"
-msgstr "查探分割區失敗"
+msgstr "探測明文加密失敗"
#. TRANSLATORS: error message
#, c-format
@@ -2343,9 +2340,9 @@
#. %2$s is replaced by the device size (e.g. 2.0 GiB),
#. %3$s is replaced by one or more devices (e.g /dev/sda1 (2.0 GiB)
#. and /dev/sdb2 (2.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Remove %1$s (%2$s) from btrfs on %3$s"
-msgstr "從 %2$s 移除 %1$s"
+msgstr "從 %3$s 上的 btrfs 移除 %1$s (%2$s)"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sdd),
@@ -2391,9 +2388,9 @@
#. %2$s is replaced by the device size (e.g. 2.0 GiB),
#. %3$s is replaced by one or more devices (e.g /dev/sda1 (2.0 GiB)
#. and /dev/sdb2 (2.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Removing %1$s (%2$s) from btrfs on %3$s"
-msgstr "正在從 %2$s 移除 %1$s"
+msgstr "正在從 %3$s 上的 btrfs 移除 %1$s (%2$s)"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by device name (e.g. /dev/sdd),
@@ -2488,9 +2485,9 @@
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB)),
#. %3$s is replaced by UUID (e.g. 3cfa63b5-4d29-43e6-8658-57b74f68fd7f)
-#, fuzzy, c-format
+#, c-format
msgid "Set UUID of %1$s on %2$s to %3$s"
-msgstr "將 %1$s 上的 UUID 設定為 %2$s"
+msgstr "設定 %2$s 上 %1$s 的 UUID 至 %3$s"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by partition name (e.g. /dev/sda1)
@@ -2502,9 +2499,9 @@
#. %1$s is replaced by cache mode (e.g. writeback),
#. %2$s is replaced by device name (e.g. /dev/bcache0),
#. %3$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Set cache mode to %1$s for bcache %2$s (%3$s)"
-msgstr "將 Bcache %2$s (%3$s) 的快取模式設定為 %1$s"
+msgstr "設定 bcache %2$s (%3$s) 的快取模式至 %1$s"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by the subvolume path (e.g. var/log),
@@ -2542,9 +2539,9 @@
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB)),
#. %3$s is replaced by label (e.g. ROOT)
-#, fuzzy, c-format
+#, c-format
msgid "Set label of %1$s on %2$s to %3$s"
-msgstr "將 %1$s 的標籤設定為 %2$s"
+msgstr "設定 %2$s 上 %1$s 的標籤至 %3$s"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by partition name (e.g. /dev/sda1)
@@ -2570,18 +2567,18 @@
#. %1$s is replaced by file system name (e.g. ext4),
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Set tune options of %1$s on %2$s"
-msgstr "設定 %1$s 的調整選項"
+msgstr "設定 %2$s 上 %1$s 的調整選項"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by file system name (e.g. ext4),
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB)),
#. %3$s is replaced by UUID (e.g. 3cfa63b5-4d29-43e6-8658-57b74f68fd7f)
-#, fuzzy, c-format
+#, c-format
msgid "Setting UUID of %1$s on %2$s to %3$s"
-msgstr "正在將 %1$s 的 UUID 設定為 %2$s"
+msgstr "正在設定 %2$s 上 %1$s 的 UUID 至 %3$s"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by partition name (e.g. /dev/sda1)
@@ -2593,9 +2590,9 @@
#. %1$s is replaced by cache mode (e.g. writeback),
#. %2$s is replaced by device name (e.g. /dev/bcache0),
#. %3$s is replaced by size (e.g. 2 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Setting cache mode to %1$s for bcache %2$s (%3$s)"
-msgstr "正在將 Bcache %2$s (%3$s) 的快取模式設定為 %1$s"
+msgstr "正在設定 bcache %2$s (%3$s) 的快取模式至 %1$s"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by the subvolume path (e.g. var/log),
@@ -2633,9 +2630,9 @@
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB)),
#. %3$s is replaced by label (e.g. ROOT)
-#, fuzzy, c-format
+#, c-format
msgid "Setting label of %1$s on %2$s to %3$s"
-msgstr "正在將 %1$s 的標籤設定為 %2$s"
+msgstr "正在設定 %2$s 上 %1$s 的標籤至 %3$s"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by partition name (e.g. /dev/sda1)
@@ -2661,9 +2658,9 @@
#. %1$s is replaced by file system name (e.g. ext4),
#. %2$s is replaced by one or more devices (e.g /dev/sda1 (1.0 GiB) and
#. /dev/sdb2 (1.0 GiB))
-#, fuzzy, c-format
+#, c-format
msgid "Setting tune options of %1$s on %2$s"
-msgstr "正在設定 %1$s 的調整選項"
+msgstr "正在設定 %2$s 上 %1$s 的調整選項"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by device name (e.g. /dev/sda1),
@@ -2672,9 +2669,9 @@
#. /dev/sdb2 (1.0 GiB)),
#. %4$s is replaced by old size (e.g. 2.0 GiB),
#. %5$s is replaced by new size (e.g. 1.0 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Shrink %1$s of %2$s on %3$s from %4$s to %5$s"
-msgstr "將 %2$s 上的 %1$s 從 %3$s 縮減到 %4$s"
+msgstr "將 %3$s 上的 %1$s (%2$s) 從 %4$s 縮小至 %5$s"
#. TRANSLATORS: displayed before action,
#. %1$s is replaced by file system (e.g. ext4),
@@ -2744,9 +2741,9 @@
#. /dev/sdb2 (1.0 GiB)),
#. %4$s is replaced by old size (e.g. 2.0 GiB),
#. %5$s is replaced by new size (e.g. 1.0 GiB)
-#, fuzzy, c-format
+#, c-format
msgid "Shrinking %1$s of %2$s on %3$s from %4$s to %5$s"
-msgstr "正在將 %2$s 上的 %1$s 從 %3$s 縮減到 %4$s"
+msgstr "正在將 %3$s 上的 %1$s (%2$s) 從 %4$s 縮小至 %5$s"
#. TRANSLATORS: displayed during action,
#. %1$s is replaced by file system (e.g. ext4),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/storage/Devices/BcacheImpl.cc new/libstorage-ng-4.2.16/storage/Devices/BcacheImpl.cc
--- old/libstorage-ng-4.2.14/storage/Devices/BcacheImpl.cc 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/storage/Devices/BcacheImpl.cc 2019-10-12 07:52:56.000000000 +0200
@@ -580,7 +580,7 @@
void
Bcache::Impl::add_create_actions(Actiongraph::Impl& actiongraph) const
{
- // TODO Flash-only Bache
+ // TODO Flash-only Bcache
if(get_type() == BcacheType::BACKED)
{
@@ -635,7 +635,7 @@
void
Bcache::Impl::add_delete_actions(Actiongraph::Impl& actiongraph) const
{
- // TODO Flash-only Bache
+ // TODO Flash-only Bcache
if(get_type() == BcacheType::BACKED)
{
@@ -671,7 +671,7 @@
void
Bcache::Impl::do_create()
{
- // TODO Flash-only Bache
+ // TODO Flash-only Bcache
if(get_type() == BcacheType::BACKED)
{
@@ -712,7 +712,7 @@
void
Bcache::Impl::do_delete() const
{
- // TODO Flash-only Bache
+ // TODO Flash-only Bcache
if(get_type() == BcacheType::BACKED)
get_backing_device()->get_impl().wipe_device();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/storage/Devices/EncryptionImpl.cc new/libstorage-ng-4.2.16/storage/Devices/EncryptionImpl.cc
--- old/libstorage-ng-4.2.14/storage/Devices/EncryptionImpl.cc 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/storage/Devices/EncryptionImpl.cc 2019-10-12 07:52:56.000000000 +0200
@@ -134,6 +134,7 @@
set_mount_by(get_storage()->get_default_mount_by());
}
+
void
Encryption::Impl::set_dm_table_name(const string& dm_table_name)
{
@@ -496,7 +497,10 @@
if (resize_mode == ResizeMode::SHRINK)
cmd_line += " --size " + to_string(encryption_rhs->get_impl().get_size() / (512 * B));
- SystemCmd cmd(cmd_line, SystemCmd::DoThrow);
+ if (do_resize_needs_password())
+ add_key_file_option_and_execute(cmd_line);
+ else
+ SystemCmd cmd(cmd_line, SystemCmd::DoThrow);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/storage/Devices/EncryptionImpl.h new/libstorage-ng-4.2.16/storage/Devices/EncryptionImpl.h
--- old/libstorage-ng-4.2.14/storage/Devices/EncryptionImpl.h 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/storage/Devices/EncryptionImpl.h 2019-10-12 07:52:56.000000000 +0200
@@ -106,6 +106,11 @@
const BlkDevice* get_blk_device() const;
+ /**
+ * Does do_resize need the password?
+ */
+ virtual bool do_resize_needs_password() const { return false; }
+
virtual Impl* clone() const override { return new Impl(*this); }
virtual void check(const CheckCallbacks* check_callbacks) const override;
@@ -157,6 +162,11 @@
EncryptionType type;
+ /**
+ * The password.
+ *
+ * Note: The password can be empty. At least for LUKS that does work.
+ */
string password;
string key_file;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/storage/Devices/LuksImpl.cc new/libstorage-ng-4.2.16/storage/Devices/LuksImpl.cc
--- old/libstorage-ng-4.2.14/storage/Devices/LuksImpl.cc 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/storage/Devices/LuksImpl.cc 2019-10-12 07:52:56.000000000 +0200
@@ -133,24 +133,61 @@
}
+ /**
+ * Activation information about LUKS.
+ */
+ struct LuksActivationInfo
+ {
+ LuksActivationInfo() : canceled(false), password() {}
+
+ bool canceled;
+ string password;
+ };
+
+
+ /**
+ * Map with activation information about LUKS using the LUKS UUID as the key.
+ */
+ map luks_activation_infos;
+
+
bool
Luks::Impl::activate_luks(const ActivateCallbacks* activate_callbacks, SystemInfo& system_info,
const string& name, const string& uuid, const string& label)
{
+ map::const_iterator it = luks_activation_infos.find(uuid);
+
int attempt = 1;
string dm_name;
+ string password;
while (true)
{
- pair tmp = activate_callbacks->luks(uuid, attempt);
- if (!tmp.first)
+ if (it == luks_activation_infos.end())
+ {
+ pair tmp = activate_callbacks->luks(uuid, attempt);
+ if (!tmp.first)
+ {
+ y2mil("user canceled activation of luks " << uuid);
+ luks_activation_infos[uuid].canceled = true;
+
+ return false;
+ }
+ else
+ {
+ y2mil("user allowed activation of luks " << uuid);
+ password = tmp.second;
+ }
+ }
+ else if (it->second.canceled)
{
- y2mil("user canceled activation of luks " << uuid);
+ y2mil("activation of luks " << uuid << " skipped since previously canceled");
return false;
}
else
{
- y2mil("user allowed activation of luks " << uuid);
+ y2mil("activation of luks " << uuid << " with cached password");
+ password = it->second.password;
}
// TRANSLATORS: progress message
@@ -174,7 +211,7 @@
quote(dm_name) + " --tries 1 --key-file -";
SystemCmd::Options cmd_options(cmd_line, SystemCmd::DoThrow);
- cmd_options.stdin_text = tmp.second;
+ cmd_options.stdin_text = password;
cmd_options.verify = [](int exit_code) { return exit_code == 0 || exit_code == 2; };
try
@@ -188,6 +225,9 @@
continue;
}
+ // save the password only if it is correct
+ luks_activation_infos[uuid].password = password;
+
return true;
}
catch (const Exception& exception)
@@ -230,13 +270,6 @@
y2mil("inactive luks name:" << key_value1.first << " uuid:" <<
key_value1.second.luks_uuid << " label:" << key_value1.second.luks_label);
- // TODO During a second loop of Storage::Impl::activate() the
- // library should not bother the user with popups to lukses where
- // an activation was canceled by the user. Maybe the library
- // should also remember the passwords (map) in
- // case the activation is run again, e.g. after deactivation and
- // reprobe.
-
if (activate_luks(activate_callbacks, system_info, key_value1.first,
key_value1.second.luks_uuid, key_value1.second.luks_label))
ret = true;
@@ -348,6 +381,13 @@
luks->get_impl().set_active(it2 != cmd_dmsetup_table.end());
luks->set_in_etc_crypttab(crypttab_entry);
+ /*
+ * Copy the password if it is known from activation.
+ */
+ const map::const_iterator it = luks_activation_infos.find(uuid);
+ if (it != luks_activation_infos.end() && !it->second.canceled)
+ luks->set_password(it->second.password);
+
const CmdCryptsetupLuksDump& cmd_cryptsetup_luks_dump = system_info.getCmdCryptsetupLuksDump(blk_device->get_name());
luks->get_impl().Encryption::Impl::set_type(cmd_cryptsetup_luks_dump.get_encryption_type());
luks->get_impl().set_cipher(cmd_cryptsetup_luks_dump.get_cipher());
@@ -476,14 +516,22 @@
}
+ bool
+ Luks::Impl::do_resize_needs_password() const
+ {
+ // Resizing an LUKS2 device might require the password
+ // (depending on use of kernel keyring).
+
+ return get_type() == EncryptionType::LUKS2;
+ }
+
+
ResizeInfo
Luks::Impl::detect_resize_info(const BlkDevice* blk_device) const
{
- // Resizing an active LUKS2 device might require the password
- // (depending on use of kernel keyring). For the time being
- // just disable it.
- if (get_type() == EncryptionType::LUKS2)
- return ResizeInfo(false, RB_RESIZE_NOT_SUPPORTED_BY_DEVICE);
+ // TODO Strictly speaking "empty" does not mean "unknown".
+ if (do_resize_needs_password() && get_password().empty())
+ return ResizeInfo(false, RB_PASSWORD_REQUIRED);
ResizeInfo resize_info = BlkDevice::Impl::detect_resize_info(get_non_impl());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/storage/Devices/LuksImpl.h new/libstorage-ng-4.2.16/storage/Devices/LuksImpl.h
--- old/libstorage-ng-4.2.14/storage/Devices/LuksImpl.h 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/storage/Devices/LuksImpl.h 2019-10-12 07:52:56.000000000 +0200
@@ -85,6 +85,8 @@
virtual void parent_has_new_region(const Device* parent) override;
+ virtual bool do_resize_needs_password() const override;
+
virtual bool equal(const Device::Impl& rhs) const override;
virtual void log_diff(std::ostream& log, const Device::Impl& rhs_base) const override;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/storage/FreeInfo.h new/libstorage-ng-4.2.16/storage/FreeInfo.h
--- old/libstorage-ng-4.2.14/storage/FreeInfo.h 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/storage/FreeInfo.h 2019-10-12 07:52:56.000000000 +0200
@@ -177,7 +177,13 @@
*
* Blocks shrink.
*/
- RB_SHRINK_NOT_SUPPORTED_BY_MULTIDEVICE_FILESYSTEM = 1 << 17
+ RB_SHRINK_NOT_SUPPORTED_BY_MULTIDEVICE_FILESYSTEM = 1 << 17,
+
+ /**
+ * The encryption password is required.
+ */
+ RB_PASSWORD_REQUIRED = 1 << 18
+
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libstorage-ng-4.2.14/storage/Storage.h new/libstorage-ng-4.2.16/storage/Storage.h
--- old/libstorage-ng-4.2.14/storage/Storage.h 2019-09-30 14:00:00.000000000 +0200
+++ new/libstorage-ng-4.2.16/storage/Storage.h 2019-10-12 07:52:56.000000000 +0200
@@ -101,6 +101,12 @@
/**
* Decide whether the LUKS with uuid should be activated.
*
+ * The result of the callback is cached (for the lifetime of
+ * the program). So the callback for a specific LUKS will not
+ * be called again (not even if Storage::activate() is called
+ * again) if 1. the activation was canceled or 2. the
+ * activation was successful.
+ *
* TODO Add label parameter for LUKS2.
* TODO Also allow to return a key file?
*/