Skip to content

Commit

Permalink
lsblk: fix --inverse --list
Browse files Browse the repository at this point in the history
Let's follow --inverse dependencies although --list output requested.

Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1441175
Signed-off-by: Karel Zak <kzak@redhat.com>
  • Loading branch information
karelzak committed Apr 13, 2017
1 parent 066f46e commit 091683a
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 1 deletion.
3 changes: 2 additions & 1 deletion misc-utils/lsblk.8
Expand Up @@ -114,7 +114,8 @@ Produce output in raw format. All potentially unsafe characters are hex-escaped
Output info about SCSI devices only. All partitions, slaves and holder devices are ignored.
.TP
.BR \-s , " \-\-inverse"
Print dependencies in inverse order.
Print dependencies in inverse order. If the \fB\-\-list\fR output is requested then
the lines are still ordered by dependencies.
.TP
.BR \-t , " \-\-topology"
Output info about block-device topology.
Expand Down
7 changes: 7 additions & 0 deletions misc-utils/lsblk.c
Expand Up @@ -216,6 +216,7 @@ struct lsblk {
unsigned int scsi:1; /* print only device with HCTL (SCSI) */
unsigned int paths:1; /* print devnames with "/dev" prefix */
unsigned int sort_hidden:1; /* sort column not between output columns */
unsigned int force_tree_order:1;/* sort lines by parent->tree relation */
};

static struct lsblk *lsblk; /* global handler */
Expand Down Expand Up @@ -1859,6 +1860,10 @@ int main(int argc, char *argv[])
* /sys is no more sorted */
lsblk->sort_id = COL_MAJMIN;

/* For --inverse --list we still follow parent->child relation */
if (lsblk->inverse && !(lsblk->flags & LSBLK_TREE))
lsblk->force_tree_order = 1;

if (lsblk->sort_id >= 0 && column_id_to_number(lsblk->sort_id) < 0) {
/* the sort column is not between output columns -- add as hidden */
add_column(columns, ncolumns++, lsblk->sort_id);
Expand Down Expand Up @@ -1923,6 +1928,8 @@ int main(int argc, char *argv[])

if (lsblk->sort_col)
scols_sort_table(lsblk->table, lsblk->sort_col);
if (lsblk->force_tree_order)
scols_sort_table_by_tree(lsblk->table);

scols_print_table(lsblk->table);

Expand Down

0 comments on commit 091683a

Please sign in to comment.