-2003-07-xx Version 1.31 Beta xxJul03
+2003-07-12 Version 1.31 Beta 10Jul03
+- Manual updates.
+- Clean up some unused variables detected by the IRIX compiler.
+- Test two directories on Win32 -- caused a crash. I forgot
+ to NULL the uid cache pointer after releasing it.
+- Use bstrncpy() instead of strcpy() in find_files.
+- Clear a few linked lists in the temp directory packed in find_one.c
+- Eliminate an unnecessary variable in attr.c
+- Clear the cache pointer after release in idcache.c
+- Implement a new C++ doubly linked list class.
+
+2003-07-08 Version 1.31 Beta 08Jul03
- Update document for Win32 stuff.
- Ensure VolStatus value for update is permitted.
- Fix cached_path so that it is local to the jcr, otherwise, there
Release Notes for Bacula 1.31
- Bacula code: Total files = 253 Total lines = 75,225 (*.h *.c *.in)
+ Bacula code: Total files = 253 Total lines = 75,240 (*.h *.c *.in)
Major Changes this Release:
-- The database format has changed. Please see below.
+- The database format has changed from version 1.30a. Please see below.
- Support to save and restore all files on WinNT/2K/XP systems
including the permissions. Unfortunately files that are in use by another
program cannot be saved.
it is not installed in your system libraries.
- Implemented generalized tape label formats including counter variables
for automatic naming of Volumes.
-- Multiple simultaneous jobs now work.
+- Multiple simultaneous jobs now work. However, I still don't highly
+ recommend it.
- Implemented tape block rejection, which means that restores with
several incremental backups will run orders of magnitude faster.
- Figure out how to use ssh or stunnel to protect Bacula communications.
For 1.31 release:
+- Backup on havana gave:
+ *status storage
+ The defined Storage resources are:
+ 1: File
+ 2: DDS-3
+ Select Storage resource (1-2): 2
+ Connecting to Storage daemon DDS-3 at havana:9103
+
+ havana-sd Version: 1.31 (08 Jul 2003)
+ Daemon started 10-Jul-2003 19:06, 0 Jobs run.
+ Device /tmp is not open.
+ Device /dev/nst0 is mounted with Volume "msu-8Jul03"
+ Device is being initialized.
+ Total Bytes Read=4,629,249,084,728,272,628 Blocks Read=0 Bytes/block=134,735,604
+ Positioned at File=0 Block=0
+ Full Backup job msu-8Jul03 using Volume "msu-backup.2003-07-10_19.06.42" on device /dev/nst0
+ Files=0 Bytes=0 Bytes/sec=0
+ FDReadSeqNo=6 in_msg=6 out_msg=6 fd=7
+ ====
+
- Do full check the command line args in update (e.g. VolStatus ...).
- Maybe remove multiple simultaneous devices code in SD.
- Increment DB version prior to releasing.
char *term_msg;
int msg_type;
MEDIA_DBR mr;
- utime_t RunTime;
Dmsg0(100, "Enter backup_cleanup()\n");
memset(&mr, 0, sizeof(mr));
}
bstrftime(sdt, sizeof(sdt), jcr->jr.StartTime);
bstrftime(edt, sizeof(edt), jcr->jr.EndTime);
- RunTime = jcr->jr.EndTime - jcr->jr.StartTime;
Jmsg(jcr, msg_type, 0, _("Bacula " VERSION " (" LSMDATE "): %s\n\
JobId: %d\n\
*/
int response(JCR *jcr, BSOCK *sd, char *resp, char *cmd)
{
- int n;
-
if (sd->errors) {
return 0;
}
- if ((n = bget_msg(sd)) > 0) {
+ if (bget_msg(sd) > 0) {
Dmsg0(110, sd->msg);
if (strcmp(sd->msg, resp) == 0) {
return 1;
*/
void do_restore(JCR *jcr)
{
- int wherelen;
BSOCK *sd;
int32_t stream;
uint32_t size;
int prog_name_msg = 0;
ATTR *attr;
- wherelen = strlen(jcr->where);
binit(&bfd);
sd = jcr->store_bsock;
return "GZIP data";
case STREAM_SPARSE_GZIP_DATA:
return "GZIP sparse data";
- return "Win32 attributes";
case STREAM_WIN32_DATA:
return "Win32 data";
case STREAM_WIN32_GZIP_DATA:
int
find_files(JCR *jcr, FF_PKT *ff, int callback(FF_PKT *ff_pkt, void *hpkt), void *his_pkt)
{
- char *file;
struct s_included_file *inc = NULL;
while (!job_canceled(jcr) && (inc = get_next_included_file(ff, inc))) {
- file = inc->fname;
- strcpy(ff->VerifyOpts, inc->VerifyOpts); /* Copy options for this file */
- Dmsg1(50, "find_files: file=%s\n", file);
- if (!file_is_excluded(ff, file)) {
- if (!find_one_file(jcr, ff, callback, his_pkt, file, (dev_t)-1, 1)) {
+ /* Copy options for this file */
+ bstrncpy(ff->VerifyOpts, inc->VerifyOpts, sizeof(ff->VerifyOpts));
+ Dmsg1(50, "find_files: file=%s\n", inc->fname);
+ if (!file_is_excluded(ff, inc->fname)) {
+ if (!find_one_file(jcr, ff, callback, his_pkt, inc->fname,
+ (dev_t)-1, 1)) {
return 0; /* error return */
}
}
* during the restore, the directory permissions will
* be reset after all the files have been restored.
*/
+ Dmsg1(300, "Create temp ff packet for dir: %s\n", ff_pkt->fname);
FF_PKT *dir_ff_pkt = (FF_PKT *)bmalloc(sizeof(FF_PKT));
memcpy(dir_ff_pkt, ff_pkt, sizeof(FF_PKT));
dir_ff_pkt->fname = bstrdup(ff_pkt->fname);
dir_ff_pkt->link = bstrdup(ff_pkt->link);
dir_ff_pkt->sys_fname = get_pool_memory(PM_FNAME);
+ dir_ff_pkt->included_files_list = NULL;
+ dir_ff_pkt->excluded_files_list = NULL;
+ dir_ff_pkt->excluded_paths_list = NULL;
+ dir_ff_pkt->linklist = NULL;
ff_pkt->link = ff_pkt->fname; /* reset "link" */
char buf[5000];
char ec1[30];
char *p, *f;
- int n;
p = encode_mode(attr->statp.st_mode, buf);
- n = sprintf(p, " %2d ", (uint32_t)attr->statp.st_nlink);
- p += n;
- n = sprintf(p, "%-8.8s %-8.8s", getuser(attr->statp.st_uid), getgroup(attr->statp.st_gid));
- p += n;
- n = sprintf(p, "%8.8s ", edit_uint64(attr->statp.st_size, ec1));
- p += n;
+ p += sprintf(p, " %2d ", (uint32_t)attr->statp.st_nlink);
+ p += sprintf(p, "%-8.8s %-8.8s", getuser(attr->statp.st_uid), getgroup(attr->statp.st_gid));
+ p += sprintf(p, "%8.8s ", edit_uint64(attr->statp.st_size, ec1));
p = encode_time(attr->statp.st_ctime, p);
*p++ = ' ';
*p++ = ' ';
tail = tail->next;
free(otail);
}
+ user_alist = NULL;
V(mutex);
}
tail = tail->next;
free(otail);
}
+ group_alist = NULL;
V(mutex);
}
va_list arg_ptr;
int details = TRUE;
- return;
-
if (level < 0) {
details = FALSE;
level = -level;
int tape_previously_mounted;
VOL_LIST *vol;
int autochanger = 0;
+ int i;
lock_device(dev);
block_device(dev, BST_DOING_ACQUIRE);
goto get_out;
}
jcr->CurVolume++;
- for (int i=1; i<jcr->CurVolume; i++) {
+ for (i=1; i<jcr->CurVolume; i++) {
vol = vol->next;
}
pm_strcpy(&jcr->VolumeName, vol->VolumeName);
- for (int i=0; i<5; i++) {
+ for (i=0; i<5; i++) {
if (job_canceled(jcr)) {
Mmsg0(&dev->errmsg, _("Job canceled.\n"));
goto get_out; /* error return */
/* Now back up over what we wrote and read the last block */
if (bsf_dev(dev, 1) != 0 || bsf_dev(dev, 1) != 0) {
ok = FALSE;
- Jmsg(jcr, M_ERROR, 0, _("Back space file at EOT failed. ERR=%s\n"), strerror(dev->dev_errno));
+ Jmsg(jcr, M_ERROR, 0, _("Backspace file at EOT failed. ERR=%s\n"), strerror(dev->dev_errno));
}
/* Backspace over record */
if (ok && bsr_dev(dev, 1) != 0) {
ok = FALSE;
- Jmsg(jcr, M_ERROR, 0, _("Back space record at EOT failed. ERR=%s\n"), strerror(dev->dev_errno));
+ Jmsg(jcr, M_ERROR, 0, _("Backspace record at EOT failed. ERR=%s\n"), strerror(dev->dev_errno));
/*
* On FreeBSD systems, if the user got here, it is likely that his/her
* tape drive is "frozen". The correct thing to do is a
if ((stat=bsf_dev(dev, 1)) < 0) {
Pmsg1(0, _("Bad status from bsf. ERR=%s\n"), strerror(errno));
} else {
- Pmsg0(0, _("Back spaced one file.\n"));
+ Pmsg0(0, _("Backspaced one file.\n"));
}
}
if ((stat=bsr_dev(dev, 1)) < 0) {
Pmsg1(0, _("Bad status from bsr. ERR=%s\n"), strerror(errno));
} else {
- Pmsg0(0, _("Back spaced one record.\n"));
+ Pmsg0(0, _("Backspaced one record.\n"));
}
}
weofcmd();
weofcmd();
if (bsf_dev(dev, 1) != 0) {
- Pmsg1(0, _("Back space file failed! ERR=%s\n"), strerror(dev->dev_errno));
+ Pmsg1(0, _("Backspace file failed! ERR=%s\n"), strerror(dev->dev_errno));
goto bail_out;
}
if (bsf_dev(dev, 1) != 0) {
- Pmsg1(0, _("Back space file failed! ERR=%s\n"), strerror(dev->dev_errno));
+ Pmsg1(0, _("Backspace file failed! ERR=%s\n"), strerror(dev->dev_errno));
goto bail_out;
}
Pmsg0(0, "Backspaced over two EOFs OK.\n");
if (bsr_dev(dev, 1) != 0) {
- Pmsg1(0, _("Back space record failed! ERR=%s\n"), strerror(dev->dev_errno));
+ Pmsg1(0, _("Backspace record failed! ERR=%s\n"), strerror(dev->dev_errno));
goto bail_out;
}
Pmsg0(0, "Backspace record OK.\n");
/* */
#define VERSION "1.31"
#define VSTRING "1"
-#define BDATE "08 Jul 2003"
-#define LSMDATE "08Jul03"
+#define BDATE "10 Jul 2003"
+#define LSMDATE "10Jul03"
/* Debug flags */
#define DEBUG 1