Index: fd_cmds.c =================================================================== --- fd_cmds.c (.../tags/Release-2.2.0/bacula/src/stored) (revision 5508) +++ fd_cmds.c (.../branches/Branch-2.2/bacula/src/stored) (revision 5508) @@ -1,18 +1,4 @@ /* - * This file handles commands from the File daemon. - * - * Kern Sibbald, MM - * - * We get here because the Director has initiated a Job with - * the Storage daemon, then done the same with the File daemon, - * then when the Storage daemon receives a proper connection from - * the File daemon, control is passed here to handle the - * subsequent File daemon commands. - * - * Version $Id$ - * - */ -/* Bacula® - The Network Backup Solution Copyright (C) 2000-2007 Free Software Foundation Europe e.V. @@ -39,6 +25,20 @@ (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, Switzerland, email:ftf@fsfeurope.org. */ +/* + * This file handles commands from the File daemon. + * + * Kern Sibbald, MM + * + * We get here because the Director has initiated a Job with + * the Storage daemon, then done the same with the File daemon, + * then when the Storage daemon receives a proper connection from + * the File daemon, control is passed here to handle the + * subsequent File daemon commands. + * + * Version $Id$ + * + */ #include "bacula.h" #include "stored.h" @@ -120,7 +120,7 @@ dir->set_jcr(jcr); Dmsg1(120, "Start run Job=%s\n", jcr->Job); - bnet_fsend(dir, Job_start, jcr->Job); + dir->fsend(Job_start, jcr->Job); jcr->start_time = time(NULL); jcr->run_time = jcr->start_time; set_jcr_job_status(jcr, JS_Running); @@ -130,9 +130,9 @@ dequeue_messages(jcr); /* send any queued messages */ set_jcr_job_status(jcr, JS_Terminated); generate_daemon_event(jcr, "JobEnd"); - bnet_fsend(dir, Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles, + dir->fsend(Job_end, jcr->Job, jcr->JobStatus, jcr->JobFiles, edit_uint64(jcr->JobBytes, ec1)); - bnet_sig(dir, BNET_EOD); /* send EOD to Director daemon */ + dir->signal(BNET_EOD); /* send EOD to Director daemon */ return; } @@ -150,7 +150,7 @@ int stat; /* Read command coming from the File daemon */ - stat = bnet_recv(fd); + stat = fd->recv(); if (is_bnet_stop(fd)) { /* hardeof or error */ break; /* connection terminated */ } @@ -171,11 +171,11 @@ } if (!found) { /* command not found */ Dmsg1(110, "msg); - bnet_fsend(fd, ferrmsg); + fd->fsend(ferrmsg); break; } } - bnet_sig(fd, BNET_TERMINATE); /* signal to FD job is done */ + fd->signal(BNET_TERMINATE); /* signal to FD job is done */ } /* @@ -195,10 +195,10 @@ return true; } else { bnet_suppress_error_messages(fd, 1); /* ignore errors at this point */ - bnet_fsend(fd, ERROR_append); + fd->fsend(ERROR_append); } } else { - bnet_fsend(fd, NOT_opened); + fd->fsend(NOT_opened); } return false; } @@ -209,11 +209,11 @@ Dmsg1(120, "storemsg); if (!jcr->session_opened) { - bnet_fsend(fd, NOT_opened); + fd->fsend(NOT_opened); return false; } set_jcr_job_status(jcr, JS_Terminated); - return bnet_fsend(fd, OK_end); + return fd->fsend(OK_end); } @@ -227,14 +227,14 @@ Dmsg1(120, "Append open session: %s", fd->msg); if (jcr->session_opened) { - bnet_fsend(fd, NO_open); + fd->fsend(NO_open); return false; } jcr->session_opened = true; /* Send "Ticket" to File Daemon */ - bnet_fsend(fd, OK_open, jcr->VolSessionId); + fd->fsend(OK_open, jcr->VolSessionId); Dmsg1(110, ">filed: %s", fd->msg); return true; @@ -251,14 +251,14 @@ Dmsg1(120, "msg); if (!jcr->session_opened) { - bnet_fsend(fd, NOT_opened); + fd->fsend(NOT_opened); return false; } /* Send final statistics to File daemon */ - bnet_fsend(fd, OK_close, jcr->JobStatus); + fd->fsend(OK_close, jcr->JobStatus); Dmsg1(120, ">filed: %s", fd->msg); - bnet_sig(fd, BNET_EOD); /* send EOD to File daemon */ + fd->signal(BNET_EOD); /* send EOD to File daemon */ jcr->session_opened = false; return true; @@ -279,7 +279,7 @@ Dmsg1(120, "msg); return do_read_data(jcr); } else { - bnet_fsend(fd, NOT_opened); + fd->fsend(NOT_opened); return false; } } @@ -296,7 +296,7 @@ Dmsg1(120, "%s\n", fd->msg); if (jcr->session_opened) { - bnet_fsend(fd, NO_open); + fd->fsend(NO_open); return false; } @@ -304,7 +304,7 @@ &jcr->read_VolSessionTime, &jcr->read_StartFile, &jcr->read_EndFile, &jcr->read_StartBlock, &jcr->read_EndBlock) == 7) { if (jcr->session_opened) { - bnet_fsend(fd, NOT_opened); + fd->fsend(NOT_opened); return false; } Dmsg4(100, "read_open_session got: JobId=%d Vol=%s VolSessId=%ld VolSessT=%ld\n", @@ -319,7 +319,7 @@ jcr->JobType = JT_RESTORE; /* Send "Ticket" to File Daemon */ - bnet_fsend(fd, OK_open, jcr->VolSessionId); + fd->fsend(OK_open, jcr->VolSessionId); Dmsg1(110, ">filed: %s", fd->msg); return true; @@ -357,7 +357,7 @@ goto bail_out; } Dmsg0(10, "=== Bootstrap file ===\n"); - while (bnet_recv(sock) >= 0) { + while (sock->recv() >= 0) { Dmsg1(10, "%s", sock->msg); fputs(sock->msg, bs); } @@ -378,10 +378,10 @@ free_pool_memory(jcr->RestoreBootstrap); jcr->RestoreBootstrap = NULL; if (!ok) { - bnet_fsend(sock, ERROR_bootstrap); + sock->fsend(ERROR_bootstrap); return false; } - return bnet_fsend(sock, OK_bootstrap); + return sock->fsend(OK_bootstrap); } @@ -395,14 +395,14 @@ Dmsg1(120, "Read close session: %s\n", fd->msg); if (!jcr->session_opened) { - bnet_fsend(fd, NOT_opened); + fd->fsend(NOT_opened); return false; } - /* Send final statistics to File daemon */ - bnet_fsend(fd, OK_close); + /* Send final close msg to File daemon */ + fd->fsend(OK_close, jcr->JobStatus); Dmsg1(160, ">filed: %s\n", fd->msg); - bnet_sig(fd, BNET_EOD); /* send EOD to File daemon */ + fd->signal(BNET_EOD); /* send EOD to File daemon */ jcr->session_opened = false; return true; Index: stored_conf.c =================================================================== --- stored_conf.c (.../tags/Release-2.2.0/bacula/src/stored) (revision 5508) +++ stored_conf.c (.../branches/Branch-2.2/bacula/src/stored) (revision 5508) @@ -75,7 +75,7 @@ {"piddirectory", store_dir, ITEM(res_store.pid_directory), 0, ITEM_REQUIRED, 0}, {"subsysdirectory", store_dir, ITEM(res_store.subsys_directory), 0, 0, 0}, {"scriptsdirectory", store_dir, ITEM(res_store.scripts_directory), 0, 0, 0}, - {"maximumconcurrentjobs", store_pint, ITEM(res_store.max_concurrent_jobs), 0, ITEM_DEFAULT, 10}, + {"maximumconcurrentjobs", store_pint, ITEM(res_store.max_concurrent_jobs), 0, ITEM_DEFAULT, 20}, {"heartbeatinterval", store_time, ITEM(res_store.heartbeat_interval), 0, ITEM_DEFAULT, 0}, {"tlsenable", store_bit, ITEM(res_store.tls_enable), 1, 0, 0}, {"tlsrequire", store_bit, ITEM(res_store.tls_require), 1, 0, 0}, Index: bscan.c =================================================================== --- bscan.c (.../tags/Release-2.2.0/bacula/src/stored) (revision 5508) +++ bscan.c (.../branches/Branch-2.2/bacula/src/stored) (revision 5508) @@ -120,7 +120,7 @@ " -m update media info in database\n" " -n specify the database name (default bacula)\n" " -u specify database user name (default bacula)\n" -" -P specify database password (default none)\n" " -h specify database host (default NULL)\n" " -p proceed inspite of I/O errors\n" " -r list records\n" @@ -326,6 +326,7 @@ mdcr->StartFile = dcr->StartFile; mdcr->EndBlock = dcr->EndBlock; mdcr->EndFile = dcr->EndFile; + mdcr->VolMediaId = dcr->VolMediaId; mjcr->read_dcr->VolLastIndex = dcr->VolLastIndex; if (!create_jobmedia_record(db, mjcr)) { Pmsg2(000, _("Could not create JobMedia record for Volume=%s Job=%s\n"), @@ -476,6 +477,7 @@ dcr->VolFirstIndex = dcr->FileIndex = 0; dcr->StartBlock = dcr->EndBlock = 0; dcr->StartFile = dcr->EndFile = 0; + dcr->VolMediaId = 0; } Pmsg1(000, _("VOL_LABEL: OK for Volume: %s\n"), mr.VolumeName); @@ -1177,6 +1179,7 @@ dcr->EndBlock = dev->EndBlock; dcr->EndFile = dev->EndFile; + dcr->VolMediaId = dev->VolCatInfo.VolMediaId; memset(&jmr, 0, sizeof(jmr)); jmr.JobId = mjcr->JobId; Index: askdir.c =================================================================== --- askdir.c (.../tags/Release-2.2.0/bacula/src/stored) (revision 5508) +++ askdir.c (.../branches/Branch-2.2/bacula/src/stored) (revision 5508) @@ -398,7 +398,7 @@ dcr->StartFile, dcr->EndFile, dcr->StartBlock, dcr->EndBlock, dcr->Copy, dcr->Stripe, - edit_uint64(dcr->dev->VolCatInfo.VolMediaId, ed1)); + edit_uint64(dcr->VolMediaId, ed1)); Dmsg1(100, ">dird: %s", dir->msg); if (bnet_recv(dir) <= 0) { Dmsg0(190, "create_jobmedia error bnet_recv\n"); Index: dev.h =================================================================== --- dev.h (.../tags/Release-2.2.0/bacula/src/stored) (revision 5508) +++ dev.h (.../branches/Branch-2.2/bacula/src/stored) (revision 5508) @@ -447,6 +447,7 @@ uint32_t StartFile; /* Start write file */ uint32_t StartBlock; /* Start write block */ uint32_t EndBlock; /* Ending block written */ + int64_t VolMediaId; /* MediaId */ int64_t job_spool_size; /* Current job spool size */ int64_t max_job_spool_size; /* Max job spool size */ char VolumeName[MAX_NAME_LENGTH]; /* Volume name */ Index: block.c =================================================================== --- block.c (.../tags/Release-2.2.0/bacula/src/stored) (revision 5508) +++ block.c (.../branches/Branch-2.2/bacula/src/stored) (revision 5508) @@ -611,6 +611,7 @@ dev->block_num = dcr->EndBlock; dev->file = dcr->EndFile; } + dcr->VolMediaId = dev->VolCatInfo.VolMediaId; if (dcr->VolFirstIndex == 0 && block->FirstIndex > 0) { dcr->VolFirstIndex = block->FirstIndex; } @@ -1098,6 +1099,7 @@ dev->block_num = dcr->EndBlock; dev->file = dcr->EndFile; } + dcr->VolMediaId = dev->VolCatInfo.VolMediaId; dev->file_addr += block->read_len; dev->file_size += block->read_len;