basebuilder_pel7ppc64bebuilder0
7 years ago
1 changed files with 118 additions and 0 deletions
@ -0,0 +1,118 @@
@@ -0,0 +1,118 @@
|
||||
From 66d819dc82080e9dba609b3bfff45c14d7c3ba3c Mon Sep 17 00:00:00 2001 |
||||
From: Karel Zak <kzak@redhat.com> |
||||
Date: Fri, 3 Nov 2017 10:58:33 +0100 |
||||
Subject: [PATCH] lsmem: make --split optional, follow output by default |
||||
|
||||
Let's keep lsmem backwardly compatible (<=v2.30) and create ranges |
||||
according to the output columns by default. This default behavior may |
||||
be modified by --split command line option. |
||||
|
||||
Upstream: http://github.com/karelzak/util-linux/commit/96cbe362c034305e5f12a912b4247b3321420ee7 |
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1496421 |
||||
Signed-off-by: Karel Zak <kzak@redhat.com> |
||||
--- |
||||
sys-utils/lsmem.1 | 14 ++++++-------- |
||||
sys-utils/lsmem.c | 49 ++++++++++++++++++++++++++++++------------------- |
||||
2 files changed, 36 insertions(+), 27 deletions(-) |
||||
|
||||
diff --git a/sys-utils/lsmem.1 b/sys-utils/lsmem.1 |
||||
index 3f5cd7d4b..bfe312bfc 100644 |
||||
--- a/sys-utils/lsmem.1 |
||||
+++ b/sys-utils/lsmem.1 |
||||
@@ -16,14 +16,12 @@ Always explicitly define expected columns by using the \fB\-\-output\fR option |
||||
together with a columns list in environments where a stable output is required. |
||||
|
||||
The \fBlsmem\fP command lists a new memory range always when the current memory |
||||
-block distinguish from the previous block by STATE, REMOVABLE, NODE or ZONES |
||||
-attribute. This default behavior is possible to override by the |
||||
-\fB\-\-split\fR option (e.g. \fBlsmem \-\-split=STATE,ZONES\fR). The special |
||||
-word "none" may be used to ignore all differences between memory blocks and to |
||||
-create as large as possible continuous ranges. The opposite semantic is |
||||
-\fB\-\-all\fR to list individual memory blocks. The default split policy is |
||||
-subject to change. Always explicitly use \fB\-\-split\fR in environments where |
||||
-a stable output is required. |
||||
+block distinguish from the previous block by some output column. This default |
||||
+behavior is possible to override by the \fB\-\-split\fR option (e.g. \fBlsmem |
||||
+\-\-split=ZONES\fR). The special word "none" may be used to ignore all |
||||
+differences between memory blocks and to create as large as possible continuous |
||||
+ranges. The opposite semantic is \fB\-\-all\fR to list individual memory |
||||
+blocks. |
||||
|
||||
Note that some output columns may provide inaccurate information if a split policy |
||||
forces \fBlsmem\fP to ignore diffrences in some attributes. For example if you |
||||
diff --git a/sys-utils/lsmem.c b/sys-utils/lsmem.c |
||||
index 34a2847af..aaf7374fc 100644 |
||||
--- a/sys-utils/lsmem.c |
||||
+++ b/sys-utils/lsmem.c |
||||
@@ -202,6 +202,32 @@ static inline void reset_split_policy(struct lsmem *l, int enable) |
||||
l->split_by_zones = enable; |
||||
} |
||||
|
||||
+static void set_split_policy(struct lsmem *l, int cols[], size_t ncols) |
||||
+{ |
||||
+ size_t i; |
||||
+ |
||||
+ reset_split_policy(l, 0); |
||||
+ |
||||
+ for (i = 0; i < ncols; i++) { |
||||
+ switch (cols[i]) { |
||||
+ case COL_STATE: |
||||
+ l->split_by_state = 1; |
||||
+ break; |
||||
+ case COL_NODE: |
||||
+ l->split_by_node = 1; |
||||
+ break; |
||||
+ case COL_REMOVABLE: |
||||
+ l->split_by_removable = 1; |
||||
+ break; |
||||
+ case COL_ZONES: |
||||
+ l->split_by_zones = 1; |
||||
+ break; |
||||
+ default: |
||||
+ break; |
||||
+ } |
||||
+ } |
||||
+} |
||||
+ |
||||
static void add_scols_line(struct lsmem *lsmem, struct memory_block *blk) |
||||
{ |
||||
size_t i; |
||||
@@ -638,32 +664,17 @@ int main(int argc, char **argv) |
||||
int split[ARRAY_SIZE(coldescs)] = { 0 }; |
||||
static size_t nsplits = 0; |
||||
|
||||
- reset_split_policy(lsmem, 0); /* disable all */ |
||||
- |
||||
if (strcasecmp(splitarg, "none") == 0) |
||||
; |
||||
else if (string_add_to_idarray(splitarg, split, ARRAY_SIZE(split), |
||||
(int *) &nsplits, column_name_to_id) < 0) |
||||
return EXIT_FAILURE; |
||||
|
||||
- for (i = 0; i < nsplits; i++) { |
||||
- switch (split[i]) { |
||||
- case COL_STATE: |
||||
- lsmem->split_by_state = 1; |
||||
- break; |
||||
- case COL_NODE: |
||||
- lsmem->split_by_node = 1; |
||||
- break; |
||||
- case COL_REMOVABLE: |
||||
- lsmem->split_by_removable = 1; |
||||
- break; |
||||
- case COL_ZONES: |
||||
- lsmem->split_by_zones = 1; |
||||
- break; |
||||
- } |
||||
- } |
||||
+ set_split_policy(lsmem, split, nsplits); |
||||
+ |
||||
} else |
||||
- reset_split_policy(lsmem, 1); /* enable all */ |
||||
+ /* follow output columns */ |
||||
+ set_split_policy(lsmem, columns, ncolumns); |
||||
|
||||
/* |
||||
* Read data and print output |
||||
-- |
||||
2.13.6 |
Loading…
Reference in new issue