public static Object getSerializedValueOnDisk(DiskEntry entry, DiskRegion dr) {
      DiskId did = entry.getDiskId();
      if (did == null) {
        return null;
      }
      dr.acquireReadLock();
      try {
        synchronized (did) {
          if (dr.isBackup() && did.getKeyId() == DiskRegion.INVALID_ID) {
            return null;
          } else if (!entry.isValueNull() && did.needsToBeWritten()
              && !EntryBits.isRecoveredFromDisk(did.getUserBits())/* fix for bug 41942 */) {
            return null;
          }
          return dr.getSerializedData(did);
        }
      } finally {
        dr.releaseReadLock();
      }
    }
Get the serialized value directly from disk. Returned object may be a
{@link CachedDeserializable}. Goes straight to disk without faulting into memory. Only looks
at the disk storage, not at heap storage.

@param entry the entry used to identify the value to fetch
@param dr the persistent storage from which to fetch the value
@return either null, byte array, or CacheDeserializable
geode-core/src/main/java/org/apache/geode/internal/cache/entries/DiskEntry.java