From 68d84fa3eb499c183d4ad6bedb25be473f65799a Mon Sep 17 00:00:00 2001 From: Jonathan Earl Brassow Date: Tue, 10 Apr 2012 23:24:00 +0000 Subject: [PATCH] Add a couple new functions to gdbinit file and decode a couple lv->status flags New functions: - seg_pvs: Print a list of PVs in a seg_pvs list - pv_dev_name: print name of a PV --- scripts/gdbinit | 53 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/scripts/gdbinit b/scripts/gdbinit index e7c26cb8c..fa5894894 100644 --- a/scripts/gdbinit +++ b/scripts/gdbinit @@ -17,6 +17,7 @@ printf "\n\n" printf "Loading commands:\n" printf " - dm_list_size \n" +printf " - pv_dev_name \n" printf " - first_seg \n" printf " - lv_status \n" printf " - lv_status_r \n" @@ -24,12 +25,13 @@ printf " - lv_is_mirrored \n" printf " - seg_item \n" printf " - seg_status \n" printf " - segs_using_this_lv \n" +printf " - seg_pvs \n" printf " - \n" printf "Use 'help ' for more info\n" printf "\n\n" printf "Popular breakpoints:\n" -printf "break _get_udev_flags\n" -printf "run --splitmirrors 1 -n split vg/lv\n" +printf "break _alloc_image_components\n" +printf "run --repair --use-policies vg/lv\n" printf "\n\n" set follow-fork-mode child @@ -41,6 +43,8 @@ set follow-fork-mode child # External functions should have a corresponding 'document' # section. Internal functions should have leading comments + + define dm_list_size set $_DLS_list_head = (struct dm_list *)$arg0 set $_DLS_list = $_DLS_list_head->n @@ -60,6 +64,41 @@ Returns the number of elements in the dm_list Usage: dm_list_size end +define pv_dev_name + set $_PDN_pv = (struct physical_volume *)$arg0 + set $_PDN_dev = $_PDN_pv->dev + set $_PDN_strl = (struct str_list *)$_PDN_dev->aliases.n + + printf "%s\n", $_PDN_strl->str +end + +document pv_dev_name +Print the name of the PV for the given PV pointer + + Usage: pv_dev_name +end + +define seg_pvs + set $_SP_list_head = (struct dm_list *)$arg0 + set $_SP_list = $_SP_list_head->n + + while (($_SP_list != $_SP_list_head) && ($_SP_size < 100)) + set $_SP_spv = (struct seg_pvs *)$_SP_list + + printf "* Can't print PV list\n" + + set $_SP_list = $_SP_list->n + end + + printf "%d list items\n", $_SP_size +end + +document seg_pvs +Print the elements of a seg_pvs list + + Usage: seg_pvs +end + # # __first_seg define __first_seg @@ -270,6 +309,16 @@ define __status set $_s_status = $_s_status & ~0x00400000U printf " CONVERTING" end +# if ($_s_status & LV_REBUILD) + if ($_s_status & 0x100000U) + set $_s_status = $_s_status & ~0x100000U + printf " LV_REBUILD" + end +# if ($_s_status & PARTIAL_LV) + if ($_s_status & 0x1000000U) + set $_s_status = $_s_status & ~0x1000000U + printf " PARTIAL_LV" + end # if ($_s_status & MERGING) if ($_s_status & 0x10000000U) set $_s_status = $_s_status & ~0x10000000U -- 2.43.5