Say a DataNode (uuid:xyz) has disks D1 and D2. When D1 turns bad, JMX query on FSDatasetState-xyz for "NumFailedVolumes" attr rightly shows the failed volume count as 1 and the "FailedStorageLocations" attr has the failed storage location as "D1".
It is possible to add or remove disks to this DataNode by running reconfigure command. Let the failed disk D1 be removed from the conf and the new conf has only one good disk D2. Upon running the reconfigure command for this DataNode with this new disk conf, the expectation is DataNode would no more have "NumFailedVolumes" or "FailedStorageLocations". But, even after removing the failed disk from the conf and a successful reconfigure, DataNode continues to show the "NumFailedVolumes" as 1 and "FailedStorageLocations" as "D1" and it never gets reset.