[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#620814: [PATCH initramfs-tools 6/6] hook-functions: Include modules for all components of a multi-disk device



Control: tag -1 patch

Note, this depends on earlier patches sent to
initramfs-tools@packages.debian.org.

Ben.
---
Now that we can generically find components, we can also iterate over
them and recurse.

Closes: #620814
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
 hook-functions | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/hook-functions b/hook-functions
index cfd8610..482b850 100644
--- a/hook-functions
+++ b/hook-functions
@@ -231,24 +231,19 @@ block_dev_sys_walk_mod_add()
 {
 	local dev_sys_path disk_sys_path component
 
-	while true; do
-		# Resolve symlink so sys_walk_mod_add can walk up the hierarchy
-		dev_sys_path="$(readlink -f "$1")"
+	# Resolve symlink so sys_walk_mod_add can walk up the hierarchy
+	dev_sys_path="$(readlink -f "$1")"
 
-		# Find whole disk from partition
-		if grep -q "^DEVTYPE=partition$" "$dev_sys_path/uevent"; then
-			disk_sys_path="$dev_sys_path/.."
-		else
-			disk_sys_path="$dev_sys_path"
-		fi
-
-		# Find first component of a layered device
-		component="$(ls -1 "$disk_sys_path/slaves" | head -n 1)"
-		if [ -z "$component" ]; then
-			break
-		fi
+	# Find whole disk from partition
+	if grep -q "^DEVTYPE=partition$" "$dev_sys_path/uevent"; then
+		disk_sys_path="$dev_sys_path/.."
+	else
+		disk_sys_path="$dev_sys_path"
+	fi
 
-		dev_sys_path="$disk_sys_path/slaves/$component"
+	# Iterate over component of a layered device
+	ls -1 "$disk_sys_path/slaves" | while read component; do
+		block_dev_sys_walk_mod_add "$disk_sys_path/slaves/$component"
 	done
 
 	sys_walk_mod_add ${dev_sys_path}
-- 
Ben Hutchings
Life would be so much easier if we could look at the source code.

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: