This stuff should be part of the FS class.  Maybe declare:

  /**
   * Does this file system have problems with atomic renames?
   *
   * @return true if the caller should retry a failed rename of a lock file.
   */
  public abstract boolean retryFailedLockFileCommit();