From: Kern Sibbald Date: Mon, 27 May 2002 14:36:49 +0000 (+0000) Subject: 1.20 documentation updates + misc X-Git-Tag: Release-1.20~1 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9473a46fb2c9fec5ffd8c21fb590ad424a944f50;p=bacula%2Fbacula 1.20 documentation updates + misc git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@31 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/bacula/ChangeLog b/bacula/ChangeLog index 4123a82625..bf7e3d59ee 100644 --- a/bacula/ChangeLog +++ b/bacula/ChangeLog @@ -1,3 +1,86 @@ +2002-05-27 Release 1.20 +- Started documenting Catalog Pruning and Recycling. + Added catmaintenance.html and recycling.html +- Fixed the query command bug. +- Implemented PID files to prevent two copies of Bacula + from running at the same time. Be sure you --with-pid-dir + points to a working directory. +- Modified ASSERT() to cause a segmentation violation. This + permits a core dump. +- Worked on gnome-console. It paints better, it tells you if it + is ready to accept a command or processing one, and it is + almost entirely GTK+ (rather than GNOME, I'm removing GNOME + a bit at a time). +- Limit to 100 the number of tape labeling errors in a single Job. +- Add some additional ASSERT()s to the database routines. I don't + like ASSERTs but they do catch bugs. +- Tested and debugged recycling of Volumes. Needed to change + the Director-SD protocol slightly. +- Removed the experimental SIGHUP in the Director as it is a + potential source of errors. +- Added Level, Pool, Messages, and Storage keyword/value scanning + to the Schedule Run record. +- Improved printing of Schedule resources with "show schedules" +- Do not autoprune Jobs/Files if the Job errs. +- Updated newvol() to pass back the updated Media record. +- Fixed the "update pool" command, which was broken during a much + earlier code reorganization. +- Improved a few of the pruning messages. +- Removed readline inclusions from gnome-console (hang over from console). +- Make Jmsg use daemon message handler if no message handler is defined. + This is always the case in the SD and FD. +- Started removing __PROTO(). With C++ prototypes are manditory, so why + keep around legacy code. +- Added a good deal of message internationalization -- more to be done. +- Move cached Path into mdb structure and use POOLMEM. +- Fix verify bug introduced last update causing incorrect diffs + by turning off autopruning. +- Started adding code to distinguish Errors from Fatal Errors. +- Errors are now counted in message.c for a Job. +- More POOLMEM cleanups. +- Implemented Automatic pruning. +- Implemented Automatic recycling of Volumes. +- Added PruneJobs/Files/Volumes=yes or no to Job resource. If set, + it forces the specified pruning. +- Modified rwlock to accept multiple nested write lock + requests. +- Modified the cats directory to use the new rwlock mechanism + in place of P() and V(). +- Defined db_lock(mdb) and db_unlock(mdb). They are in effect + transaction locks. +- Add CVS Id's to most files. +- Made first cut at AutoPrune +- Added new autoprune file that is called at the end of + each Job. It then decides when and what to prune and + calls the UA prune routines. +- Modified Run (in Schedule resource) to permit overrides of + Level, Pool, Storage, and Messages. (not tested). +- Added more POOLMEM in place of char. +- Implemented daemon pid files. This prevents multiple + daemons from running simultaneously. You can run multiple + daemons if they listen on different ports. +- Documented the Schedule resource a bit better. +- Began gently adding a POOLMEM type (perviously void). + For the moment it is a #define to char, but long term + it should be its own typedef. +- Corrected a bit of spacing on the status bar of gnome-console +- Added Admin and Archive Job types. +- Implemented multiple Messages resources. Each daemon has + its own message resource, which defaults if not defined. + Jobs may now have different message handlers. +- Cleaned up a bit of duplicate code in backup, verify, and + restore by creating appropriate subroutines in job.c +- Added Type, Client, FileSet, and Level resource record + definitions to the Director. These can be used in place + of the Backup = ..., Verify = ..., ... commands. This needs + documenting. +- Corrected an incorrect message in the prune code and added + the number of Files pruned in the message. +- Corrected several paint problems with gnome-console. +- Added a bit of printout in signal handler during traceback. +- Cleaned up most of sm_check() to be turned on/off by define + in version.h + 2002-05-10 Release 1.19 - Allow the user to select a new period for pruning. - Lots of additions to the manual -- prune and purge diff --git a/bacula/src/dird/ua_cmds.c b/bacula/src/dird/ua_cmds.c index 6f4b7f09d5..bb683b4a7c 100644 --- a/bacula/src/dird/ua_cmds.c +++ b/bacula/src/dird/ua_cmds.c @@ -568,7 +568,7 @@ static int update_volume(UAContext *ua) static char *kw[] = { "volume", NULL}; - char *query; + POOLMEM *query; char ed1[30]; memset(&pr, 0, sizeof(pr)); @@ -600,6 +600,7 @@ static int update_volume(UAContext *ua) start_prompt(ua, _("Parameters to modify:\n")); add_prompt(ua, _("Volume Status")); add_prompt(ua, _("Volume Retention")); + add_prompt(ua, _("Recycle")); add_prompt(ua, _("Done")); switch (do_prompt(ua, _("Select paramter to modify"), NULL)) { case 0: /* Volume Status */ @@ -618,7 +619,7 @@ static int update_volume(UAContext *ua) return 1; } strcpy(mr.VolStatus, ua->cmd); - query = (char *)get_pool_memory(PM_MESSAGE); + query = get_pool_memory(PM_MESSAGE); Mmsg(&query, "UPDATE Media SET VolStatus=\"%s\" WHERE MediaId=%d", mr.VolStatus, mr.MediaId); if (!db_sql_query(ua->db, query, NULL, NULL)) { @@ -636,7 +637,7 @@ static int update_volume(UAContext *ua) bsendmsg(ua, _("Invalid retention period specified.\n")); break; } - query = (char *)get_pool_memory(PM_MESSAGE); + query = get_pool_memory(PM_MESSAGE); Mmsg(&query, "UPDATE Media SET VolRetention=%s WHERE MediaId=%d", edit_uint64(mr.VolRetention, ed1), mr.MediaId); if (!db_sql_query(ua->db, query, NULL, NULL)) { @@ -644,6 +645,30 @@ static int update_volume(UAContext *ua) } free_pool_memory(query); break; + case 2: /* Recycle */ + int recycle; + bsendmsg(ua, _("Current value is: %s\n"), + mr.Recycle==1?_("yes"):_("no")); + if (!get_cmd(ua, _("Enter new Recycle status: "))) { + return 0; + } + if (strcasecmp(ua->cmd, _("yes")) == 0) { + recycle = 1; + } else if (strcasecmp(ua->cmd, _("no")) == 0) { + recycle = 0; + } else { + bsendmsg(ua, _("Invalid recycle status specified.\n")); + break; + } + query = get_pool_memory(PM_MESSAGE); + Mmsg(&query, "UPDATE Media SET Recycle=%d WHERE MediaId=%d", + recycle, mr.MediaId); + if (!db_sql_query(ua->db, query, NULL, NULL)) { + bsendmsg(ua, "%s", db_strerror(ua->db)); + } + free_pool_memory(query); + break; + default: /* Done or error */ return 0; } diff --git a/bacula/src/lib/util.c b/bacula/src/lib/util.c index b8e5803378..611903dcd2 100644 --- a/bacula/src/lib/util.c +++ b/bacula/src/lib/util.c @@ -43,7 +43,7 @@ int string_to_btime(char *str, btime_t *value) { int i, ch, len; btime_t val; - static int mod[] = {'*', 's', 'm', 'h', 'd', 'w', 'o', 'q', 'y', 0}; + static int mod[] = {'*', 's', 'n', 'h', 'd', 'w', 'm', 'q', 'y', 0}; static int mult[] = {1, 1, 60, 60*60, 60*60*24, 60*60*24*7, 60*60*24*30, 60*60*24*91, 60*60*24*365}; diff --git a/bacula/src/version.h b/bacula/src/version.h index 4ad45a44c0..fbf94e1f31 100644 --- a/bacula/src/version.h +++ b/bacula/src/version.h @@ -1,8 +1,8 @@ /* */ #define VERSION "1.20" #define VSTRING "1" -#define DATE "25 May 2002" -#define LSMDATE "25May02" +#define DATE "26 May 2002" +#define LSMDATE "26May02" /* Debug flags */ #define DEBUG 1