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 - [email protected] + +- Translated using Weblate (Chinese (Taiwan)) (bsc#1149754) +- 4.2.16 + +-------------------------------------------------------------------- +Fri Oct 11 12:15:41 UTC 2019 - [email protected] + +- 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 <[email protected]>\n" +"PO-Revision-Date: 2019-10-12 05:52+0000\n" +"Last-Translator: Yi-Jyun Pan <[email protected]>\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<string, LuksActivationInfo> 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<string, LuksActivationInfo>::const_iterator it = luks_activation_infos.find(uuid); + int attempt = 1; string dm_name; + string password; while (true) { - pair<bool, string> tmp = activate_callbacks->luks(uuid, attempt); - if (!tmp.first) + if (it == luks_activation_infos.end()) + { + pair<bool, string> 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<uuid, password>) 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<string, LuksActivationInfo>::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? */
