diff --git a/sql/sql_backup.cc b/sql/sql_backup.cc index da75cc58980..43215136f01 100644 --- a/sql/sql_backup.cc +++ b/sql/sql_backup.cc @@ -114,9 +114,6 @@ static ssize_t pread_write(backup::handle in_fd, backup_fd out_fd, ret= pread(in_fd, b, ssize_t(size), o); if (ret > 0) { -#ifdef POSIX_FADV_DONTNEED - std::ignore= posix_fadvise(in_fd, o, ret, POSIX_FADV_DONTNEED); -#endif uint64_t wo{o}; o+= ret; count-= uint64_t(ret); @@ -178,6 +175,7 @@ int copy_entire_file(int src, int dst) noexcept { uint64_t end(lseek(src, 0, SEEK_END)); #ifdef POSIX_FADV_NOREUSE + std::ignore= posix_fadvise(src, 0, 0, POSIX_FADV_NOREUSE); std::ignore= posix_fadvise(dst, 0, 0, POSIX_FADV_NOREUSE); #endif int ret; @@ -190,9 +188,6 @@ int copy_entire_file(int src, int dst) noexcept std::ignore= posix_fadvise(src, 0, 0, POSIX_FADV_SEQUENTIAL); #endif ret= backup::copy(src, dst, 0, end); -#ifdef POSIX_FADV_DONTNEED - std::ignore= posix_fadvise(src, 0, 0, POSIX_FADV_DONTNEED); -#endif #ifdef POSIX_FADV_NORMAL std::ignore= posix_fadvise(src, 0, 0, POSIX_FADV_NORMAL); #endif @@ -250,9 +245,6 @@ int copy(handle src, backup_fd dst, uint64_t start, uint64_t end) noexcept #else ssize_t ret{pread_write(src, dst, start, end)}; assert(ret <= 0); -#ifdef POSIX_FADV_DONTNEED - std::ignore= posix_fadvise(src, start, end, POSIX_FADV_DONTNEED); -#endif return int(ret); #endif } @@ -484,9 +476,6 @@ int copy_file_range_try(int src, int dst, uint64_t start, uint64_t end) assert(ret <= 0); if (ret && (errno == EOPNOTSUPP || errno == EXDEV)) return 1; -#ifdef POSIX_FADV_DONTNEED - std::ignore= posix_fadvise(src, start, end - start, POSIX_FADV_DONTNEED); -#endif return int(ret); } #endif diff --git a/storage/innobase/handler/backup_innodb.cc b/storage/innobase/handler/backup_innodb.cc index fe04c144452..c0916473af1 100644 --- a/storage/innobase/handler/backup_innodb.cc +++ b/storage/innobase/handler/backup_innodb.cc @@ -615,14 +615,28 @@ public: std::swap(f, l); } +#ifdef POSIX_FADV_NOREUSE + std::ignore= posix_fadvise(f, 0, 0, POSIX_FADV_NOREUSE); +#endif +#ifdef POSIX_FADV_SEQUENTIAL + std::ignore= posix_fadvise(f, 0, 0, POSIX_FADV_SEQUENTIAL); +#endif tracked= new tracked_log{f, first_lsn, log_sys.file_size}; if (l != OS_FILE_CLOSED) + { +#ifdef POSIX_FADV_NOREUSE + std::ignore= posix_fadvise(l, 0, 0, POSIX_FADV_NOREUSE); +#endif +#ifdef POSIX_FADV_SEQUENTIAL + std::ignore= posix_fadvise(l, 0, 0, POSIX_FADV_SEQUENTIAL); +#endif tracked->next= new tracked_log{l, first_lsn + log_sys.capacity(), uint64_t (IF_WIN(os_file_get_size(l), lseek(l, 0, SEEK_END)))}; + } } log_dst= context::log_track_create(target, first_lsn); if (IF_WIN(log_dst != INVALID_HANDLE_VALUE, log_dst >= 0)) @@ -1655,6 +1669,10 @@ private: # endif for (;;) { +#ifdef POSIX_FADV_NOREUSE + std::ignore= + posix_fadvise(node->handle, 0, 0, POSIX_FADV_NOREUSE); +#endif #ifdef POSIX_FADV_SEQUENTIAL std::ignore= posix_fadvise(node->handle, 0, 0, POSIX_FADV_SEQUENTIAL); @@ -2205,11 +2223,18 @@ public: { # ifdef POSIX_FADV_NOREUSE std::ignore= posix_fadvise(dst, 0, 0, POSIX_FADV_NOREUSE); + std::ignore= posix_fadvise(src, 0, 0, POSIX_FADV_NOREUSE); +# endif +# ifdef POSIX_FADV_SEQUENTIAL + std::ignore= posix_fadvise(src, 0, 0, POSIX_FADV_SEQUENTIAL); # endif err= extend(dst, chunk->offset) || backup::copy(src, dst, chunk[-1].offset, chunk[-1].offset + chunk[-1].length) || (lsn <= ctx.checkpoint && write_checkpoint(dst, cp_buf)); +# ifdef POSIX_FADV_NORMAL + std::ignore= posix_fadvise(src, 0, 0, POSIX_FADV_NORMAL); +# endif #ifdef _WIN32 err|= !CloseHandle(dst); #else