From: Kern Sibbald Date: Tue, 20 Aug 2002 08:59:02 +0000 (+0000) Subject: Fix part of FileSet restore problem X-Git-Tag: Release-1.25~32 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=90400dabee92914f71e7846d67aed5e302bbe520;p=bacula%2Fbacula Fix part of FileSet restore problem git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@111 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/kernstodo b/bacula/kernstodo index 24c3fd6a07..d5dddf4ad0 100644 --- a/bacula/kernstodo +++ b/bacula/kernstodo @@ -1,5 +1,5 @@ Kern's ToDo List - 11 August 2002 + 20 August 2002 Irix conversion notes: - no uuencode @@ -28,6 +28,8 @@ From Chuck: --sd.conf password does not match dir.conf storage password ======= +- Fix db_update_fileset in cats/sql_get.c +- Fix start/end blocks for File - Add new code to scheduler.c and run_conf.c - Problem with len at 362 in tree.c - Volume Bytes shows bytes on last volume written in Job summary. diff --git a/bacula/src/baconfig.h b/bacula/src/baconfig.h index 37164ff39c..1a4543fe8d 100644 --- a/bacula/src/baconfig.h +++ b/bacula/src/baconfig.h @@ -33,6 +33,10 @@ #define TRUE 1 #define FALSE 0 +#ifndef ETIME +#define ETIME ETIMEDOUT +#endif + #ifdef PROTOTYPES # define __PROTO(p) p #else diff --git a/bacula/src/cats/sql_get.c b/bacula/src/cats/sql_get.c index ec6ea58813..8e7e6bac54 100644 --- a/bacula/src/cats/sql_get.c +++ b/bacula/src/cats/sql_get.c @@ -535,17 +535,17 @@ int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr) mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { char ed1[30]; - Mmsg1(&mdb->errmsg, _("More than one Pool!: %s\n"), + Mmsg1(&mdb->errmsg, _("Got %s FileSets expected only one!\n"), edit_uint64(mdb->num_rows, ed1)); - } else if (mdb->num_rows == 1) { - if ((row = sql_fetch_row(mdb)) == NULL) { - Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb)); - } else { - fsr->FileSetId = atoi(row[0]); - strcpy(fsr->FileSet, row[1]); - strcpy(fsr->MD5, row[2]); - stat = fsr->FileSetId; - } + sql_data_seek(mdb, mdb->num_rows-1); + } + if ((row = sql_fetch_row(mdb)) == NULL) { + Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb)); + } else { + fsr->FileSetId = atoi(row[0]); + strcpy(fsr->FileSet, row[1]); + strcpy(fsr->MD5, row[2]); + stat = fsr->FileSetId; } sql_free_result(mdb); } diff --git a/bacula/src/dird/sql_cmds.c b/bacula/src/dird/sql_cmds.c index 61bf6daa28..069a2336f2 100644 --- a/bacula/src/dird/sql_cmds.c +++ b/bacula/src/dird/sql_cmds.c @@ -216,7 +216,7 @@ char *uar_sel_fileset = "SELECT FileSet.FileSetId,FileSet.FileSet FROM Job," "Client,FileSet WHERE Job.FileSetId=FileSet.FileSetId " "AND Job.ClientId=Client.ClientId AND Client.Name='%s' " - "GROUP BY FileSetId"; + "GROUP BY FileSet.FileSetId"; /* Find MediaType used by this Job */ char *uar_mediatype = diff --git a/bacula/src/dird/ua_restore.c b/bacula/src/dird/ua_restore.c index 2c3ff8b5ba..97104ebe64 100644 --- a/bacula/src/dird/ua_restore.c +++ b/bacula/src/dird/ua_restore.c @@ -360,9 +360,9 @@ static int user_select_jobids(UAContext *ua, JobIds *ji) fsr.FileSetId = 0; strcpy(fsr.FileSet, fileset_name); if (!db_get_fileset_record(ua->db, &fsr)) { - bsendmsg(ua, "%s\n", db_strerror(ua->db)); - free_pool_memory(query); - return 0; + bsendmsg(ua, "Error getting FileSet record: %s\n", db_strerror(ua->db)); + bsendmsg(ua, _("This probably means you modified the FileSet.\n" + "Continuing anyway.\n")); } Mmsg(&query, uar_last_full, ji->client->hdr.name, fsr.FileSetId); diff --git a/bacula/src/stored/read.c b/bacula/src/stored/read.c index b39e23da15..9821c97843 100644 --- a/bacula/src/stored/read.c +++ b/bacula/src/stored/read.c @@ -128,7 +128,7 @@ int do_read_data(JCR *jcr) vol = vol->next; } strcpy(jcr->VolumeName, vol->VolumeName); - Dmsg1(000, "There is another volume %s.\n", jcr->VolumeName); + Dmsg1(100, "There is another volume %s.\n", jcr->VolumeName); dev->state &= ~ST_READ; if (!acquire_device_for_read(jcr, dev, block)) { Jmsg(jcr, M_FATAL, 0, _("Cannot open Dev=%s, Vol=%s\n"), dev_name(dev), jcr->VolumeName);