#include "vss.h"
static pthread_mutex_t vss_mutex = PTHREAD_MUTEX_INITIALIZER;
-static int enable_vss;
+static int enable_vss = 0;
#endif
extern CLIENT *me; /* our client resource */
bool found, quit;
JCR *jcr;
BSOCK *dir = (BSOCK *)dirp;
+ const char jobname[12] = "*Director*";
jcr = new_jcr(sizeof(JCR), filed_free_jcr); /* create JCR */
jcr->dir_bsock = dir;
jcr->last_fname[0] = 0;
jcr->client_name = get_memory(strlen(my_name) + 1);
pm_strcpy(jcr->client_name, my_name);
+ bstrncpy(jcr->Job, jobname, sizeof(jobname)); /* dummy */
jcr->crypto.pki_sign = me->pki_sign;
jcr->crypto.pki_encrypt = me->pki_encrypt;
jcr->crypto.pki_keypair = me->pki_keypair;
/* Send termination status back to Dir */
dir->fsend(EndJob, jcr->JobStatus, jcr->JobFiles,
edit_uint64(jcr->ReadBytes, ed1),
- edit_uint64(jcr->JobBytes, ed2), jcr->Errors, jcr->VSS,
+ edit_uint64(jcr->JobBytes, ed2), jcr->JobErrors, jcr->VSS,
jcr->crypto.pki_encrypt);
Dmsg1(110, "End FD msg: %s\n", dir->msg);
}
} else {
type = M_INFO;
}
- Jmsg(jcr, type, 0, _("DIR and FD clocks differ by %d seconds, FD automatically compensating.\n"), adj);
+ Jmsg(jcr, type, 0, _("DIR and FD clocks differ by %lld seconds, FD automatically compensating.\n"), adj);
}
dir->signal(BNET_EOD);
- Dmsg2(100, "adj = %d since_time=%lld\n", (int)adj, since_time);
+ Dmsg2(100, "adj=%lld since_time=%lld\n", adj, since_time);
jcr->incremental = 1; /* set incremental or decremental backup */
jcr->mtime = since_time; /* set since time */
generate_plugin_event(jcr, bEventSince, (void *)(time_t)jcr->mtime);
Jmsg(jcr, M_INFO, 0, _("Generate VSS snapshots. Driver=\"%s\", Drive(s)=\"%s\"\n"), g_pVSSClient->GetDriverName(), szWinDriveLetters);
if (!g_pVSSClient->CreateSnapshots(szWinDriveLetters)) {
Jmsg(jcr, M_WARNING, 0, _("Generate VSS snapshots failed.\n"));
- jcr->Errors++;
+ jcr->JobErrors++;
} else {
/* tell user if snapshot creation of a specific drive failed */
int i;
for (i=0; i < (int)strlen(szWinDriveLetters); i++) {
if (islower(szWinDriveLetters[i])) {
Jmsg(jcr, M_WARNING, 0, _("Generate VSS snapshot of drive \"%c:\\\" failed. VSS support is disabled on this drive.\n"), szWinDriveLetters[i]);
- jcr->Errors++;
+ jcr->JobErrors++;
}
}
/* inform user about writer states */
for (i=0; i < (int)g_pVSSClient->GetWriterCount(); i++)
if (g_pVSSClient->GetWriterState(i) < 1) {
Jmsg(jcr, M_WARNING, 0, _("VSS Writer (PrepareForBackup): %s\n"), g_pVSSClient->GetWriterInfo(i));
- jcr->Errors++;
+ jcr->JobErrors++;
}
}
} else {
Dmsg0(110, "Error in blast_data.\n");
} else {
set_jcr_job_status(jcr, JS_Terminated);
-
- if (jcr->JobStatus != JS_Terminated) {
+ /* Note, the above set status will not override an error */
+ if (!(jcr->JobStatus == JS_Terminated || jcr->JobStatus == JS_Warnings)) {
bnet_suppress_error_messages(sd, 1);
goto cleanup; /* bail out now */
}
Jmsg(jcr, M_FATAL, 0, _("Append Close with SD failed.\n"));
goto cleanup;
}
- if (SDJobStatus != JS_Terminated) {
+ if (!(SDJobStatus == JS_Terminated || SDJobStatus == JS_Warnings)) {
Jmsg(jcr, M_FATAL, 0, _("Bad status %d returned from Storage Daemon.\n"),
SDJobStatus);
}
int msg_type = M_INFO;
if (g_pVSSClient->GetWriterState(i) < 1) {
msg_type = M_WARNING;
- jcr->Errors++;
+ jcr->JobErrors++;
}
Jmsg(jcr, msg_type, 0, _("VSS Writer (BackupComplete): %s\n"), g_pVSSClient->GetWriterInfo(i));
}
}
+ Win32ConvCleanupCache();
V(vss_mutex);
}
#endif
bail_out:
- if (jcr->Errors) {
+ if (jcr->JobErrors) {
set_jcr_job_status(jcr, JS_ErrorTerminated);
}