In many cases they aren't "safe" to use, and you can be sure they certainly don't go through the usual QA cycle.
Yup. If it's not documented, it's not supported, even though it might be useful.
(I've filed a bug saying that our whole collection of undocumented commands needs cleaning up.
Note that "cleaning up" in many cases may mean "removing from the system" - a whole *pile* of commands are there solely to provoke the system to do things for testing purposes inside development, for example.
In some other cases, it may mean, making information available to support people, and maybe to end-users, but not necessarily committing to keeping the interface the same henceforth and forever more, world without end, amen.
In other cases, it may mean leaving the command around for now, but not documenting it, because changes to the system in the future may obviate the need for it, at which point we'll remove it.)
Now, I'm not saying mv is dangerous (I don't know the code), but I would not be surprised if it didn't fail to lock certain buffers properly in multiuser operation, or not update the filesystem correctly for CIFS attributes, or any number of other problems.
Actually, "mv" happens to be Pretty Damn Simple - it does a pile of standard WAFL operations to look up the containing directories and then the standard WAFL rename operation (and uses an internal-to-Data-ONTAP(R)(TM)(LSMFT) routine to do it, so it's about 12 lines of code - counting blank linkes and curly braces), so it shouldn't, in theory, cause those problems (and won't do any better at moving stuff out of a snapshot than would a "mv" command on a UNIX box or a "ren" command on a DOS/Windows box; moving stuff out of a snapshot isn't exactly trivial), but...
I wouldn't want to risk the possibility of corruption and/or a crash unless it was an "approved" Netapp command.
...that's definitely the case; undocumented means unsupported and, quite likely, untested, and also means "not guaranteed to stick around forever".
On Thu, Sep 04, 1997 at 09:21:59PM -0700, Guy Harris said:
In other cases, it may mean leaving the command around for now, but not documenting it, because changes to the system in the future may obviate the need for it, at which point we'll remove it.)
How about having an 'enabling' command that enables those 'undocummented' commands. In that way, they are there for your support to use for potential 'debugging', and you don't have to modify the code that much...... Well, that's if it's well designed code. :p
On Thu, 4 Sep 1997, Michael Douglass wrote:
How about having an 'enabling' command that enables those 'undocummented' commands.
There already is one. ;-) I don't remember it off-hand, but it turns on a *lot* of extra debugging commands (like controlling the LED's on the shelves so you know you've hooked the canisters up correctly, etc.).