summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorJonathan Earl Brassow <jbrassow@redhat.com>2012-04-10 23:24:00 +0000
committerJonathan Earl Brassow <jbrassow@redhat.com>2012-04-10 23:24:00 +0000
commit68d84fa3eb499c183d4ad6bedb25be473f65799a (patch)
treeece1d2503be8fe4365213b5987c5a55ca0db8c43 /scripts
parent9a2b6bda59bb080edc549e074607047267d081ee (diff)
downloadlvm2-68d84fa3eb499c183d4ad6bedb25be473f65799a.tar.gz
lvm2-68d84fa3eb499c183d4ad6bedb25be473f65799a.tar.xz
lvm2-68d84fa3eb499c183d4ad6bedb25be473f65799a.zip
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
Diffstat (limited to 'scripts')
-rw-r--r--scripts/gdbinit53
1 files changed, 51 insertions, 2 deletions
diff --git a/scripts/gdbinit b/scripts/gdbinit
index e7c26cb8..fa589489 100644
--- a/scripts/gdbinit
+++ b/scripts/gdbinit
@@ -17,6 +17,7 @@
printf "\n\n"
printf "Loading commands:\n"
printf " - dm_list_size <list ptr>\n"
+printf " - pv_dev_name <PV ptr>\n"
printf " - first_seg <LV ptr>\n"
printf " - lv_status <LV ptr>\n"
printf " - lv_status_r <LV ptr>\n"
@@ -24,12 +25,13 @@ printf " - lv_is_mirrored <LV ptr>\n"
printf " - seg_item <seg ptr> <index>\n"
printf " - seg_status <seg ptr>\n"
printf " - segs_using_this_lv <seg ptr>\n"
+printf " - seg_pvs <list ptr>\n"
printf " - \n"
printf "Use 'help <command>' 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 <list ptr>
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 <PV ptr>
+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 <list ptr>
+end
+
#
# __first_seg <return> <LV>
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