/** * See {@link Storage#nativeCopyFileUnbuffered(File, File, boolean)}. * * @param volume target volume. null if unavailable. * @param src an existing file to copy, must not be {@code null} * @param target the new file, must not be {@code null} * @param preserveFileDate true if the file date of the copy * should be the same as the original * @throws IOException */ public void nativeCopyFileUnbuffered( @Nullable FsVolumeSpi volume, File src, File target, boolean preserveFileDate) throws IOException { final long length = src.length(); final long begin = profilingEventHook.beforeFileIo(volume, NATIVE_COPY, length); try { faultInjectorEventHook.beforeFileIo(volume, NATIVE_COPY, length); Storage.nativeCopyFileUnbuffered(src, target, preserveFileDate); profilingEventHook.afterFileIo(volume, NATIVE_COPY, begin, length); } catch(Exception e) { onFailure(volume, begin); throw e; } }
static File[] copyBlockFiles(File srcMeta, File srcFile, File dstMeta, File dstFile, boolean calculateChecksum) throws IOException { if (calculateChecksum) { computeChecksum(srcMeta, dstMeta, srcFile); } else { try { Storage.nativeCopyFileUnbuffered(srcMeta, dstMeta, true); } catch (IOException e) { throw new IOException("Failed to copy " + srcMeta + " to " + dstMeta, e); } } try { Storage.nativeCopyFileUnbuffered(srcFile, dstFile, true); } catch (IOException e) { throw new IOException("Failed to copy " + srcFile + " to " + dstFile, e); } if (LOG.isDebugEnabled()) { if (calculateChecksum) { LOG.debug("Copied " + srcMeta + " to " + dstMeta + " and calculated checksum"); } else { LOG.debug("Copied " + srcFile + " to " + dstFile); } } return new File[] {dstMeta, dstFile}; }
static File[] copyBlockFiles(File srcMeta, File srcFile, File dstMeta, File dstFile, boolean calculateChecksum) throws IOException { if (calculateChecksum) { computeChecksum(srcMeta, dstMeta, srcFile); } else { try { Storage.nativeCopyFileUnbuffered(srcMeta, dstMeta, true); } catch (IOException e) { throw new IOException("Failed to copy " + srcMeta + " to " + dstMeta, e); } } try { Storage.nativeCopyFileUnbuffered(srcFile, dstFile, true); } catch (IOException e) { throw new IOException("Failed to copy " + srcFile + " to " + dstFile, e); } if (LOG.isDebugEnabled()) { if (calculateChecksum) { LOG.debug("Copied " + srcMeta + " to " + dstMeta + " and calculated checksum"); } else { LOG.debug("Copied " + srcFile + " to " + dstFile); } } return new File[] {dstMeta, dstFile}; }