VolCatInfo = dcr->VolCatInfo;
}
+bool DEVICE::sync_data(DCR *dcr)
+{
+ int ret;
+#ifdef HAVE_WIN32
+ return false;
+#endif
+
+ if (!has_cap(CAP_SYNCONCLOSE)) {
+ return true;
+ }
+ if (!is_open()) {
+ Dmsg2(200, "device %s closed vol=%s\n", print_name(),
+ VolHdr.VolumeName);
+ return true; /* already closed */
+ }
+
+ while ((ret = fsync(m_fd)) < 0 && errno == EINTR) {
+ bmicrosleep(0, 5000);
+ }
+
+ if (ret < 0) {
+ berrno be;
+ dev_errno = errno;
+ Mmsg(errmsg, _("Error syncing volume \"%s\" on device %s. ERR=%s."),
+ VolHdr.VolumeName, print_name(), be.bstrerror());
+ return false;
+ }
+ return true;
+}
+
/*
* Close the device
* Can enter with dcr==NULL
{
return false;
}
-
dev->print_name());
}
+#ifdef HAVE_WIN32
+ if (device->cap_bits & CAP_SYNCONCLOSE) {
+ device->cap_bits & ~CAP_SYNCONCLOSE; /* Not available on windows */
+ }
+#endif
/*
* Note: be careful setting the slot here. If the drive
* is shared storage, the contents can change before