From f25633807416f37bd6c3f456b0d2a3d2dd4b44d6 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Fri, 18 Mar 2016 16:46:11 -0500 Subject: [PATCH] Add GRUB_BTRFS_LIMIT Allow user to limit the number of snapshots listed in GRUB. This also reverses the order of the snapshots such that the more recent ones come first. That is, if a user specifies GRUB_BTRFS_LIMIT=10, then only the 10 most recent snapshots will be shown. The default limit is 100, which seems very large. The more snapshots in the GRUB menu, the longer the system takes to boot. --- 41_snapshots-btrfs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/41_snapshots-btrfs b/41_snapshots-btrfs index 8db1fb2..b18e045 100644 --- a/41_snapshots-btrfs +++ b/41_snapshots-btrfs @@ -72,6 +72,11 @@ nkernel=("${GRUB_BTRFS_NKERNEL[@]}") ninit=("${GRUB_BTRFS_NINIT[@]}") ## Microcode(s) name(s) microcode=("${GRUB_BTRFS_INTEL_UCODE[@]}") +## Limit to show in menu +limit=("${GRUB_BTRFS_LIMIT[@]}") +if [ -z "$limit" ]; then + limit=100 +fi ######################## ### variables script ### @@ -156,7 +161,7 @@ snapshots_entry() ## List of snapshots on filesystem snapshot_list() { - for snap in $(btrfs subvolume list -sa /); do + for snap in $(btrfs subvolume list -sa / | tac); do IFS=$oldIFS snap=($snap) local snap_path_name=${snap[@]:13:${#snap[@]}} @@ -249,6 +254,7 @@ title_format() list_kernels_initramfs() { IFS=$'\n' + c=0 for item in $(snapshot_list); do IFS=$oldIFS item=($item) @@ -276,6 +282,10 @@ list_kernels_initramfs() title_format # echo "${title_menu[*]}" snapshots_entry + c=$((1+$c)) + if [[ $c -gt $limit ]]; then + break; + fi done IFS=$oldIFS } @@ -292,4 +302,4 @@ if [ ${choise_of_method} = "1" ] ; then umount $gbgmp gettext_printf "###### - Grub-btrfs: Auto-detect - ######\n" >&2 ; fi -### End choice of method ### \ No newline at end of file +### End choice of method ###