X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fdird%2Fcatreq.c;h=0cf0b6d92fb07e852dc4625046e30ad5461b5697;hb=9890727d214be9b91ad676e518bdbdfa7f4f4f22;hp=db195635deeb7a14bda673fbc4c5437f83ada8bc;hpb=79822b6b171cc2af23c6f3cd1608c59e15897a84;p=bacula%2Fbacula diff --git a/bacula/src/dird/catreq.c b/bacula/src/dird/catreq.c index db195635de..0cf0b6d92f 100644 --- a/bacula/src/dird/catreq.c +++ b/bacula/src/dird/catreq.c @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2001-2010 Free Software Foundation Europe e.V. + Copyright (C) 2001-2012 Free Software Foundation Europe e.V. The main author of Bacula is Kern Sibbald, with contributions from many others, a complete list can be found in the file AUTHORS. @@ -114,7 +114,6 @@ void catalog_request(JCR *jcr, BSOCK *bs) utime_t VolFirstWritten; utime_t VolLastWritten; - memset(&mr, 0, sizeof(mr)); memset(&sdmr, 0, sizeof(sdmr)); memset(&jm, 0, sizeof(jm)); Dsm_check(100); @@ -141,7 +140,7 @@ void catalog_request(JCR *jcr, BSOCK *bs) ok = db_get_pool_record(jcr, jcr->db, &pr); if (ok) { mr.PoolId = pr.PoolId; - mr.StorageId = jcr->wstore->StorageId; + set_storageid_in_mr(jcr->wstore, &mr); mr.ScratchPoolId = pr.ScratchPoolId; ok = find_next_volume_for_append(jcr, &mr, index, fnv_create_vol, fnv_prune); Dmsg3(050, "find_media ok=%d idx=%d vol=%s\n", ok, index, mr.VolumeName); @@ -201,7 +200,7 @@ void catalog_request(JCR *jcr, BSOCK *bs) send_volume_info_to_storage_daemon(jcr, bs, &mr); } else { /* Not suitable volume */ - bs->fsend(_("1998 Volume \"%s\" status is %s, %s.\n"), mr.VolumeName, + bs->fsend(_("1998 Volume \"%s\" catalog status is %s, %s.\n"), mr.VolumeName, mr.VolStatus, reason); } @@ -281,14 +280,14 @@ void catalog_request(JCR *jcr, BSOCK *bs) * However, do so only if we are writing the tape, i.e. * the number of VolWrites has increased. */ - if (jcr->wstore && jcr->wstore->StorageId && sdmr.VolWrites > mr.VolWrites) { + if (jcr->wstore && sdmr.VolWrites > mr.VolWrites) { Dmsg2(050, "Update StorageId old=%d new=%d\n", mr.StorageId, jcr->wstore->StorageId); - if (jcr->wstore->StorageId == 0) { - Jmsg(jcr, M_ERROR, 0, _("Attempt to set StorageId to zero.\n")); - } else { - mr.StorageId = jcr->wstore->StorageId; - } + /* Update StorageId after write */ + set_storageid_in_mr(jcr->wstore, &mr); + } else { + /* Nothing written, reset same StorageId */ + set_storageid_in_mr(NULL, &mr); } /* Copy updated values to original media record */ @@ -357,6 +356,7 @@ void catalog_request(JCR *jcr, BSOCK *bs) Jmsg1(jcr, M_FATAL, 0, _("Invalid Catalog request: %s"), omsg); free_memory(omsg); } + Dmsg1(400, ">CatReq response: %s", bs->msg); Dmsg1(400, "Leave catreq jcr 0x%x\n", jcr); return; @@ -440,7 +440,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen) if (jcr->cached_attribute) { Dmsg2(400, "Cached attr. Stream=%d fname=%s\n", ar->Stream, ar->fname); if (!db_create_attributes_record(jcr, jcr->db, ar)) { - Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db)); + Jmsg1(jcr, M_FATAL, 0, _("Attribute create error: ERR=%s"), db_strerror(jcr->db)); } jcr->cached_attribute = false; } @@ -465,7 +465,7 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen) * Older FDs don't have a delta sequence, so check if it is there */ if (p - jcr->attr < msglen) { - ar->DeltaSeq = str_to_int32(p); + ar->DeltaSeq = str_to_int32(p); /* delta_seq */ } } @@ -541,7 +541,8 @@ static void update_attribute(JCR *jcr, char *msg, int32_t msglen) } else if (crypto_digest_stream_type(Stream) != CRYPTO_DIGEST_NONE) { fname = p; if (ar->FileIndex != FileIndex) { - Jmsg(jcr, M_WARNING, 0, _("Got %s but not same File as attributes\n"), stream_to_ascii(Stream)); + Jmsg3(jcr, M_WARNING, 0, _("%s not same File=%d as attributes=%d\n"), + stream_to_ascii(Stream), FileIndex, ar->FileIndex); } else { /* Update digest in catalog */ char digestbuf[BASE64_SIZE(CRYPTO_DIGEST_MAX_SIZE)]; @@ -634,8 +635,7 @@ bool despool_attributes_from_file(JCR *jcr, const char *file) bool ret=false; int32_t pktsiz; size_t nbytes; - ssize_t last = 0, size = 0; - int count = 0; + ssize_t size = 0; int32_t msglen; /* message length */ POOLMEM *msg = get_pool_memory(PM_MESSAGE); FILE *spool_fd=NULL; @@ -673,9 +673,6 @@ bool despool_attributes_from_file(JCR *jcr, const char *file) goto bail_out; } size += nbytes; - if ((++count & 0x3F) == 0) { - last = size; - } } if (!jcr->is_job_canceled()) { update_attribute(jcr, msg, msglen);