code: synchronized void reportErrorsOnDirectory(StorageDirectory sd, 
        FSImage image) {
      String lsd = listStorageDirectories();
      LOG.info("reportErrorsOnDirectory: Current list of storage dirs:" + lsd);
  
      LOG.error("reportErrorsOnDirectory: Error reported on storage directory "
          + sd.getRoot());
  
      if (this.storageDirs.remove(sd)) {
        try {
          sd.unlock();
        } catch (Exception e) {
          LOG.warn(
              "reportErrorsOnDirectory: Unable to unlock bad storage directory: "
                  + sd.getRoot().getPath(), e);
        }
        this.removedStorageDirs.add(sd);
      }
      if (image != null) {
        image.reportErrorsOnImageManager(sd);
      }
      
      lsd = listStorageDirectories();
      LOG.info("reportErrorsOnDirectory: Current list of storage dirs:" + lsd);
    }
docs: Reports that a directory has experienced an error.
  Notifies listeners that the directory is no longer
  available.
  
  @param sd A storage directory to mark as errored.
  @throws IOException