Commit 15fdeaa65af2362d94e64ddd604b68f588495a05 ("Add
support to configurable rebuild rate in iprconfig.")  added
support to specify the array rebuild rate on command-line
interface of iprconfig. Here we add the same functionality
on the ncurses interface.

Signed-off-by: Guilherme G. Piccoli <gpicc...@linux.vnet.ibm.com>
---
Comments on PATCH v2: Thanks for your suggestions Gabriel! I've implemented
all of them.
Sorry for my delay to reply this - it was hard to find a test system to me.

 iprconfig.c | 39 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 38 insertions(+), 1 deletion(-)

diff --git a/iprconfig.c b/iprconfig.c
index 9fae41a..bcb13e3 100644
--- a/iprconfig.c
+++ b/iprconfig.c
@@ -10939,6 +10939,7 @@ struct ioa_config_attr {
        int active_active;
        int caching;
        int verify_array_rebuild;
+       int rebuild_rate;
 };
 
 /**
@@ -11028,6 +11029,23 @@ int ioa_config_menu(struct ioa_config_attr 
*ioa_config_attr,
                free(menu_item);
                free(userptr);
                menu_item = NULL;
+       } else if (ioa_config_attr->option == 6) {
+               rc = display_input(start_row + 1,
+                                               &ioa_config_attr->rebuild_rate);
+               /* (start_row + 1) to correct window location */
+
+               if (ioa_config_attr->rebuild_rate > 100)
+                       ioa_config_attr->rebuild_rate = 100;
+
+               if (ioa_config_attr->rebuild_rate < 0)
+                       ioa_config_attr->rebuild_rate = 0;
+
+                       ioa_config_attr->rebuild_rate =
+                               (ioa_config_attr->rebuild_rate * 15) / 100;
+               /*
+                * this constant multiplication *(15/100) it's only used to
+                * give the user values 0-100 even though IOA only knows 0-15
+               */
        }
 
        return rc;
@@ -11050,7 +11068,11 @@ int change_ioa_config(i_container * i_con)
        i_container *temp_i_con;
        int found = 0;
        char *input;
-       struct ioa_config_attr ioa_config_attr[3];
+       struct ioa_config_attr ioa_config_attr[6];
+       /*
+        * For now, the above 6 is a magic number - it means the maximum
+        * number of options showed at screen. It should be more generic...
+       */
        struct ioa_config_attr *config_attr = NULL;
        struct ipr_ioa_attr ioa_attr;
        int header_lines = 0, index = 0;
@@ -11146,6 +11168,16 @@ int change_ioa_config(i_container * i_con)
                                  &ioa_config_attr[index++]);
        }
 
+       if (dev->ioa->sis64) {
+               body = add_line_to_body(body, _("Array rebuild rate"), "%3");
+               ioa_config_attr[index].option = 6;
+               ioa_config_attr[index].rebuild_rate = ioa_attr.rebuild_rate;
+
+               sprintf(pref_str, "%d",
+                       (ioa_config_attr[index].rebuild_rate* 100) / 15);
+
+               i_con = add_i_con(i_con, pref_str, &ioa_config_attr[index++]);
+       }
        n_change_ioa_config.body = body;
        while (1) {
                s_out = screen_driver(&n_change_ioa_config, header_lines, 
i_con);
@@ -11194,6 +11226,11 @@ int change_ioa_config(i_container * i_con)
                                                sprintf(temp_i_con->field_data, 
"Disabled");
                                                ioa_attr.disable_rebuild_verify 
= 1;
                                        }
+                               } else if (config_attr->option == 6) {
+                                               sprintf( 
temp_i_con->field_data, "%d",
+                                                       
(config_attr->rebuild_rate * 100) / 15 );
+                                               ioa_attr.rebuild_rate =
+                                                       
config_attr->rebuild_rate;
                                }
                                found++;
                                break;
-- 
2.1.0


------------------------------------------------------------------------------
_______________________________________________
Iprdd-devel mailing list
Iprdd-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iprdd-devel

Reply via email to