[LU-7004] fix "lctl set_param -P" to allow deprecation of "lctl conf_param" Created: 13/Aug/15 Updated: 02/Nov/23 Resolved: 04/Jan/19 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.9.0 |
| Fix Version/s: | Lustre 2.13.0 |
| Type: | Improvement | Priority: | Critical |
| Reporter: | Andreas Dilger | Assignee: | James A Simmons |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | llnl, patch | ||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||||||||||||||||||||||||||||||||||
| Description |
|
The lctl set_param -P functionality was landed via The test scripts need to be changed over to use "lctl set_param -P" exclusively, both to quiet the deprecation warning, as well as verify that the "lctl set_param -P" functionality is working correctly. For now, I'm going to bump the deprecation warning to 2.8.53 to give us time to make this change in the 2.9 release cycle since there isn't enough time to do it for 2.8.0 anymore. |
| Comments |
| Comment by Gerrit Updater [ 13/Aug/15 ] |
|
Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: http://review.whamcloud.com/15979 |
| Comment by Gerrit Updater [ 14/Aug/15 ] |
|
Andreas Dilger (andreas.dilger@intel.com) merged in patch http://review.whamcloud.com/15979/ |
| Comment by Christopher Morrone [ 25/Aug/15 ] |
|
I would argue that deprecating lctl conf_param requires a lot more discussion and planning. lctl set_param -P is currently broken for some (many?) settings. There is also some question in my mind about whether lctl set_param -P is even a reasonable user interface. |
| Comment by Andreas Dilger [ 02/Jun/16 ] |
|
I bumped into the "conf_param is deprecated" message again after the build version was bumped to 2.8.53. Artem, is there any plan to address the testing issues in this ticket and For now I'm going to remove the deprecation warning completely instead of pushing it to a later release, since there has been no action on this issue in a year. |
| Comment by Gerrit Updater [ 02/Jun/16 ] |
|
Andreas Dilger (andreas.dilger@intel.com) uploaded a new patch: http://review.whamcloud.com/20573 |
| Comment by Artem Blagodarenko (Inactive) [ 02/Jun/16 ] |
|
>Artem, is there any plan to address the testing issues in this ticket and Andreas, yes sure. But I need to find time this. |
| Comment by Gerrit Updater [ 20/Jun/16 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/20573/ |
| Comment by Peter Jones [ 24/Jul/16 ] |
|
Look like everything landed for 2.9 |
| Comment by Andreas Dilger [ 08/Sep/16 ] |
|
The landed patch only removed the deprecation of "conf_param", but didn't actually fix "set_param -P" at all. |
| Comment by Gerrit Updater [ 17/Aug/17 ] |
|
James Simmons (uja.ornl@yahoo.com) uploaded a new patch: https://review.whamcloud.com/28590 |
| Comment by James A Simmons [ 17/Aug/17 ] |
|
After much sweat and tears I think I got lctl set_param -P working again for the most part. The issue with sptlrpc might be more involved but for the other stuff it appears to work now. Once we have this working I would suggest that we back port this to b2_10 and re-enable the lctl conf_param deprecate warning so user can move to lctl set_param -P before the next major LTS lustre version. |
| Comment by James A Simmons [ 12/Oct/17 ] |
|
Okay I rewrote the mgs llog to be more understandable. I do have one question which is the not clear in the docs. I see failover.nid being set with: lctl conf_param $fsname-MDT0001.failover.node=$nid Now with lctl set_param -P is it the same format: lctl set_param -P $fsname-MDT0001.failover.node=$nid or should it be: lctl set_param -P mdt.$fsname-MDT0001.failover.node=$nid |
| Comment by Andreas Dilger [ 20/Oct/17 ] |
|
With lctl set_param -P it should be <device>.<instance>.param. That said, I can't find anything in /{proc,sys}/fs/lustre named either node or failover (excluding a few nodemap files). I suspec this is a "virtual" attribute, and not one that actually lives in the /proc tree somewhere? |
| Comment by James A Simmons [ 23/Oct/17 ] |
|
We have 4 classes of parameters. Class one are the global values i.e PARAM_TIMEOUT, PARAM_JOBID_VAR. The patch for this ticket adds support for this class for set_param -P. The second class are the ones settable at mount or initial format i.e PARAM_MGSNODE, PARAM_NETWORK. Those should never be changed with set_param -P so they are filtered out. The patch for this ticket adds that filtering. Currently you can stomp on those values with set_param -P The 3rd class is your typical obd proc mapping. This somewhat worked for set_param -P. Lastly we have your "virtual" devices. Some of these that were virtual can now be mapped to real proc/sysfs entries. The two for this case are PARAM_ACTIVATE and PARAM_ID_UPCALL. Its PARAM_FAILNODE and PARAM_SRPC that are currently virtual. I have managed to allow setting the failnode node using set_param -P but it doesn't transmit the change to the client for some reason. As for PARAM_SRPC I have no idea what the goal was there. In lustre_param.h it list srpc.flavor as a proc entry but it doesn't exist. Anyways I will have to cover that in |
| Comment by Gerrit Updater [ 14/Nov/17 ] |
|
James Simmons (uja.ornl@yahoo.com) uploaded a new patch: https://review.whamcloud.com/30087 |
| Comment by James A Simmons [ 18/Nov/17 ] |
|
I also got this working. Only one test fails with lctl set_param -P which I tracked down to the problem that the lcfg changes are only being transmitted to the clients. So trying to deactivate an OST/MDT only appears to happen on the client and the servers don't see the same change. It appears the choice of where to send the lcfg info is done in the mgc layer. Does anyone know the exact method of how this done? |
| Comment by Gerrit Updater [ 14/Jan/18 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/28590/ |
| Comment by Gerrit Updater [ 30/Jan/18 ] |
|
James Simmons (uja.ornl@yahoo.com) uploaded a new patch: https://review.whamcloud.com/31081 |
| Comment by Gerrit Updater [ 07/Feb/18 ] |
|
Minh Diep (minh.diep@intel.com) uploaded a new patch: https://review.whamcloud.com/31207 |
| Comment by Gerrit Updater [ 09/Feb/18 ] |
|
John L. Hammond (john.hammond@intel.com) merged in patch https://review.whamcloud.com/31207/ |
| Comment by Gerrit Updater [ 22/Feb/18 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch https://review.whamcloud.com/31081/ |
| Comment by James A Simmons [ 28/Feb/18 ] |
|
So the good news is that I found lctl conf_param lustre-OST*.failover.node=10.0.0.1@tcp can be done with set_param |
| Comment by James A Simmons [ 01/Mar/18 ] |
|
looks like this work is coming to completion |
| Comment by Gerrit Updater [ 05/Jul/18 ] |
|
James Simmons (uja.ornl@yahoo.com) uploaded a new patch: https://review.whamcloud.com/32784 |
| Comment by James A Simmons [ 28/Aug/18 ] |
|
So I see one regression with lctl set_param -P. Some test use the form get the parameter valu: lctl set_param osc.lustre-OST0001-osc-[^M]*.active=1 The shell seems to expand this properly or the get_param routine parses this correctly. Now if I run on the MGS lctl set_param " 1) Make the shell expand the [^M] to some value before passing the string to lctl itself. I don't know how to do that 2) Use regex or something in the C code of lctl to expand this out before packing the data for the ioctl on the MGS. 3) Change the test scripts to drop the [^M] for lctl set_param -P. Which is the best option? |
| Comment by Gerrit Updater [ 10/Oct/18 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/30087/ |
| Comment by James A Simmons [ 26/Nov/18 ] |
|
Can patch https://review.whamcloud.com/#/c/32784 be reviewed so it can land for 2.12. It was discovered that obdname2fsname() doesn't cover all the cases so this patch removes the use of obdname2fsname() on the MSG server when dealing with config logs. Currently it can break in some corner cases. After this patch then obdname2fsname() will only be used with sptlrpc like before. That can be addressed in the follow on LU-10937 patch for 2.13. |
| Comment by Gerrit Updater [ 04/Jan/19 ] |
|
Oleg Drokin (green@whamcloud.com) merged in patch https://review.whamcloud.com/32784/ |
| Comment by Peter Jones [ 04/Jan/19 ] |
|
James Do I recall correctly - this is the only fix needed but it should be queued up for 2.12.1 in addition to being in 2.13? Peter |
| Comment by James A Simmons [ 04/Jan/19 ] |
|
Yes this last patch should land for 2.12. Currently the params files on the MGS server can have malformed names. Rare but can happen. |
| Comment by Gerrit Updater [ 29/Sep/23 ] |
|
"Andreas Dilger <adilger@whamcloud.com>" uploaded a new patch: https://review.whamcloud.com/c/doc/manual/+/52553 |
| Comment by Gerrit Updater [ 02/Nov/23 ] |
|
"Andreas Dilger <adilger@whamcloud.com>" merged in patch https://review.whamcloud.com/c/doc/manual/+/52553/ |