X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fstored%2Fread.c;h=b6f5525c07eea1215cb05fa3bea84c97aad21107;hb=7503a438c87931cf1748bd0fda3bb932e2af3346;hp=a7335e60c73d10d0a89cce4831524bc7f83553c1;hpb=133fa64728f443674c937814915f4e5097324d27;p=bacula%2Fbacula diff --git a/bacula/src/stored/read.c b/bacula/src/stored/read.c index a7335e60c7..b6f5525c07 100644 --- a/bacula/src/stored/read.c +++ b/bacula/src/stored/read.c @@ -6,7 +6,7 @@ * Version $Id$ */ /* - Copyright (C) 2000-2004 Kern Sibbald and John Walker + Copyright (C) 2000-2005 Kern Sibbald This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -29,7 +29,7 @@ #include "stored.h" /* Forward referenced subroutines */ -static bool record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec); +static bool record_cb(DCR *dcr, DEV_RECORD *rec); /* Responses sent to the File daemon */ @@ -37,20 +37,20 @@ static char OK_data[] = "3000 OK data\n"; static char FD_error[] = "3000 error\n"; static char rec_header[] = "rechdr %ld %ld %ld %ld %ld"; -/* +/* * Read Data and send to File Daemon * Returns: false on failure * true on success */ -bool do_read_data(JCR *jcr) +bool do_read_data(JCR *jcr) { BSOCK *fd = jcr->file_bsock; bool ok = true; - DEVICE *dev; - + DCR *dcr = jcr->dcr; + Dmsg0(20, "Start read data.\n"); - if (!bnet_set_buffer_size(fd, jcr->device->max_network_buffer_size, BNET_SETBUF_WRITE)) { + if (!bnet_set_buffer_size(fd, dcr->device->max_network_buffer_size, BNET_SETBUF_WRITE)) { return false; } @@ -63,33 +63,27 @@ bool do_read_data(JCR *jcr) return false; } - Dmsg2(200, "Found %d volumes names to restore. First=%s\n", jcr->NumVolumes, + Dmsg2(200, "Found %d volumes names to restore. First=%s\n", jcr->NumVolumes, jcr->VolList->VolumeName); - pm_strcpy(&jcr->VolumeName, jcr->VolList->VolumeName); - - /* - * Ready device for reading, and read records - */ - if (!acquire_device_for_read(jcr)) { + /* Ready device for reading */ + if (!acquire_device_for_read(jcr, dcr->dev)) { free_vol_list(jcr); + bnet_fsend(fd, FD_error); return false; } - dev = jcr->dcr->dev; - Dmsg1(20, "Begin read device=%s\n", dev_name(dev)); - /* Tell File daemon we will send data */ bnet_fsend(fd, OK_data); - ok = read_records(jcr, dev, record_cb, mount_next_read_volume); + ok = read_records(dcr, record_cb, mount_next_read_volume); /* Send end of data to FD */ bnet_sig(fd, BNET_EOD); - if (!release_device(jcr)) { + if (!release_device(dcr)) { ok = false; } - + free_vol_list(jcr); Dmsg0(30, "Done reading.\n"); return ok; @@ -100,8 +94,9 @@ bool do_read_data(JCR *jcr) * Returns: true if OK * false if error */ -static bool record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) +static bool record_cb(DCR *dcr, DEV_RECORD *rec) { + JCR *jcr = dcr->jcr; BSOCK *fd = jcr->file_bsock; bool ok = true; POOLMEM *save_msg; @@ -121,7 +116,7 @@ static bool record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) bnet_strerror(fd)); return false; } else { - Dmsg1(30, ">filed: Hdr=%s\n", fd->msg); + Dmsg1(31, ">filed: Hdr=%s\n", fd->msg); } @@ -129,7 +124,7 @@ static bool record_cb(JCR *jcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) save_msg = fd->msg; /* save fd message pointer */ fd->msg = rec->data; /* pass data directly to bnet_send */ fd->msglen = rec->data_len; - Dmsg1(30, ">filed: send %d bytes data.\n", fd->msglen); + Dmsg1(31, ">filed: send %d bytes data.\n", fd->msglen); if (!bnet_send(fd)) { Pmsg1(000, "Error sending to FD. ERR=%s\n", bnet_strerror(fd)); Jmsg1(jcr, M_FATAL, 0, _("Error sending to File daemon. ERR=%s\n"),