]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix part of FileSet restore problem
authorKern Sibbald <kern@sibbald.com>
Tue, 20 Aug 2002 08:59:02 +0000 (08:59 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 20 Aug 2002 08:59:02 +0000 (08:59 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@111 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/kernstodo
bacula/src/baconfig.h
bacula/src/cats/sql_get.c
bacula/src/dird/sql_cmds.c
bacula/src/dird/ua_restore.c
bacula/src/stored/read.c

index 24c3fd6a0722e488f66bced6f22b212af90ab824..d5dddf4ad09a955062f9c0d5dba75ec7ec7621ee 100644 (file)
@@ -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.
index 37164ff39c20bc3183ba13644c1a426753d98d34..1a4543fe8dab5b159da42b33d7d8e730b647bc6d 100644 (file)
 #define TRUE  1
 #define FALSE 0
 
+#ifndef ETIME
+#define ETIME ETIMEDOUT
+#endif
+
 #ifdef PROTOTYPES
 # define __PROTO(p)     p
 #else
index ec6ea58813a516175dd97f4cacb8f81b4f96c5b4..8e7e6bac542e2328095fd8a84717ebd5a6c5a021 100644 (file)
@@ -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);
    }
index 61bf6daa289d6e1f3788fd238cd978b1ce018b45..069a2336f2ffe85f60505d8da9e5caaacb9ecf37 100644 (file)
@@ -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 =
index 2c3ff8b5bafd6bd28c21319e88870e0fb847cbe3..97104ebe643846d9398e4b64062dc3f155ad0acf 100644 (file)
@@ -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);
index b39e23da15978e4aa99cd4b15218718c68bb1317..9821c9784306038d75629cc53b2a84d8b8c7cd03 100644 (file)
@@ -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);