X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fbackup.c;h=96ed0787282f1c7f1463b957f9e48625a755042b;hb=ec7eb240abd60e667d1a26f89df1b064e1b3786d;hp=c90f7b5141422668cc6c3f8deebb7623da33afb1;hpb=e0d341e5f972c0b2dbdccf5fe7e5cb1c77c57970;p=bacula%2Fbacula diff --git a/bacula/src/dird/backup.c b/bacula/src/dird/backup.c index c90f7b5141..96ed078728 100644 --- a/bacula/src/dird/backup.c +++ b/bacula/src/dird/backup.c @@ -7,8 +7,8 @@ many others, a complete list can be found in the file AUTHORS. This program is Free Software; you can redistribute it and/or modify it under the terms of version two of the GNU General Public - License as published by the Free Software Foundation plus additions - that are listed in the file LICENSE. + License as published by the Free Software Foundation and included + in the file LICENSE. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -200,7 +200,7 @@ bool do_backup(JCR *jcr) } } - bnet_fsend(fd, storaddr, store->address, store->SDDport, tls_need); + fd->fsend(storaddr, store->address, store->SDDport, tls_need); if (!response(jcr, fd, OKstore, "Storage", DISPLAY_ERROR)) { goto bail_out; } @@ -226,7 +226,7 @@ bool do_backup(JCR *jcr) } /* Send backup command */ - bnet_fsend(fd, backupcmd); + fd->fsend(backupcmd); if (!response(jcr, fd, OKbackup, "backup", DISPLAY_ERROR)) { goto bail_out; } @@ -244,6 +244,8 @@ bool do_backup(JCR *jcr) bail_out: set_jcr_job_status(jcr, JS_ErrorTerminated); Dmsg1(400, "wait for sd. use=%d\n", jcr->use_count()); + /* Cancel SD */ + cancel_storage_daemon_job(jcr); wait_for_storage_daemon_termination(jcr); Dmsg1(400, "after wait for sd. use=%d\n", jcr->use_count()); return false; @@ -289,9 +291,14 @@ int wait_for_job_termination(JCR *jcr) if (is_bnet_error(fd)) { Jmsg(jcr, M_FATAL, 0, _("Network error with FD during %s: ERR=%s\n"), - job_type_to_str(jcr->JobType), bnet_strerror(fd)); + job_type_to_str(jcr->JobType), fd->bstrerror()); + } + fd->signal(BNET_TERMINATE); /* tell Client we are terminating */ + + /* Force cancel in SD if failing */ + if (job_canceled(jcr) || !fd_ok) { + cancel_storage_daemon_job(jcr); } - bnet_sig(fd, BNET_TERMINATE); /* tell Client we are terminating */ /* Note, the SD stores in jcr->JobFiles/ReadBytes/JobBytes/Errors */ wait_for_storage_daemon_termination(jcr); @@ -348,14 +355,14 @@ void backup_cleanup(JCR *jcr, int TermCode) update_job_end(jcr, TermCode); if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) { - Jmsg(jcr, M_WARNING, 0, _("Error getting job record for stats: %s"), + Jmsg(jcr, M_WARNING, 0, _("Error getting Job record for Job report: ERR=%s"), db_strerror(jcr->db)); set_jcr_job_status(jcr, JS_ErrorTerminated); } - bstrncpy(cr.Name, jcr->client->hdr.name, sizeof(cr.Name)); + bstrncpy(cr.Name, jcr->client->name(), sizeof(cr.Name)); if (!db_get_client_record(jcr, jcr->db, &cr)) { - Jmsg(jcr, M_WARNING, 0, _("Error getting client record for stats: %s"), + Jmsg(jcr, M_WARNING, 0, _("Error getting Client record for Job report: ERR=%s"), db_strerror(jcr->db)); } @@ -381,7 +388,7 @@ void backup_cleanup(JCR *jcr, int TermCode) term_msg = _("*** Backup Error ***"); msg_type = M_ERROR; /* Generate error message */ if (jcr->store_bsock) { - bnet_sig(jcr->store_bsock, BNET_TERMINATE); + jcr->store_bsock->signal(BNET_TERMINATE); if (jcr->SD_msg_chan) { pthread_cancel(jcr->SD_msg_chan); } @@ -390,7 +397,7 @@ void backup_cleanup(JCR *jcr, int TermCode) case JS_Canceled: term_msg = _("Backup Canceled"); if (jcr->store_bsock) { - bnet_sig(jcr->store_bsock, BNET_TERMINATE); + jcr->store_bsock->signal(BNET_TERMINATE); if (jcr->SD_msg_chan) { pthread_cancel(jcr->SD_msg_chan); } @@ -438,7 +445,8 @@ void backup_cleanup(JCR *jcr, int TermCode) // bmicrosleep(15, 0); /* for debugging SIGHUP */ - Jmsg(jcr, msg_type, 0, _("Bacula %s Version: %s (%s) %s %s %s at %s\n" + Jmsg(jcr, msg_type, 0, _("Bacula %s %s (%s): %s\n" +" Build OS: %s %s %s\n" " JobId: %d\n" " Job: %s\n" " Backup Level: %s%s\n" @@ -458,7 +466,7 @@ void backup_cleanup(JCR *jcr, int TermCode) " Rate: %.1f KB/s\n" " Software Compression: %s\n" " VSS: %s\n" -" Encryption: %s\n" +" Storage Encryption: %s\n" " Volume name(s): %s\n" " Volume Session Id: %d\n" " Volume Session Time: %d\n" @@ -468,8 +476,8 @@ void backup_cleanup(JCR *jcr, int TermCode) " FD termination status: %s\n" " SD termination status: %s\n" " Termination: %s\n\n"), - my_name, VERSION, BDATE, HOST_OS, DISTNAME, DISTVER, - edt, + my_name, VERSION, LSMDATE, edt, + HOST_OS, DISTNAME, DISTVER, jcr->jr.JobId, jcr->jr.Job, level_to_str(jcr->JobLevel), jcr->since, @@ -568,7 +576,7 @@ void update_bootstrap_file(JCR *jcr) } else { berrno be; Jmsg(jcr, M_ERROR, 0, _("Could not open WriteBootstrap file:\n" - "%s: ERR=%s\n"), fname, be.strerror()); + "%s: ERR=%s\n"), fname, be.bstrerror()); set_jcr_job_status(jcr, JS_ErrorTerminated); } free_pool_memory(fname);