From 1f3edf3a27024df37e6de3d9b63b6d744808f628 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Fri, 17 Jan 2003 09:29:48 +0000 Subject: [PATCH] Add jcr to DB arguments git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@300 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/kernstodo | 1 + bacula/src/cats/bdb.c | 13 ++-- bacula/src/cats/cats.h | 11 ++-- bacula/src/cats/mysql.c | 9 ++- bacula/src/cats/protos.h | 94 ++++++++++++++--------------- bacula/src/cats/sql.c | 42 ++++++------- bacula/src/cats/sql_create.c | 104 ++++++++++++++++---------------- bacula/src/cats/sql_delete.c | 22 +++---- bacula/src/cats/sql_find.c | 16 ++--- bacula/src/cats/sql_get.c | 110 +++++++++++++++++----------------- bacula/src/cats/sql_list.c | 36 +++++------ bacula/src/cats/sql_update.c | 30 +++++----- bacula/src/cats/sqlite.c | 15 +++-- bacula/src/dird/autoprune.c | 4 +- bacula/src/dird/backup.c | 18 +++--- bacula/src/dird/catreq.c | 18 +++--- bacula/src/dird/dird.c | 6 +- bacula/src/dird/fd_cmds.c | 4 +- bacula/src/dird/job.c | 17 +++--- bacula/src/dird/msgchan.c | 2 +- bacula/src/dird/newvol.c | 6 +- bacula/src/dird/protos.h | 8 +-- bacula/src/dird/recycle.c | 6 +- bacula/src/dird/restore.c | 6 +- bacula/src/dird/scheduler.c | 1 - bacula/src/dird/ua_cmds.c | 43 +++++++------ bacula/src/dird/ua_output.c | 28 ++++----- bacula/src/dird/ua_prune.c | 6 +- bacula/src/dird/ua_purge.c | 6 +- bacula/src/dird/ua_restore.c | 22 +++---- bacula/src/dird/ua_select.c | 30 +++++----- bacula/src/dird/verify.c | 12 ++-- bacula/src/findlib/find_one.c | 2 - bacula/src/lib/mem_pool.c | 9 --- bacula/src/lib/message.c | 6 -- bacula/src/lib/smartall.c | 4 -- bacula/src/stored/append.c | 12 ---- bacula/src/stored/bscan.c | 38 ++++++------ bacula/src/stored/record.c | 6 +- bacula/src/tools/dbcheck.c | 4 +- 40 files changed, 394 insertions(+), 433 deletions(-) diff --git a/bacula/kernstodo b/bacula/kernstodo index ff03c1d4cb..3f36b9c2ad 100644 --- a/bacula/kernstodo +++ b/bacula/kernstodo @@ -16,6 +16,7 @@ Testing to do: (painful) - blocksize recognition code. For 1.29 release: +- Zap sd_auth_key after use - Priority job to go to top of list. - Add Bar code reading capabilities (new mtx-changer) - Add include list to end of chain in findlib diff --git a/bacula/src/cats/bdb.c b/bacula/src/cats/bdb.c index c19fdc5b79..7ed4282616 100644 --- a/bacula/src/cats/bdb.c +++ b/bacula/src/cats/bdb.c @@ -14,7 +14,7 @@ /* - Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker + Copyright (C) 2000-2003 Kern Sibbald and John Walker This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -114,7 +114,7 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password) } } Dmsg0(200, "db_open first time\n"); - mdb = (B_DB *) malloc(sizeof(B_DB)); + mdb = (B_DB *)malloc(sizeof(B_DB)); memset(mdb, 0, sizeof(B_DB)); Dmsg0(200, "DB struct init\n"); mdb->db_name = bstrdup(db_name); @@ -127,7 +127,6 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password) qinsert(&db_list, &mdb->bq); /* put db in list */ Dmsg0(200, "Done db_open_database()\n"); mdb->cfd = -1; - mdb->jcr = jcr; V(mutex); return mdb; } @@ -137,7 +136,7 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password) * which are returned in the errmsg */ int -db_open_database(B_DB *mdb) +db_open_database(void *jcr, B_DB *mdb) { char *dbf; int fd, badctl; @@ -231,7 +230,7 @@ Please reinitialize the working directory.\n"), return 1; } -void db_close_database(B_DB *mdb) +void db_close_database(void *jcr, B_DB *mdb) { P(mutex); mdb->ref_count--; @@ -445,11 +444,11 @@ void _db_unlock(char *file, int line, B_DB *mdb) * much more efficient. Usually started when inserting * file attributes. */ -void db_start_transaction(B_DB *mdb) +void db_start_transaction(void *jcr, B_DB *mdb) { } -void db_end_transaction(B_DB *mdb) +void db_end_transaction(void *jcr, B_DB *mdb) { } diff --git a/bacula/src/cats/cats.h b/bacula/src/cats/cats.h index 3ae8a38b2f..c65ca3362f 100644 --- a/bacula/src/cats/cats.h +++ b/bacula/src/cats/cats.h @@ -100,7 +100,6 @@ typedef struct s_db { uint32_t cached_path_id; /* cached path id */ int transaction; /* transaction started */ int changes; /* changes during transaction */ - void *jcr; /* JCR or NULL */ POOLMEM *fname; /* Filename only */ POOLMEM *path; /* Path only */ POOLMEM *esc_name; /* Escaped file/path name */ @@ -170,7 +169,6 @@ typedef struct s_db { int cached_path_len; /* length of cached path */ uint32_t cached_path_id; int changes; /* changes made to db */ - void *jcr; /* JCR or NULL */ POOLMEM *fname; /* Filename only */ POOLMEM *path; /* Path only */ POOLMEM *esc_name; /* Escaped file/path name */ @@ -239,17 +237,16 @@ typedef struct s_db { POOLMEM *cached_path; int cached_path_len; /* length of cached path */ uint32_t cached_path_id; - void *jcr; /* JCR or NULL */ } B_DB; #endif /* HAVE_MYSQL */ #endif /* HAVE_SQLITE */ /* Use for better error location printing */ -#define UPDATE_DB(db, cmd) UpdateDB(__FILE__, __LINE__, db, cmd) -#define INSERT_DB(db, cmd) InsertDB(__FILE__, __LINE__, db, cmd) -#define QUERY_DB(db, cmd) QueryDB(__FILE__, __LINE__, db, cmd) -#define DELETE_DB(db, cmd) DeleteDB(__FILE__, __LINE__, db, cmd) +#define UPDATE_DB(jcr, db, cmd) UpdateDB(__FILE__, __LINE__, jcr, db, cmd) +#define INSERT_DB(jcr, db, cmd) InsertDB(__FILE__, __LINE__, jcr, db, cmd) +#define QUERY_DB(jcr, db, cmd) QueryDB(__FILE__, __LINE__, jcr, db, cmd) +#define DELETE_DB(jcr, db, cmd) DeleteDB(__FILE__, __LINE__, jcr, db, cmd) #else /* not __SQL_C */ diff --git a/bacula/src/cats/mysql.c b/bacula/src/cats/mysql.c index 6afe546e1c..e89fa92ebe 100644 --- a/bacula/src/cats/mysql.c +++ b/bacula/src/cats/mysql.c @@ -87,7 +87,6 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password) mdb->path = get_pool_memory(PM_FNAME); mdb->esc_name = get_pool_memory(PM_FNAME); qinsert(&db_list, &mdb->bq); /* put db in list */ - mdb->jcr = jcr; V(mutex); return mdb; } @@ -97,7 +96,7 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password) * which are returned in the errmsg */ int -db_open_database(B_DB *mdb) +db_open_database(void *jcr, B_DB *mdb) { int errstat; @@ -157,7 +156,7 @@ It is probably not running or your password is incorrect.\n"), return 0; } - if (!check_tables_version(mdb)) { + if (!check_tables_version(jcr, mdb)) { V(mutex); return 0; } @@ -168,7 +167,7 @@ It is probably not running or your password is incorrect.\n"), } void -db_close_database(B_DB *mdb) +db_close_database(void *jcr, B_DB *mdb) { P(mutex); mdb->ref_count--; @@ -209,7 +208,7 @@ db_close_database(B_DB *mdb) * For MySQL, NULL causes the auto-increment value * to be updated. */ -int db_next_index(B_DB *mdb, char *table, char *index) +int db_next_index(void *jcr, B_DB *mdb, char *table, char *index) { strcpy(index, "NULL"); return 1; diff --git a/bacula/src/cats/protos.h b/bacula/src/cats/protos.h index 0d38ed6563..c1c4111dc8 100644 --- a/bacula/src/cats/protos.h +++ b/bacula/src/cats/protos.h @@ -31,70 +31,70 @@ /* sql.c */ B_DB *db_init_database(void *jcr, char *db_name, char *db_user, char *db_password); -int db_open_database(B_DB *db); -void db_close_database(B_DB *db); +int db_open_database(void *jcr, B_DB *db); +void db_close_database(void *jcr, B_DB *db); void db_escape_string(char *snew, char *old, int len); char *db_strerror(B_DB *mdb); -int get_sql_record_max(B_DB *mdb); -int db_next_index(B_DB *mdb, char *table, char *index); +int get_sql_record_max(void *jcr, B_DB *mdb); +int db_next_index(void *jcr, B_DB *mdb, char *table, char *index); int db_sql_query(B_DB *mdb, char *cmd, DB_RESULT_HANDLER *result_handler, void *ctx); -int check_tables_version(B_DB *mdb); +int check_tables_version(void *jcr, B_DB *mdb); void _db_unlock(char *file, int line, B_DB *mdb); void _db_lock(char *file, int line, B_DB *mdb); -void db_start_transaction(B_DB *mdb); -void db_end_transaction(B_DB *mdb); +void db_start_transaction(void *jcr, B_DB *mdb); +void db_end_transaction(void *jcr, B_DB *mdb); /* create.c */ -int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar); -int db_create_job_record(B_DB *db, JOB_DBR *jr); -int db_create_media_record(B_DB *db, MEDIA_DBR *media_dbr); -int db_create_client_record(B_DB *db, CLIENT_DBR *cr); -int db_create_fileset_record(B_DB *db, FILESET_DBR *fsr); -int db_create_pool_record(B_DB *db, POOL_DBR *pool_dbr); -int db_create_jobmedia_record(B_DB *mdb, JOBMEDIA_DBR *jr); +int db_create_file_attributes_record(void *jcr, B_DB *mdb, ATTR_DBR *ar); +int db_create_job_record(void *jcr, B_DB *db, JOB_DBR *jr); +int db_create_media_record(void *jcr, B_DB *db, MEDIA_DBR *media_dbr); +int db_create_client_record(void *jcr, B_DB *db, CLIENT_DBR *cr); +int db_create_fileset_record(void *jcr, B_DB *db, FILESET_DBR *fsr); +int db_create_pool_record(void *jcr, B_DB *db, POOL_DBR *pool_dbr); +int db_create_jobmedia_record(void *jcr, B_DB *mdb, JOBMEDIA_DBR *jr); /* delete.c */ -int db_delete_pool_record(B_DB *db, POOL_DBR *pool_dbr); -int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr); +int db_delete_pool_record(void *jcr, B_DB *db, POOL_DBR *pool_dbr); +int db_delete_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr); /* find.c */ -int db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime); -int db_find_last_jobid(B_DB *mdb, JOB_DBR *jr); -int db_find_next_volume(B_DB *mdb, int index, MEDIA_DBR *mr); +int db_find_job_start_time(void *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime); +int db_find_last_jobid(void *jcr, B_DB *mdb, JOB_DBR *jr); +int db_find_next_volume(void *jcr, B_DB *mdb, int index, MEDIA_DBR *mr); /* get.c */ -int db_get_pool_record(B_DB *db, POOL_DBR *pdbr); -int db_get_client_record(B_DB *mdb, CLIENT_DBR *cr); -int db_get_job_record(B_DB *mdb, JOB_DBR *jr); -int db_get_job_volume_names(B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames); -int db_get_file_attributes_record(B_DB *mdb, char *fname, FILE_DBR *fdbr); -int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr); -int db_get_media_record(B_DB *mdb, MEDIA_DBR *mr); -int db_get_num_media_records(B_DB *mdb); -int db_get_num_pool_records(B_DB *mdb); -int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t **ids); -int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t **ids); -int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t **ids); -int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams); -int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr); +int db_get_pool_record(void *jcr, B_DB *db, POOL_DBR *pdbr); +int db_get_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cr); +int db_get_job_record(void *jcr, B_DB *mdb, JOB_DBR *jr); +int db_get_job_volume_names(void *jcr, B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames); +int db_get_file_attributes_record(void *jcr, B_DB *mdb, char *fname, FILE_DBR *fdbr); +int db_get_fileset_record(void *jcr, B_DB *mdb, FILESET_DBR *fsr); +int db_get_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr); +int db_get_num_media_records(void *jcr, B_DB *mdb); +int db_get_num_pool_records(void *jcr, B_DB *mdb); +int db_get_pool_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t **ids); +int db_get_client_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t **ids); +int db_get_media_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t **ids); +int db_get_job_volume_parameters(void *jcr, B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams); +int db_get_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cdbr); /* list.c */ -void db_list_pool_records(B_DB *db, DB_LIST_HANDLER sendit, void *ctx); -void db_list_job_records(B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx); -void db_list_job_totals(B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx); -void db_list_files_for_job(B_DB *db, uint32_t jobid, DB_LIST_HANDLER sendit, void *ctx); -void db_list_media_records(B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx); -void db_list_jobmedia_records(B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx); -int db_list_sql_query(B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx, int verbose); -void db_list_client_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx); +void db_list_pool_records(void *jcr, B_DB *db, DB_LIST_HANDLER sendit, void *ctx); +void db_list_job_records(void *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx); +void db_list_job_totals(void *jcr, B_DB *db, JOB_DBR *jr, DB_LIST_HANDLER sendit, void *ctx); +void db_list_files_for_job(void *jcr, B_DB *db, uint32_t jobid, DB_LIST_HANDLER sendit, void *ctx); +void db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx); +void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx); +int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx, int verbose); +void db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx); /* update.c */ -int db_update_job_start_record(B_DB *db, JOB_DBR *jr); -int db_update_job_end_record(B_DB *db, JOB_DBR *jr); -int db_update_pool_record(B_DB *db, POOL_DBR *pr); -int db_update_media_record(B_DB *db, MEDIA_DBR *mr); -int db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5); -int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId); +int db_update_job_start_record(void *jcr, B_DB *db, JOB_DBR *jr); +int db_update_job_end_record(void *jcr, B_DB *db, JOB_DBR *jr); +int db_update_pool_record(void *jcr, B_DB *db, POOL_DBR *pr); +int db_update_media_record(void *jcr, B_DB *db, MEDIA_DBR *mr); +int db_add_MD5_to_file_record(void *jcr, B_DB *mdb, FileId_t FileId, char *MD5); +int db_mark_file_record(void *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId); #endif /* __SQL_PROTOS_H */ diff --git a/bacula/src/cats/sql.c b/bacula/src/cats/sql.c index 7862f436f1..408a3f6900 100644 --- a/bacula/src/cats/sql.c +++ b/bacula/src/cats/sql.c @@ -64,8 +64,8 @@ static int int_handler(void *ctx, int num_fields, char **row) * calling subroutine sets and clears the mutex */ -/* Check that the tables conrrespond to the version we want */ -int check_tables_version(B_DB *mdb) +/* Check that the tables correspond to the version we want */ +int check_tables_version(void *jcr, B_DB *mdb) { uint32_t version; char *query = "SELECT VersionId FROM Version"; @@ -75,7 +75,7 @@ int check_tables_version(B_DB *mdb) if (version != BDB_VERSION) { Mmsg(&mdb->errmsg, "Version error for database \"%s\". Wanted %d, got %d\n", mdb->db_name, BDB_VERSION, version); - Jmsg(mdb->jcr, M_FATAL, 0, mdb->errmsg); + Jmsg(jcr, M_FATAL, 0, "%s", mdb->errmsg); return 0; } return 1; @@ -83,11 +83,11 @@ int check_tables_version(B_DB *mdb) /* Utility routine for queries */ int -QueryDB(char *file, int line, B_DB *mdb, char *cmd) +QueryDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd) { if (sql_query(mdb, cmd)) { m_msg(file, line, &mdb->errmsg, _("query %s failed:\n%s\n"), cmd, sql_strerror(mdb)); - j_msg(file, line, mdb->jcr, M_FATAL, 0, mdb->errmsg); + j_msg(file, line, jcr, M_FATAL, 0, "%s", mdb->errmsg); return 0; } mdb->result = sql_store_result(mdb); @@ -101,11 +101,11 @@ QueryDB(char *file, int line, B_DB *mdb, char *cmd) * 1 on success */ int -InsertDB(char *file, int line, B_DB *mdb, char *cmd) +InsertDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd) { if (sql_query(mdb, cmd)) { m_msg(file, line, &mdb->errmsg, _("insert %s failed:\n%s\n"), cmd, sql_strerror(mdb)); - j_msg(file, line, mdb->jcr, M_FATAL, 0, mdb->errmsg); + j_msg(file, line, jcr, M_FATAL, 0, "%s", mdb->errmsg); return 0; } if (mdb->have_insert_id) { @@ -128,13 +128,13 @@ InsertDB(char *file, int line, B_DB *mdb, char *cmd) * 1 on success */ int -UpdateDB(char *file, int line, B_DB *mdb, char *cmd) +UpdateDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd) { if (sql_query(mdb, cmd)) { m_msg(file, line, &mdb->errmsg, _("update %s failed:\n%s\n"), cmd, sql_strerror(mdb)); - j_msg(file, line, mdb->jcr, M_ERROR, 0, mdb->errmsg); - j_msg(file, line, mdb->jcr, M_ERROR, 0, "%s\n", cmd); + j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg); + j_msg(file, line, jcr, M_ERROR, 0, "%s\n", cmd); return 0; } mdb->num_rows = sql_affected_rows(mdb); @@ -154,12 +154,12 @@ UpdateDB(char *file, int line, B_DB *mdb, char *cmd) * n number of rows affected */ int -DeleteDB(char *file, int line, B_DB *mdb, char *cmd) +DeleteDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd) { if (sql_query(mdb, cmd)) { m_msg(file, line, &mdb->errmsg, _("delete %s failed:\n%s\n"), cmd, sql_strerror(mdb)); - j_msg(file, line, mdb->jcr, M_ERROR, 0, mdb->errmsg); + j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg); return -1; } mdb->changes++; @@ -174,12 +174,12 @@ DeleteDB(char *file, int line, B_DB *mdb, char *cmd) * Returns: -1 on failure * count on success */ -int get_sql_record_max(B_DB *mdb) +int get_sql_record_max(void *jcr, B_DB *mdb) { SQL_ROW row; int stat = 0; - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb)); stat = -1; @@ -203,7 +203,7 @@ void _db_lock(char *file, int line, B_DB *mdb) { int errstat; if ((errstat=rwl_writelock(&mdb->lock)) != 0) { - j_msg(file, line, mdb->jcr, M_ABORT, 0, "rwl_writelock failure. ERR=%s\n", + e_msg(file, line, M_ABORT, 0, "rwl_writelock failure. ERR=%s\n", strerror(errstat)); } } @@ -212,7 +212,7 @@ void _db_unlock(char *file, int line, B_DB *mdb) { int errstat; if ((errstat=rwl_writeunlock(&mdb->lock)) != 0) { - j_msg(file, line, mdb->jcr, M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n", + e_msg(file, line, M_ABORT, 0, "rwl_writeunlock failure. ERR=%s\n", strerror(errstat)); } } @@ -222,13 +222,13 @@ void _db_unlock(char *file, int line, B_DB *mdb) * much more efficient. Usually started when inserting * file attributes. */ -void db_start_transaction(B_DB *mdb) +void db_start_transaction(void *jcr, B_DB *mdb) { #ifdef xAVE_SQLITE db_lock(mdb); /* Allow only 10,000 changes per transaction */ if (mdb->transaction && mdb->changes > 10000) { - db_end_transaction(mdb); + db_end_transaction(jcr, mdb); } if (!mdb->transaction) { my_sqlite_query(mdb, "BEGIN"); /* begin transaction */ @@ -240,7 +240,7 @@ void db_start_transaction(B_DB *mdb) } -void db_end_transaction(B_DB *mdb) +void db_end_transaction(void *jcr, B_DB *mdb) { #ifdef xAVE_SQLITE db_lock(mdb); @@ -259,7 +259,7 @@ void db_end_transaction(B_DB *mdb) * and filename parts. They are returned in pool memory * in the mdb structure. */ -void split_path_and_filename(B_DB *mdb, char *fname) +void split_path_and_filename(void *jcr, B_DB *mdb, char *fname) { char *p, *f; @@ -303,7 +303,7 @@ void split_path_and_filename(B_DB *mdb, char *fname) mdb->path[mdb->pnl] = 0; } else { Mmsg1(&mdb->errmsg, _("Path length is zero. File=%s\n"), fname); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); mdb->path[0] = ' '; mdb->path[1] = 0; mdb->pnl = 1; diff --git a/bacula/src/cats/sql_create.c b/bacula/src/cats/sql_create.c index 286a638f70..242d813725 100644 --- a/bacula/src/cats/sql_create.c +++ b/bacula/src/cats/sql_create.c @@ -44,17 +44,17 @@ */ /* Forward referenced subroutines */ -static int db_create_file_record(B_DB *mdb, ATTR_DBR *ar); -static int db_create_filename_record(B_DB *mdb, ATTR_DBR *ar); -static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar); +static int db_create_file_record(void *jcr, B_DB *mdb, ATTR_DBR *ar); +static int db_create_filename_record(void *jcr, B_DB *mdb, ATTR_DBR *ar); +static int db_create_path_record(void *jcr, B_DB *mdb, ATTR_DBR *ar); /* Imported subroutines */ extern void print_dashes(B_DB *mdb); extern void print_result(B_DB *mdb); -extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd); -extern int InsertDB(char *file, int line, B_DB *db, char *select_cmd); -extern void split_path_and_filename(B_DB *mdb, char *fname); +extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd); +extern int InsertDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd); +extern void split_path_and_filename(void *jcr, B_DB *mdb, char *fname); /* Create a new record for the Job @@ -62,7 +62,7 @@ extern void split_path_and_filename(B_DB *mdb, char *fname); * 1 on success */ int -db_create_job_record(B_DB *mdb, JOB_DBR *jr) +db_create_job_record(void *jcr, B_DB *mdb, JOB_DBR *jr) { char dt[MAX_TIME_LENGTH]; time_t stime; @@ -79,7 +79,7 @@ db_create_job_record(B_DB *mdb, JOB_DBR *jr) JobTDate = (utime_t)stime; db_lock(mdb); - if (!db_next_index(mdb, "Job", JobId)) { + if (!db_next_index(jcr, mdb, "Job", JobId)) { jr->JobId = 0; db_unlock(mdb); return 0; @@ -91,7 +91,7 @@ db_create_job_record(B_DB *mdb, JOB_DBR *jr) JobId, jr->Job, jr->Name, (char)(jr->Type), (char)(jr->Level), (char)(jr->JobStatus), dt, edit_uint64(JobTDate, ed1)); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create DB Job record %s failed. ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); jr->JobId = 0; @@ -109,7 +109,7 @@ db_create_job_record(B_DB *mdb, JOB_DBR *jr) * 1 on success */ int -db_create_jobmedia_record(B_DB *mdb, JOBMEDIA_DBR *jm) +db_create_jobmedia_record(void *jcr, B_DB *mdb, JOBMEDIA_DBR *jm) { int stat; @@ -118,7 +118,7 @@ db_create_jobmedia_record(B_DB *mdb, JOBMEDIA_DBR *jm) JobId=%d AND MediaId=%d", jm->JobId, jm->MediaId); Dmsg0(30, mdb->cmd); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 0) { Mmsg0(&mdb->errmsg, _("Create JobMedia failed. Record already exists.\n")); @@ -139,7 +139,7 @@ VALUES (%u,%u,%u,%u,%u,%u,%u,%u)", jm->StartFile, jm->EndFile, jm->StartBlock, jm->EndBlock); Dmsg0(30, mdb->cmd); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create db JobMedia record %s failed. ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); stat = 0; @@ -158,7 +158,7 @@ VALUES (%u,%u,%u,%u,%u,%u,%u,%u)", * 1 on success */ int -db_create_pool_record(B_DB *mdb, POOL_DBR *pr) +db_create_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr) { int stat; char ed1[30], ed2[30], ed3[50]; @@ -168,7 +168,7 @@ db_create_pool_record(B_DB *mdb, POOL_DBR *pr) Mmsg(&mdb->cmd, "SELECT PoolId,Name FROM Pool WHERE Name='%s'", pr->Name); Dmsg1(200, "selectpool: %s\n", mdb->cmd); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); @@ -198,7 +198,7 @@ VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s','%s')", edit_uint64(pr->MaxVolBytes, ed3), pr->PoolType, pr->LabelFormat); Dmsg1(200, "Create Pool: %s\n", mdb->cmd); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); pr->PoolId = 0; @@ -219,7 +219,7 @@ VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s','%s')", * 1 on success */ int -db_create_media_record(B_DB *mdb, MEDIA_DBR *mr) +db_create_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr) { int stat; char ed1[30], ed2[30], ed3[30], ed4[30]; @@ -231,7 +231,7 @@ db_create_media_record(B_DB *mdb, MEDIA_DBR *mr) mr->VolumeName); Dmsg1(110, "selectpool: %s\n", mdb->cmd); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 0) { Mmsg1(&mdb->errmsg, _("Media record %s already exists\n"), mr->VolumeName); @@ -264,7 +264,7 @@ db_create_media_record(B_DB *mdb, MEDIA_DBR *mr) mr->Slot); Dmsg1(500, "Create Volume: %s\n", mdb->cmd); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create DB Media record %s failed. ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); stat = 0; @@ -283,7 +283,7 @@ db_create_media_record(B_DB *mdb, MEDIA_DBR *mr) * Returns: 0 on failure * 1 on success with id in cr->ClientId */ -int db_create_client_record(B_DB *mdb, CLIENT_DBR *cr) +int db_create_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cr) { SQL_ROW row; int stat; @@ -293,19 +293,19 @@ int db_create_client_record(B_DB *mdb, CLIENT_DBR *cr) Mmsg(&mdb->cmd, "SELECT ClientId,Uname FROM Client WHERE Name='%s'", cr->Name); cr->ClientId = 0; - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); /* If more than one, report error, but return first row */ if (mdb->num_rows > 1) { Mmsg1(&mdb->errmsg, _("More than one Client!: %d\n"), (int)(mdb->num_rows)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } if (mdb->num_rows >= 1) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("error fetching Client row: %s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); sql_free_result(mdb); db_unlock(mdb); return 0; @@ -330,10 +330,10 @@ FileRetention, JobRetention) VALUES \ edit_uint64(cr->FileRetention, ed1), edit_uint64(cr->JobRetention, ed2)); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create DB Client record %s failed. ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); cr->ClientId = 0; stat = 0; } else { @@ -351,7 +351,7 @@ FileRetention, JobRetention) VALUES \ * Returns: 0 on failure * 1 on success with FileSetId in record */ -int db_create_fileset_record(B_DB *mdb, FILESET_DBR *fsr) +int db_create_fileset_record(void *jcr, B_DB *mdb, FILESET_DBR *fsr) { SQL_ROW row; int stat; @@ -361,18 +361,18 @@ int db_create_fileset_record(B_DB *mdb, FILESET_DBR *fsr) FileSet='%s' and MD5='%s'", fsr->FileSet, fsr->MD5); fsr->FileSetId = 0; - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { Mmsg1(&mdb->errmsg, _("More than one FileSet!: %d\n"), (int)(mdb->num_rows)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } if (mdb->num_rows >= 1) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("error fetching FileSet row: ERR=%s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); sql_free_result(mdb); db_unlock(mdb); return 0; @@ -389,10 +389,10 @@ FileSet='%s' and MD5='%s'", fsr->FileSet, fsr->MD5); Mmsg(&mdb->cmd, "INSERT INTO FileSet (FileSet, MD5) VALUES \ ('%s', '%s')", fsr->FileSet, fsr->MD5); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create DB FileSet record %s failed. ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); fsr->FileSetId = 0; stat = 0; } else { @@ -435,7 +435,7 @@ FileSet='%s' and MD5='%s'", fsr->FileSet, fsr->MD5); * how many times it occurs. This is this subroutine, we separate * the file and the path and create three database records. */ -int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar) +int db_create_file_attributes_record(void *jcr, B_DB *mdb, ATTR_DBR *ar) { Dmsg1(100, "Fname=%s\n", ar->fname); @@ -445,29 +445,29 @@ int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar) */ if (!(ar->Stream == STREAM_UNIX_ATTRIBUTES || ar->Stream == STREAM_WIN32_ATTRIBUTES)) { Mmsg0(&mdb->errmsg, _("Attempt to put non-attributes into catalog\n")); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); return 0; } db_lock(mdb); - split_path_and_filename(mdb, ar->fname); + split_path_and_filename(jcr, mdb, ar->fname); - if (!db_create_filename_record(mdb, ar)) { + if (!db_create_filename_record(jcr, mdb, ar)) { db_unlock(mdb); return 0; } Dmsg1(100, "db_create_filename_record: %s\n", mdb->esc_name); - if (!db_create_path_record(mdb, ar)) { + if (!db_create_path_record(jcr, mdb, ar)) { db_unlock(mdb); return 0; } Dmsg1(100, "db_create_path_record\n", mdb->esc_name); /* Now create master File record */ - if (!db_create_file_record(mdb, ar)) { + if (!db_create_file_record(jcr, mdb, ar)) { db_unlock(mdb); return 0; } @@ -482,7 +482,7 @@ int db_create_file_attributes_record(B_DB *mdb, ATTR_DBR *ar) * This is the master File entry containing the attributes. * The filename and path records have already been created. */ -static int db_create_file_record(B_DB *mdb, ATTR_DBR *ar) +static int db_create_file_record(void *jcr, B_DB *mdb, ATTR_DBR *ar) { int stat; @@ -497,10 +497,10 @@ LStat, MD5) VALUES (%u, %u, %u, %u, '%s', '0')", ar->FileIndex, ar->JobId, ar->PathId, ar->FilenameId, ar->attr); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create db File record %s failed. ERR=%s"), mdb->cmd, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); ar->FileId = 0; stat = 0; } else { @@ -511,7 +511,7 @@ LStat, MD5) VALUES (%u, %u, %u, %u, '%s', '0')", } /* Create a Unique record for the Path -- no duplicates */ -static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar) +static int db_create_path_record(void *jcr, B_DB *mdb, ATTR_DBR *ar) { SQL_ROW row; int stat; @@ -527,20 +527,19 @@ static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar) Mmsg(&mdb->cmd, "SELECT PathId FROM Path WHERE Path='%s'", mdb->esc_name); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { char ed1[30]; Mmsg2(&mdb->errmsg, _("More than one Path!: %s for path: %s\n"), edit_uint64(mdb->num_rows, ed1), mdb->path); - sm_check(__FILE__, __LINE__, True); - Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg); } /* Even if there are multiple paths, take the first one */ if (mdb->num_rows >= 1) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); sql_free_result(mdb); ar->PathId = 0; ASSERT(ar->PathId); @@ -563,10 +562,10 @@ static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar) Mmsg(&mdb->cmd, "INSERT INTO Path (Path) VALUES ('%s')", mdb->esc_name); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create db Path record %s failed. ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); ar->PathId = 0; stat = 0; } else { @@ -584,29 +583,28 @@ static int db_create_path_record(B_DB *mdb, ATTR_DBR *ar) } /* Create a Unique record for the filename -- no duplicates */ -static int db_create_filename_record(B_DB *mdb, ATTR_DBR *ar) +static int db_create_filename_record(void *jcr, B_DB *mdb, ATTR_DBR *ar) { SQL_ROW row; mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->fnl+2); db_escape_string(mdb->esc_name, mdb->fname, mdb->fnl); - sm_check(__FILE__, __LINE__, True); Mmsg(&mdb->cmd, "SELECT FilenameId FROM Filename WHERE Name='%s'", mdb->esc_name); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { char ed1[30]; Mmsg2(&mdb->errmsg, _("More than one Filename! %s for file: %s\n"), edit_uint64(mdb->num_rows, ed1), mdb->fname); - Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg); } if (mdb->num_rows >= 1) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg2(&mdb->errmsg, _("Error fetching row for file=%s: ERR=%s\n"), mdb->fname, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); ar->FilenameId = 0; } else { ar->FilenameId = atoi(row[0]); @@ -619,10 +617,10 @@ static int db_create_filename_record(B_DB *mdb, ATTR_DBR *ar) Mmsg(&mdb->cmd, "INSERT INTO Filename (Name) VALUES ('%s')", mdb->esc_name); - if (!INSERT_DB(mdb, mdb->cmd)) { + if (!INSERT_DB(jcr, mdb, mdb->cmd)) { Mmsg2(&mdb->errmsg, _("Create db Filename record %s failed. ERR=%s\n"), mdb->cmd, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); ar->FilenameId = 0; } else { ar->FilenameId = sql_insert_id(mdb); diff --git a/bacula/src/cats/sql_delete.c b/bacula/src/cats/sql_delete.c index e2a8ee658f..244b0b3411 100644 --- a/bacula/src/cats/sql_delete.c +++ b/bacula/src/cats/sql_delete.c @@ -48,8 +48,8 @@ /* Imported subroutines */ extern void print_dashes(B_DB *mdb); extern void print_result(B_DB *mdb); -extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd); -extern int DeleteDB(char *file, int line, B_DB *db, char *delete_cmd); +extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd); +extern int DeleteDB(char *file, int line, void *jcr, B_DB *db, char *delete_cmd); /* * Delete Pool record, must also delete all associated @@ -61,7 +61,7 @@ extern int DeleteDB(char *file, int line, B_DB *db, char *delete_cmd); * NumVols = number of Media records deleted */ int -db_delete_pool_record(B_DB *mdb, POOL_DBR *pr) +db_delete_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr) { SQL_ROW row; @@ -71,7 +71,7 @@ db_delete_pool_record(B_DB *mdb, POOL_DBR *pr) pr->PoolId = pr->NumVols = 0; - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); @@ -99,13 +99,13 @@ db_delete_pool_record(B_DB *mdb, POOL_DBR *pr) Mmsg(&mdb->cmd, "DELETE FROM Media WHERE Media.PoolId = %d", pr->PoolId); - pr->NumVols = DELETE_DB(mdb, mdb->cmd); + pr->NumVols = DELETE_DB(jcr, mdb, mdb->cmd); Dmsg1(200, "Deleted %d Media records\n", pr->NumVols); /* Delete Pool */ Mmsg(&mdb->cmd, "DELETE FROM Pool WHERE Pool.PoolId = %d", pr->PoolId); - pr->PoolId = DELETE_DB(mdb, mdb->cmd); + pr->PoolId = DELETE_DB(jcr, mdb, mdb->cmd); Dmsg1(200, "Deleted %d Pool records\n", pr->PoolId); db_unlock(mdb); @@ -188,9 +188,9 @@ static int do_media_purge(B_DB *mdb, MEDIA_DBR *mr) /* Delete Media record and all records that * are associated with it. */ -int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr) +int db_delete_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr) { - if (mr->MediaId == 0 && !db_get_media_record(mdb, mr)) { + if (mr->MediaId == 0 && !db_get_media_record(jcr, mdb, mr)) { return 0; } /* Delete associated records */ @@ -207,9 +207,9 @@ int db_delete_media_record(B_DB *mdb, MEDIA_DBR *mr) * media record itself. But the media status * is changed to "Purged". */ -int db_purge_media_record(B_DB *mdb, MEDIA_DBR *mr) +int db_purge_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr) { - if (mr->MediaId == 0 && !db_get_media_record(mdb, mr)) { + if (mr->MediaId == 0 && !db_get_media_record(jcr, mdb, mr)) { return 0; } /* Delete associated records */ @@ -217,7 +217,7 @@ int db_purge_media_record(B_DB *mdb, MEDIA_DBR *mr) /* Mark Volume as purged */ strcpy(mr->VolStatus, "Purged"); - if (!db_update_media_record(mdb, mr)) { + if (!db_update_media_record(jcr, mdb, mr)) { return 0; } diff --git a/bacula/src/cats/sql_find.c b/bacula/src/cats/sql_find.c index 85b8b1c2e6..1a52dd7a5a 100644 --- a/bacula/src/cats/sql_find.c +++ b/bacula/src/cats/sql_find.c @@ -50,7 +50,7 @@ /* Imported subroutines */ extern void print_result(B_DB *mdb); -extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd); +extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd); /* * Find job start time. Used to find last full save @@ -60,7 +60,7 @@ extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd); * 1 on success, jr is unchanged, but stime is set */ int -db_find_job_start_time(B_DB *mdb, JOB_DBR *jr, POOLMEM **stime) +db_find_job_start_time(void *jcr, B_DB *mdb, JOB_DBR *jr, POOLMEM **stime) { SQL_ROW row; int JobId; @@ -90,7 +90,7 @@ ORDER BY StartTime DESC LIMIT 1", return 0; } Dmsg1(100, "Submitting: %s\n", mdb->cmd); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { Mmsg1(&mdb->errmsg, _("Query error for start time request: %s\n"), mdb->cmd); db_unlock(mdb); return 0; @@ -109,7 +109,7 @@ ORDER BY StartTime DESC LIMIT 1", Dmsg1(100, "Submitting: %s\n", mdb->cmd); Mmsg(&mdb->cmd, "SELECT StartTime FROM Job WHERE Job.JobId=%d", JobId); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { Mmsg1(&mdb->errmsg, _("Query error for start time request: %s\n"), mdb->cmd); db_unlock(mdb); return 0; @@ -140,7 +140,7 @@ ORDER BY StartTime DESC LIMIT 1", * 0 on failure */ int -db_find_last_jobid(B_DB *mdb, JOB_DBR *jr) +db_find_last_jobid(void *jcr, B_DB *mdb, JOB_DBR *jr) { SQL_ROW row; @@ -162,7 +162,7 @@ ClientId=%d ORDER BY StartTime DESC LIMIT 1", return 0; } - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return 0; } @@ -196,7 +196,7 @@ ClientId=%d ORDER BY StartTime DESC LIMIT 1", * numrows on success */ int -db_find_next_volume(B_DB *mdb, int item, MEDIA_DBR *mr) +db_find_next_volume(void *jcr, B_DB *mdb, int item, MEDIA_DBR *mr) { SQL_ROW row; int numrows; @@ -209,7 +209,7 @@ FirstWritten,LastWritten \ FROM Media WHERE PoolId=%d AND MediaType='%s' AND VolStatus='%s' \ ORDER BY MediaId", mr->PoolId, mr->MediaType, mr->VolStatus); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return 0; } diff --git a/bacula/src/cats/sql_get.c b/bacula/src/cats/sql_get.c index 886817b28c..3568f1bf04 100644 --- a/bacula/src/cats/sql_get.c +++ b/bacula/src/cats/sql_get.c @@ -48,15 +48,15 @@ */ /* Forward referenced functions */ -static int db_get_file_record(B_DB *mdb, FILE_DBR *fdbr); -static int db_get_filename_record(B_DB *mdb); -static int db_get_path_record(B_DB *mdb); +static int db_get_file_record(void *jcr, B_DB *mdb, FILE_DBR *fdbr); +static int db_get_filename_record(void *jcr, B_DB *mdb); +static int db_get_path_record(void *jcr, B_DB *mdb); /* Imported subroutines */ extern void print_result(B_DB *mdb); -extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd); -extern void split_path_and_filename(B_DB *mdb, char *fname); +extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd); +extern void split_path_and_filename(void *jcr, B_DB *mdb, char *fname); @@ -67,19 +67,19 @@ extern void split_path_and_filename(B_DB *mdb, char *fname); * Returns: 0 on failure * 1 on success with the File record in FILE_DBR */ -int db_get_file_attributes_record(B_DB *mdb, char *fname, FILE_DBR *fdbr) +int db_get_file_attributes_record(void *jcr, B_DB *mdb, char *fname, FILE_DBR *fdbr) { int stat; Dmsg1(20, "Enter get_file_from_catalog fname=%s \n", fname); db_lock(mdb); - split_path_and_filename(mdb, fname); + split_path_and_filename(jcr, mdb, fname); - fdbr->FilenameId = db_get_filename_record(mdb); + fdbr->FilenameId = db_get_filename_record(jcr, mdb); - fdbr->PathId = db_get_path_record(mdb); + fdbr->PathId = db_get_path_record(jcr, mdb); - stat = db_get_file_record(mdb, fdbr); + stat = db_get_file_record(jcr, mdb, fdbr); db_unlock(mdb); @@ -99,7 +99,7 @@ int db_get_file_attributes_record(B_DB *mdb, char *fname, FILE_DBR *fdbr) * "normal" if a new file is found during Verify. */ static -int db_get_file_record(B_DB *mdb, FILE_DBR *fdbr) +int db_get_file_record(void *jcr, B_DB *mdb, FILE_DBR *fdbr) { SQL_ROW row; int stat = 0; @@ -113,7 +113,7 @@ File.FilenameId=%u", fdbr->JobId, fdbr->PathId, fdbr->FilenameId); Dmsg1(100, "Query=%s\n", mdb->cmd); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); Dmsg1(050, "get_file_record num_rows=%d\n", (int)mdb->num_rows); @@ -147,17 +147,16 @@ File.FilenameId=%u", fdbr->JobId, fdbr->PathId, fdbr->FilenameId); * * DO NOT use Jmsg in this routine (see notes for get_file_record) */ -static int db_get_filename_record(B_DB *mdb) +static int db_get_filename_record(void *jcr, B_DB *mdb) { SQL_ROW row; int FilenameId = 0; mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->fnl+2); db_escape_string(mdb->esc_name, mdb->fname, mdb->fnl); - sm_check(__FILE__, __LINE__, True); Mmsg(&mdb->cmd, "SELECT FilenameId FROM Filename WHERE Name='%s'", mdb->esc_name); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { char ed1[30]; mdb->num_rows = sql_num_rows(mdb); @@ -165,7 +164,7 @@ static int db_get_filename_record(B_DB *mdb) if (mdb->num_rows > 1) { Mmsg2(&mdb->errmsg, _("More than one Filename!: %s for file: %s\n"), edit_uint64(mdb->num_rows, ed1), mdb->fname); - Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg); } if (mdb->num_rows >= 1) { if ((row = sql_fetch_row(mdb)) == NULL) { @@ -192,14 +191,13 @@ static int db_get_filename_record(B_DB *mdb) * * DO NOT use Jmsg in this routine (see notes for get_file_record) */ -static int db_get_path_record(B_DB *mdb) +static int db_get_path_record(void *jcr, B_DB *mdb) { SQL_ROW row; uint32_t PathId = 0; mdb->esc_name = check_pool_memory_size(mdb->esc_name, 2*mdb->pnl+2); db_escape_string(mdb->esc_name, mdb->path, mdb->pnl); - sm_check(__FILE__, __LINE__, True); if (mdb->cached_path_id != 0 && mdb->cached_path_len == mdb->pnl && strcmp(mdb->cached_path, mdb->path) == 0) { @@ -208,14 +206,14 @@ static int db_get_path_record(B_DB *mdb) Mmsg(&mdb->cmd, "SELECT PathId FROM Path WHERE Path='%s'", mdb->esc_name); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { char ed1[30]; mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { Mmsg2(&mdb->errmsg, _("More than one Path!: %s for path: %s\n"), edit_uint64(mdb->num_rows, ed1), mdb->path); - Jmsg(mdb->jcr, M_WARNING, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_WARNING, 0, "%s", mdb->errmsg); } /* Even if there are multiple paths, take the first one */ if (mdb->num_rows >= 1) { @@ -250,7 +248,7 @@ static int db_get_path_record(B_DB *mdb) * Returns: 0 on failure * 1 on success */ -int db_get_job_record(B_DB *mdb, JOB_DBR *jr) +int db_get_job_record(void *jcr, B_DB *mdb, JOB_DBR *jr) { SQL_ROW row; @@ -267,7 +265,7 @@ Type,Level \ FROM Job WHERE JobId=%u", jr->JobId); } - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return 0; /* failed */ } @@ -305,7 +303,7 @@ FROM Job WHERE JobId=%u", jr->JobId); * * Returns: number of volumes on success */ -int db_get_job_volume_names(B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames) +int db_get_job_volume_names(void *jcr, B_DB *mdb, uint32_t JobId, POOLMEM **VolumeNames) { SQL_ROW row; int stat = 0; @@ -318,7 +316,7 @@ AND JobMedia.MediaId=Media.MediaId", JobId); Dmsg1(130, "VolNam=%s\n", mdb->cmd); *VolumeNames[0] = 0; - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); Dmsg1(130, "Num rows=%d\n", mdb->num_rows); if (mdb->num_rows <= 0) { @@ -329,7 +327,7 @@ AND JobMedia.MediaId=Media.MediaId", JobId); for (i=0; i < stat; i++) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg2(&mdb->errmsg, _("Error fetching row %d: ERR=%s\n"), i, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); stat = 0; break; } else { @@ -354,7 +352,7 @@ AND JobMedia.MediaId=Media.MediaId", JobId); * * Returns: number of volumes on success */ -int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams) +int db_get_job_volume_parameters(void *jcr, B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolParams) { SQL_ROW row; int stat = 0; @@ -368,7 +366,7 @@ int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolPara " AND JobMedia.MediaId=Media.MediaId", JobId); Dmsg1(130, "VolNam=%s\n", mdb->cmd); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); Dmsg1(130, "Num rows=%d\n", mdb->num_rows); if (mdb->num_rows <= 0) { @@ -382,7 +380,7 @@ int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolPara for (i=0; i < stat; i++) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg2(&mdb->errmsg, _("Error fetching row %d: ERR=%s\n"), i, sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); stat = 0; break; } else { @@ -410,13 +408,13 @@ int db_get_job_volume_parameters(B_DB *mdb, uint32_t JobId, VOL_PARAMS **VolPara * Returns: -1 on failure * number on success */ -int db_get_num_pool_records(B_DB *mdb) +int db_get_num_pool_records(void *jcr, B_DB *mdb) { int stat = 0; db_lock(mdb); Mmsg(&mdb->cmd, "SELECT count(*) from Pool"); - stat = get_sql_record_max(mdb); + stat = get_sql_record_max(jcr, mdb); db_unlock(mdb); return stat; } @@ -428,7 +426,7 @@ int db_get_num_pool_records(B_DB *mdb) * Returns 0: on failure * 1: on success */ -int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) +int db_get_pool_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[]) { SQL_ROW row; int stat = 0; @@ -438,7 +436,7 @@ int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) db_lock(mdb); *ids = NULL; Mmsg(&mdb->cmd, "SELECT PoolId FROM Pool"); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { *num_ids = sql_num_rows(mdb); if (*num_ids > 0) { id = (uint32_t *)malloc(*num_ids * sizeof(uint32_t)); @@ -451,7 +449,7 @@ int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) stat = 1; } else { Mmsg(&mdb->errmsg, _("Pool id select failed: ERR=%s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); stat = 0; } db_unlock(mdb); @@ -465,7 +463,7 @@ int db_get_pool_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) * Returns 0: on failure * 1: on success */ -int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) +int db_get_client_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[]) { SQL_ROW row; int stat = 0; @@ -475,7 +473,7 @@ int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) db_lock(mdb); *ids = NULL; Mmsg(&mdb->cmd, "SELECT ClientId FROM Client"); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { *num_ids = sql_num_rows(mdb); if (*num_ids > 0) { id = (uint32_t *)malloc(*num_ids * sizeof(uint32_t)); @@ -488,7 +486,7 @@ int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) stat = 1; } else { Mmsg(&mdb->errmsg, _("Client id select failed: ERR=%s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); stat = 0; } db_unlock(mdb); @@ -504,7 +502,7 @@ int db_get_client_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) * Returns: 0 on failure * id on success */ -int db_get_pool_record(B_DB *mdb, POOL_DBR *pdbr) +int db_get_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pdbr) { SQL_ROW row; int stat = 0; @@ -522,17 +520,17 @@ AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,\ MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name); } - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { char ed1[30]; Mmsg1(&mdb->errmsg, _("More than one Pool!: %s\n"), edit_uint64(mdb->num_rows, ed1)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } else if (mdb->num_rows == 1) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } else { pdbr->PoolId = str_to_int64(row[0]); bstrncpy(pdbr->Name, row[1]!=NULL?row[1]:"", sizeof(pdbr->Name)); @@ -566,7 +564,7 @@ MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name); * Returns: 0 on failure * 1 on success */ -int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr) +int db_get_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cdbr) { SQL_ROW row; int stat = 0; @@ -582,17 +580,17 @@ int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr) "FROM Client WHERE Client.Name='%s'", cdbr->Name); } - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { char ed1[30]; Mmsg1(&mdb->errmsg, _("More than one Client!: %s\n"), edit_uint64(mdb->num_rows, ed1)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } else if (mdb->num_rows == 1) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } else { cdbr->ClientId = str_to_int64(row[0]); bstrncpy(cdbr->Name, row[1]!=NULL?row[1]:"", sizeof(cdbr->Name)); @@ -617,7 +615,7 @@ int db_get_client_record(B_DB *mdb, CLIENT_DBR *cdbr) * Returns: 0 on failure * id on success */ -int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr) +int db_get_fileset_record(void *jcr, B_DB *mdb, FILESET_DBR *fsr) { SQL_ROW row; int stat = 0; @@ -633,7 +631,7 @@ int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr) "WHERE FileSet='%s'", fsr->FileSet); } - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { char ed1[30]; @@ -662,13 +660,13 @@ int db_get_fileset_record(B_DB *mdb, FILESET_DBR *fsr) * Returns: -1 on failure * number on success */ -int db_get_num_media_records(B_DB *mdb) +int db_get_num_media_records(void *jcr, B_DB *mdb) { int stat = 0; db_lock(mdb); Mmsg(&mdb->cmd, "SELECT count(*) from Media"); - stat = get_sql_record_max(mdb); + stat = get_sql_record_max(jcr, mdb); db_unlock(mdb); return stat; } @@ -681,7 +679,7 @@ int db_get_num_media_records(B_DB *mdb) * Returns 0: on failure * 1: on success */ -int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) +int db_get_media_ids(void *jcr, B_DB *mdb, int *num_ids, uint32_t *ids[]) { SQL_ROW row; int stat = 0; @@ -691,7 +689,7 @@ int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) db_lock(mdb); *ids = NULL; Mmsg(&mdb->cmd, "SELECT MediaId FROM Media"); - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { *num_ids = sql_num_rows(mdb); if (*num_ids > 0) { id = (uint32_t *)malloc(*num_ids * sizeof(uint32_t)); @@ -704,7 +702,7 @@ int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) stat = 1; } else { Mmsg(&mdb->errmsg, _("Media id select failed: ERR=%s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); stat = 0; } db_unlock(mdb); @@ -717,7 +715,7 @@ int db_get_media_ids(B_DB *mdb, int *num_ids, uint32_t *ids[]) * Returns: 0 on failure * id on success */ -int db_get_media_record(B_DB *mdb, MEDIA_DBR *mr) +int db_get_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr) { SQL_ROW row; int stat = 0; @@ -725,7 +723,7 @@ int db_get_media_record(B_DB *mdb, MEDIA_DBR *mr) db_lock(mdb); if (mr->MediaId == 0 && mr->VolumeName[0] == 0) { Mmsg(&mdb->cmd, "SELECT count(*) from Media"); - mr->MediaId = get_sql_record_max(mdb); + mr->MediaId = get_sql_record_max(jcr, mdb); db_unlock(mdb); return 1; } @@ -743,17 +741,17 @@ Recycle,Slot,FirstWritten,LastWritten \ FROM Media WHERE VolumeName='%s'", mr->VolumeName); } - if (QUERY_DB(mdb, mdb->cmd)) { + if (QUERY_DB(jcr, mdb, mdb->cmd)) { mdb->num_rows = sql_num_rows(mdb); if (mdb->num_rows > 1) { char ed1[30]; Mmsg1(&mdb->errmsg, _("More than one Volume!: %s\n"), edit_uint64(mdb->num_rows, ed1)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } else if (mdb->num_rows == 1) { if ((row = sql_fetch_row(mdb)) == NULL) { Mmsg1(&mdb->errmsg, _("error fetching row: %s\n"), sql_strerror(mdb)); - Jmsg(mdb->jcr, M_ERROR, 0, "%s", mdb->errmsg); + Jmsg(jcr, M_ERROR, 0, "%s", mdb->errmsg); } else { /* return values */ mr->MediaId = str_to_int64(row[0]); diff --git a/bacula/src/cats/sql_list.c b/bacula/src/cats/sql_list.c index 48b475871a..58676a0e5b 100644 --- a/bacula/src/cats/sql_list.c +++ b/bacula/src/cats/sql_list.c @@ -45,14 +45,14 @@ /* Imported subroutines */ extern void list_result(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx); -extern int QueryDB(char *file, int line, B_DB *db, char *select_cmd); +extern int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd); /* * Submit general SQL query */ -int db_list_sql_query(B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx, - int verbose) +int db_list_sql_query(void *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, + void *ctx, int verbose) { db_lock(mdb); if (sql_query(mdb, query) != 0) { @@ -75,13 +75,13 @@ int db_list_sql_query(B_DB *mdb, char *query, DB_LIST_HANDLER *sendit, void *ctx } void -db_list_pool_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) +db_list_pool_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) { Mmsg(&mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat " "FROM Pool ORDER BY PoolId"); db_lock(mdb); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } @@ -93,13 +93,13 @@ db_list_pool_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) } void -db_list_client_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) +db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) { Mmsg(&mdb->cmd, "SELECT ClientId,Name,FileRetention,JobRetention " "FROM Client ORDER BY ClientId"); db_lock(mdb); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } @@ -112,14 +112,14 @@ db_list_client_records(B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx) void -db_list_media_records(B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx) +db_list_media_records(void *jcr, B_DB *mdb, MEDIA_DBR *mdbr, DB_LIST_HANDLER *sendit, void *ctx) { Mmsg(&mdb->cmd, "SELECT MediaId,VolumeName,MediaType,VolStatus,\ VolBytes,LastWritten,VolRetention,Recycle,Slot \ FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId); db_lock(mdb); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } @@ -130,7 +130,7 @@ FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId); db_unlock(mdb); } -void db_list_jobmedia_records(B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx) +void db_list_jobmedia_records(void *jcr, B_DB *mdb, uint32_t JobId, DB_LIST_HANDLER *sendit, void *ctx) { if (JobId > 0) { /* do by JobId */ Mmsg(&mdb->cmd, "SELECT JobId, Media.VolumeName, FirstIndex, LastIndex \ @@ -142,7 +142,7 @@ FROM JobMedia, Media WHERE Media.MediaId=JobMedia.MediaId"); } db_lock(mdb); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } @@ -162,7 +162,7 @@ FROM JobMedia, Media WHERE Media.MediaId=JobMedia.MediaId"); * only the job with the specified id. */ void -db_list_job_records(B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx) +db_list_job_records(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx) { if (jr->JobId == 0 && jr->Job[0] == 0) { Mmsg(&mdb->cmd, @@ -174,7 +174,7 @@ JobFiles,JobBytes,JobStatus FROM Job WHERE Job.JobId=%u", jr->JobId); } db_lock(mdb); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } @@ -190,7 +190,7 @@ JobFiles,JobBytes,JobStatus FROM Job WHERE Job.JobId=%u", jr->JobId); * */ void -db_list_job_totals(B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx) +db_list_job_totals(void *jcr, B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx) { db_lock(mdb); @@ -198,7 +198,7 @@ db_list_job_totals(B_DB *mdb, JOB_DBR *jr, DB_LIST_HANDLER *sendit, void *ctx) Mmsg(&mdb->cmd, "SELECT count(*) AS Jobs, sum(JobFiles) \ AS Files, sum(JobBytes) AS Bytes, Name AS Job FROM Job GROUP BY Name"); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } @@ -211,7 +211,7 @@ AS Files, sum(JobBytes) AS Bytes, Name AS Job FROM Job GROUP BY Name"); Mmsg(&mdb->cmd, "SELECT count(*) AS Jobs,sum(JobFiles) \ AS Files,sum(JobBytes) As Bytes FROM Job"); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } @@ -224,7 +224,7 @@ AS Files,sum(JobBytes) As Bytes FROM Job"); void -db_list_files_for_job(B_DB *mdb, uint32_t jobid, DB_LIST_HANDLER *sendit, void *ctx) +db_list_files_for_job(void *jcr, B_DB *mdb, uint32_t jobid, DB_LIST_HANDLER *sendit, void *ctx) { Mmsg(&mdb->cmd, "SELECT Path.Path,Filename.Name FROM File,\ @@ -233,7 +233,7 @@ AND Path.PathId=File.PathId", jobid); db_lock(mdb); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { db_unlock(mdb); return; } diff --git a/bacula/src/cats/sql_update.c b/bacula/src/cats/sql_update.c index e2c3b36c93..0029261496 100644 --- a/bacula/src/cats/sql_update.c +++ b/bacula/src/cats/sql_update.c @@ -45,7 +45,7 @@ /* Imported subroutines */ extern void print_result(B_DB *mdb); -extern int UpdateDB(char *file, int line, B_DB *db, char *update_cmd); +extern int UpdateDB(char *file, int line, void *jcr, B_DB *db, char *update_cmd); /* ----------------------------------------------------------------------- * @@ -55,13 +55,13 @@ extern int UpdateDB(char *file, int line, B_DB *db, char *update_cmd); */ /* Update the attributes record by adding the MD5 signature */ int -db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5) +db_add_MD5_to_file_record(void *jcr, B_DB *mdb, FileId_t FileId, char *MD5) { int stat; db_lock(mdb); Mmsg(&mdb->cmd, "UPDATE File SET MD5='%s' WHERE FileId=%u", MD5, FileId); - stat = UPDATE_DB(mdb, mdb->cmd); + stat = UPDATE_DB(jcr, mdb, mdb->cmd); db_unlock(mdb); return stat; } @@ -69,13 +69,13 @@ db_add_MD5_to_file_record(B_DB *mdb, FileId_t FileId, char *MD5) /* Mark the file record as being visited during database * verify compare. Stuff JobId into MarkedId field */ -int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId) +int db_mark_file_record(void *jcr, B_DB *mdb, FileId_t FileId, JobId_t JobId) { int stat; db_lock(mdb); Mmsg(&mdb->cmd, "UPDATE File SET MarkId=%u WHERE FileId=%u", JobId, FileId); - stat = UPDATE_DB(mdb, mdb->cmd); + stat = UPDATE_DB(jcr, mdb, mdb->cmd); db_unlock(mdb); return stat; } @@ -87,7 +87,7 @@ int db_mark_file_record(B_DB *mdb, FileId_t FileId, JobId_t JobId) * 1 on success */ int -db_update_job_start_record(B_DB *mdb, JOB_DBR *jr) +db_update_job_start_record(void *jcr, B_DB *mdb, JOB_DBR *jr) { char dt[MAX_TIME_LENGTH]; time_t stime; @@ -105,7 +105,7 @@ db_update_job_start_record(B_DB *mdb, JOB_DBR *jr) Mmsg(&mdb->cmd, "UPDATE Job SET Level='%c', StartTime='%s', \ ClientId=%u, JobTDate=%s WHERE JobId=%u", (char)(jr->Level), dt, jr->ClientId, edit_uint64(JobTDate, ed1), jr->JobId); - stat = UPDATE_DB(mdb, mdb->cmd); + stat = UPDATE_DB(jcr, mdb, mdb->cmd); db_unlock(mdb); mdb->changes = 0; return stat; @@ -120,7 +120,7 @@ ClientId=%u, JobTDate=%s WHERE JobId=%u", * 1 on success */ int -db_update_job_end_record(B_DB *mdb, JOB_DBR *jr) +db_update_job_end_record(void *jcr, B_DB *mdb, JOB_DBR *jr) { char dt[MAX_TIME_LENGTH]; time_t ttime; @@ -143,14 +143,14 @@ VolSessionTime=%u, PoolId=%u, FileSetId=%u, JobTDate=%s WHERE JobId=%u", jr->JobFiles, jr->JobErrors, jr->VolSessionId, jr->VolSessionTime, jr->PoolId, jr->FileSetId, edit_uint64(JobTDate, ed2), jr->JobId); - stat = UPDATE_DB(mdb, mdb->cmd); + stat = UPDATE_DB(jcr, mdb, mdb->cmd); db_unlock(mdb); return stat; } int -db_update_pool_record(B_DB *mdb, POOL_DBR *pr) +db_update_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr) { int stat; char ed1[50], ed2[50], ed3[50]; @@ -169,7 +169,7 @@ db_update_pool_record(B_DB *mdb, POOL_DBR *pr) pr->Recycle, pr->AutoPrune, pr->LabelFormat, pr->PoolId); - stat = UPDATE_DB(mdb, mdb->cmd); + stat = UPDATE_DB(jcr, mdb, mdb->cmd); db_unlock(mdb); return stat; } @@ -181,7 +181,7 @@ db_update_pool_record(B_DB *mdb, POOL_DBR *pr) * numrows on success */ int -db_update_media_record(B_DB *mdb, MEDIA_DBR *mr) +db_update_media_record(void *jcr, B_DB *mdb, MEDIA_DBR *mr) { char dt[MAX_TIME_LENGTH]; time_t ttime; @@ -199,7 +199,7 @@ db_update_media_record(B_DB *mdb, MEDIA_DBR *mr) strftime(dt, sizeof(dt), "%Y-%m-%d %T", &tm); Mmsg(&mdb->cmd, "UPDATE Media SET FirstWritten='%s'\ WHERE VolumeName='%s'", dt, mr->VolumeName); - stat = UPDATE_DB(mdb, mdb->cmd); + stat = UPDATE_DB(jcr, mdb, mdb->cmd); Dmsg1(400, "Firstwritten stat=%d\n", stat); } @@ -216,11 +216,9 @@ db_update_media_record(B_DB *mdb, MEDIA_DBR *mr) edit_uint64(mr->MaxVolBytes, ed2), dt, mr->VolStatus, mr->Slot, mr->VolumeName); - sm_check(__FILE__, __LINE__, True); - Dmsg1(400, "%s\n", mdb->cmd); - stat = UPDATE_DB(mdb, mdb->cmd); + stat = UPDATE_DB(jcr, mdb, mdb->cmd); db_unlock(mdb); return stat; } diff --git a/bacula/src/cats/sqlite.c b/bacula/src/cats/sqlite.c index 007ddfc9aa..18cf9128a3 100644 --- a/bacula/src/cats/sqlite.c +++ b/bacula/src/cats/sqlite.c @@ -51,7 +51,7 @@ static BQUEUE db_list = {&db_list, &db_list}; static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; -int QueryDB(char *file, int line, B_DB *db, char *select_cmd); +int QueryDB(char *file, int line, void *jcr, B_DB *db, char *select_cmd); /* @@ -88,7 +88,6 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password) mdb->path = get_pool_memory(PM_FNAME); mdb->esc_name = get_pool_memory(PM_FNAME); qinsert(&db_list, &mdb->bq); /* put db in list */ - mdb->jcr = jcr; V(mutex); return mdb; } @@ -98,7 +97,7 @@ db_init_database(void *jcr, char *db_name, char *db_user, char *db_password) * which are returned in the errmsg */ int -db_open_database(B_DB *mdb) +db_open_database(void *jcr, B_DB *mdb) { char *db_name; int len; @@ -148,7 +147,7 @@ db_open_database(B_DB *mdb) return 0; } free(db_name); - if (!check_tables_version(mdb)) { + if (!check_tables_version(jcr, mdb)) { V(mutex); return 0; } @@ -159,7 +158,7 @@ db_open_database(B_DB *mdb) } void -db_close_database(B_DB *mdb) +db_close_database(void *jcr, B_DB *mdb) { P(mutex); mdb->ref_count--; @@ -187,7 +186,7 @@ db_close_database(B_DB *mdb) * Return the next unique index (auto-increment) for * the given table. Return 0 on error. */ -int db_next_index(B_DB *mdb, char *table, char *index) +int db_next_index(void *jcr, B_DB *mdb, char *table, char *index) { SQL_ROW row; @@ -195,7 +194,7 @@ int db_next_index(B_DB *mdb, char *table, char *index) Mmsg(&mdb->cmd, "SELECT id FROM NextId WHERE TableName=\"%s\"", table); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { Mmsg(&mdb->errmsg, _("next_index query error: ERR=%s\n"), sql_strerror(mdb)); db_unlock(mdb); return 0; @@ -210,7 +209,7 @@ int db_next_index(B_DB *mdb, char *table, char *index) Mmsg(&mdb->cmd, "UPDATE NextId SET id=id+1 WHERE TableName=\"%s\"", table); - if (!QUERY_DB(mdb, mdb->cmd)) { + if (!QUERY_DB(jcr, mdb, mdb->cmd)) { Mmsg(&mdb->errmsg, _("next_index update error: ERR=%s\n"), sql_strerror(mdb)); db_unlock(mdb); return 0; diff --git a/bacula/src/dird/autoprune.c b/bacula/src/dird/autoprune.c index 483e796cc4..bdc6142085 100644 --- a/bacula/src/dird/autoprune.c +++ b/bacula/src/dird/autoprune.c @@ -120,7 +120,7 @@ int prune_volumes(JCR *jcr) db_lock(jcr->db); pr.PoolId = jcr->PoolId; - if (!db_get_pool_record(jcr->db, &pr) || !db_get_media_ids(jcr->db, &num_ids, &ids)) { + if (!db_get_pool_record(jcr, jcr->db, &pr) || !db_get_media_ids(jcr, jcr->db, &num_ids, &ids)) { Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db)); goto bail_out; } @@ -128,7 +128,7 @@ int prune_volumes(JCR *jcr) for (i=0; idb, &mr)) { + if (!db_get_media_record(jcr, jcr->db, &mr)) { Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db)); continue; } diff --git a/bacula/src/dird/backup.c b/bacula/src/dird/backup.c index ad547fa7b1..900a8628b1 100644 --- a/bacula/src/dird/backup.c +++ b/bacula/src/dird/backup.c @@ -96,7 +96,7 @@ int do_backup(JCR *jcr) } else { Jmsg(jcr, M_WARNING, 0, _("FileSet MD5 signature not found.\n")); } - if (!db_create_fileset_record(jcr->db, &fsr)) { + if (!db_create_fileset_record(jcr, jcr->db, &fsr)) { Jmsg(jcr, M_ERROR, 0, _("Could not create FileSet record. ERR=%s\n"), db_strerror(jcr->db)); goto bail_out; @@ -117,7 +117,7 @@ int do_backup(JCR *jcr) case L_INCREMENTAL: /* Look up start time of last job */ jcr->jr.JobId = 0; - if (!db_find_job_start_time(jcr->db, &jcr->jr, &jcr->stime)) { + if (!db_find_job_start_time(jcr, jcr->db, &jcr->jr, &jcr->stime)) { Jmsg(jcr, M_INFO, 0, _("Last FULL backup time not found. Doing FULL backup.\n")); jcr->JobLevel = jcr->jr.Level = L_FULL; } else { @@ -130,7 +130,7 @@ int do_backup(JCR *jcr) jcr->jr.JobId = jcr->JobId; jcr->jr.StartTime = jcr->start_time; - if (!db_update_job_start_record(jcr->db, &jcr->jr)) { + if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) { Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db)); goto bail_out; } @@ -146,9 +146,9 @@ int do_backup(JCR *jcr) */ memset(&pr, 0, sizeof(pr)); strcpy(pr.Name, jcr->pool->hdr.name); - while (!db_get_pool_record(jcr->db, &pr)) { /* get by Name */ + while (!db_get_pool_record(jcr, jcr->db, &pr)) { /* get by Name */ /* Try to create the pool */ - if (create_pool(jcr->db, jcr->pool) < 0) { + if (create_pool(jcr, jcr->db, jcr->pool) < 0) { Jmsg(jcr, M_FATAL, 0, _("Pool %s not in database. %s"), pr.Name, db_strerror(jcr->db)); goto bail_out; @@ -321,14 +321,14 @@ static void backup_cleanup(JCR *jcr, int TermCode, char *since) update_job_end_record(jcr); /* update database */ - if (!db_get_job_record(jcr->db, &jcr->jr)) { + if (!db_get_job_record(jcr, jcr->db, &jcr->jr)) { Jmsg(jcr, M_WARNING, 0, _("Error getting job record for stats: %s"), db_strerror(jcr->db)); set_jcr_job_status(jcr, JS_ErrorTerminated); } strcpy(mr.VolumeName, jcr->VolumeName); - if (!db_get_media_record(jcr->db, &mr)) { + if (!db_get_media_record(jcr, jcr->db, &mr)) { Jmsg(jcr, M_WARNING, 0, _("Error getting Media record for stats: %s"), db_strerror(jcr->db)); set_jcr_job_status(jcr, JS_ErrorTerminated); @@ -352,7 +352,7 @@ static void backup_cleanup(JCR *jcr, int TermCode, char *since) fd = fopen(fname, jcr->JobLevel==L_FULL?"w+":"a+"); } if (fd) { - VolCount = db_get_job_volume_parameters(jcr->db, jcr->JobId, + VolCount = db_get_job_volume_parameters(jcr, jcr->db, jcr->JobId, &VolParams); if (VolCount == 0) { Jmsg(jcr, M_ERROR, 0, _("Could not get Job Volume Parameters. ERR=%s\n"), @@ -419,7 +419,7 @@ static void backup_cleanup(JCR *jcr, int TermCode, char *since) } else { kbps = (double)jcr->jr.JobBytes / (1000 * RunTime); } - if (!db_get_job_volume_names(jcr->db, jcr->jr.JobId, &jcr->VolumeName)) { + if (!db_get_job_volume_names(jcr, jcr->db, jcr->jr.JobId, &jcr->VolumeName)) { /* * Note, if the job has erred, most likely it did not write any * tape, so suppress this "error" message since in that case diff --git a/bacula/src/dird/catreq.c b/bacula/src/dird/catreq.c index 523532b789..0b650da52d 100644 --- a/bacula/src/dird/catreq.c +++ b/bacula/src/dird/catreq.c @@ -91,7 +91,7 @@ void catalog_request(JCR *jcr, BSOCK *bs, char *msg) */ next_volume: strcpy(mr.VolStatus, "Append"); /* want only appendable volumes */ - ok = db_find_next_volume(jcr->db, index, &mr); + ok = db_find_next_volume(jcr, jcr->db, index, &mr); Dmsg1(200, "catreq after find_next_vol ok=%d\n", ok); if (!ok) { /* Well, try finding recycled tapes */ @@ -119,7 +119,7 @@ next_volume: Jmsg(jcr, M_INFO, 0, _("Max configured use duration exceeded. " "Marking Volume \"%s\" as Used.\n"), mr.VolumeName); strcpy(mr.VolStatus, "Used"); /* yes, mark as used */ - if (!db_update_media_record(jcr->db, &mr)) { + if (!db_update_media_record(jcr, jcr->db, &mr)) { Jmsg(jcr, M_ERROR, 0, _("Catalog error updating Media record. %s"), db_strerror(jcr->db)); } else if (retry++ < 200) { /* sanity check */ @@ -160,7 +160,7 @@ next_volume: * Find the Volume */ unbash_spaces(mr.VolumeName); - if (db_get_media_record(jcr->db, &mr)) { + if (db_get_media_record(jcr, jcr->db, &mr)) { int VolSuitable = 0; jcr->MediaId = mr.MediaId; Dmsg1(120, "VolumeInfo MediaId=%d\n", jcr->MediaId); @@ -215,7 +215,7 @@ next_volume: &sdmr.Slot, &relabel) == 14) { bstrncpy(mr.VolumeName, sdmr.VolumeName, sizeof(mr.VolumeName)); /* copy Volume name */ - if (!db_get_media_record(jcr->db, &mr)) { + if (!db_get_media_record(jcr, jcr->db, &mr)) { Jmsg(jcr, M_ERROR, 0, _("Unable to get Media record for Volume %s: ERR=%s\n"), mr.VolumeName, db_strerror(jcr->db)); bnet_fsend(bs, "1991 Catalog Request failed: %s", db_strerror(jcr->db)); @@ -278,7 +278,7 @@ next_volume: } Dmsg2(200, "db_update_media_record. Stat=%s Vol=%s\n", mr.VolStatus, mr.VolumeName); - if (db_update_media_record(jcr->db, &mr)) { + if (db_update_media_record(jcr, jcr->db, &mr)) { bnet_fsend(bs, OK_update); Dmsg0(190, "send OK\n"); } else { @@ -299,7 +299,7 @@ next_volume: jm.MediaId = jcr->MediaId; Dmsg6(100, "create_jobmedia JobId=%d MediaId=%d SF=%d EF=%d FI=%d LI=%d\n", jm.JobId, jm.MediaId, jm.StartFile, jm.EndFile, jm.FirstIndex, jm.LastIndex); - if (!db_create_jobmedia_record(jcr->db, &jm)) { + if (!db_create_jobmedia_record(jcr, jcr->db, &jm)) { Jmsg(jcr, M_ERROR, 0, _("Catalog error creating JobMedia record. %s"), db_strerror(jcr->db)); bnet_fsend(bs, "1991 Update JobMedia error\n"); @@ -339,7 +339,7 @@ void catalog_update(JCR *jcr, BSOCK *bs, char *msg) if (!jcr->pool->catalog_files) { return; } - db_start_transaction(jcr->db); /* start transaction if not already open */ + db_start_transaction(jcr, jcr->db); /* start transaction if not already open */ skip_nonspaces(&p); /* UpdCat */ skip_spaces(&p); skip_nonspaces(&p); /* Job=nnn */ @@ -379,7 +379,7 @@ void catalog_update(JCR *jcr, BSOCK *bs, char *msg) Dmsg2(111, "dirddb, &ar)) { + if (!db_create_file_attributes_record(jcr, jcr->db, &ar)) { Jmsg1(jcr, M_FATAL, 0, _("Attribute create error. %s"), db_strerror(jcr->db)); } /* Save values for MD5 update */ @@ -394,7 +394,7 @@ void catalog_update(JCR *jcr, BSOCK *bs, char *msg) char MD5buf[50]; /* 24 bytes should be enough */ bin_to_base64(MD5buf, fname, 16); Dmsg2(190, "MD5len=%d MD5=%s\n", strlen(MD5buf), MD5buf); - if (!db_add_MD5_to_file_record(jcr->db, jcr->FileId, MD5buf)) { + if (!db_add_MD5_to_file_record(jcr, jcr->db, jcr->FileId, MD5buf)) { Jmsg(jcr, M_ERROR, 0, _("Catalog error updating MD5. %s"), db_strerror(jcr->db)); } diff --git a/bacula/src/dird/dird.c b/bacula/src/dird/dird.c index 23b3128f39..65e35f0e30 100644 --- a/bacula/src/dird/dird.c +++ b/bacula/src/dird/dird.c @@ -352,16 +352,16 @@ Without that I don't know who I am :-(\n"), configfile); */ db = db_init_database(NULL, catalog->db_name, catalog->db_user, catalog->db_password); - if (!db_open_database(db)) { + if (!db_open_database(NULL, db)) { Jmsg(NULL, M_FATAL, 0, "%s", db_strerror(db)); } else { /* If a pool is defined for this job, create the pool DB * record if it is not already created. */ if (job->pool) { - create_pool(db, job->pool); + create_pool(NULL, db, job->pool); } - db_close_database(db); + db_close_database(NULL, db); } } else { diff --git a/bacula/src/dird/fd_cmds.c b/bacula/src/dird/fd_cmds.c index c44b15e63d..2b8ba8dcb8 100644 --- a/bacula/src/dird/fd_cmds.c +++ b/bacula/src/dird/fd_cmds.c @@ -306,7 +306,7 @@ msglen=%d msg=%s\n"), len, fd->msglen, fd->msg); Dmsg2(111, "dirdfname); Dmsg1(120, "dirddb, &ar)) { + if (!db_create_file_attributes_record(jcr, jcr->db, &ar)) { Jmsg1(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db)); set_jcr_job_status(jcr, JS_Error); continue; @@ -321,7 +321,7 @@ msglen=%d msg=%s\n"), len, fd->msglen, fd->msg); } db_escape_string(MD5, Opts_MD5, strlen(Opts_MD5)); Dmsg2(120, "MD5len=%d MD5=%s\n", strlen(MD5), MD5); - if (!db_add_MD5_to_file_record(jcr->db, jcr->FileId, MD5)) { + if (!db_add_MD5_to_file_record(jcr, jcr->db, jcr->FileId, MD5)) { Jmsg1(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db)); set_jcr_job_status(jcr, JS_Error); } diff --git a/bacula/src/dird/job.c b/bacula/src/dird/job.c index 00579eaf89..fd0f0804bf 100644 --- a/bacula/src/dird/job.c +++ b/bacula/src/dird/job.c @@ -69,6 +69,7 @@ void run_job(JCR *jcr) { int stat, errstat; + sm_check(__FILE__, __LINE__, True); init_msg(jcr, jcr->messages); create_unique_job_name(jcr, jcr->job->hdr.name); jcr->jr.SchedTime = jcr->sched_time; @@ -93,9 +94,9 @@ void run_job(JCR *jcr) Dmsg0(50, "Open database\n"); jcr->db=db_init_database(jcr, jcr->catalog->db_name, jcr->catalog->db_user, jcr->catalog->db_password); - if (!db_open_database(jcr->db)) { + if (!db_open_database(jcr, jcr->db)) { Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db)); - db_close_database(jcr->db); + db_close_database(jcr, jcr->db); set_jcr_job_status(jcr, JS_ErrorTerminated); free_jcr(jcr); return; @@ -106,9 +107,9 @@ void run_job(JCR *jcr) * Create Job record */ jcr->jr.JobStatus = jcr->JobStatus; - if (!db_create_job_record(jcr->db, &jcr->jr)) { + if (!db_create_job_record(jcr, jcr->db, &jcr->jr)) { Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db)); - db_close_database(jcr->db); + db_close_database(jcr, jcr->db); set_jcr_job_status(jcr, JS_ErrorTerminated); free_jcr(jcr); return; @@ -139,6 +140,7 @@ static void job_thread(void *arg) JCR *jcr = (JCR *)arg; time(&now); + sm_check(__FILE__, __LINE__, True); Dmsg0(100, "=====Start Job=========\n"); jcr->start_time = now; /* set the real start time */ @@ -200,6 +202,7 @@ static void job_thread(void *arg) Dmsg0(50, "Before free jcr\n"); free_jcr(jcr); Dmsg0(50, "======== End Job ==========\n"); + sm_check(__FILE__, __LINE__, True); } /* @@ -219,7 +222,7 @@ int get_or_create_client_record(JCR *jcr) } jcr->client_name = get_memory(strlen(jcr->client->hdr.name) + 1); strcpy(jcr->client_name, jcr->client->hdr.name); - if (!db_create_client_record(jcr->db, &cr)) { + if (!db_create_client_record(jcr, jcr->db, &cr)) { Jmsg(jcr, M_FATAL, 0, _("Could not create Client record. %s"), db_strerror(jcr->db)); return 0; @@ -253,7 +256,7 @@ void update_job_end_record(JCR *jcr) jcr->jr.JobBytes = jcr->JobBytes; jcr->jr.VolSessionId = jcr->VolSessionId; jcr->jr.VolSessionTime = jcr->VolSessionTime; - if (!db_update_job_end_record(jcr->db, &jcr->jr)) { + if (!db_update_job_end_record(jcr, jcr->db, &jcr->jr)) { Jmsg(jcr, M_WARNING, 0, _("Error updating job record. %s"), db_strerror(jcr->db)); } @@ -331,7 +334,7 @@ void dird_free_jcr(JCR *jcr) } if (jcr->db) { Dmsg0(200, "Close DB\n"); - db_close_database(jcr->db); + db_close_database(jcr, jcr->db); } if (jcr->RestoreWhere) { free(jcr->RestoreWhere); diff --git a/bacula/src/dird/msgchan.c b/bacula/src/dird/msgchan.c index 74b91e1cc8..4b3c8f012d 100644 --- a/bacula/src/dird/msgchan.c +++ b/bacula/src/dird/msgchan.c @@ -189,7 +189,7 @@ static void msg_thread_cleanup(void *arg) { JCR *jcr = (JCR *)arg; Dmsg0(200, "End msg_thread\n"); - db_end_transaction(jcr->db); /* terminate any open transaction */ + db_end_transaction(jcr, jcr->db); /* terminate any open transaction */ P(jcr->mutex); jcr->msg_thread_done = TRUE; pthread_cond_broadcast(&jcr->term_wait); /* wakeup any waiting threads */ diff --git a/bacula/src/dird/newvol.c b/bacula/src/dird/newvol.c index f7e8ba3e89..9af68e6aa6 100644 --- a/bacula/src/dird/newvol.c +++ b/bacula/src/dird/newvol.c @@ -48,7 +48,7 @@ int newVolume(JCR *jcr, MEDIA_DBR *mr) /* See if we can create a new Volume */ pr.PoolId = jcr->PoolId; - if (db_get_pool_record(jcr->db, &pr) && pr.LabelFormat[0] && + if (db_get_pool_record(jcr, jcr->db, &pr) && pr.LabelFormat[0] && pr.LabelFormat[0] != '*') { if (pr.MaxVols == 0 || pr.NumVols < pr.MaxVols) { set_pool_dbr_defaults_in_media_dbr(mr, &pr); @@ -61,8 +61,8 @@ int newVolume(JCR *jcr, MEDIA_DBR *mr) } strcat(name, "%04d"); sprintf(mr->VolumeName, name, ++pr.NumVols); - if (db_create_media_record(jcr->db, mr) && - db_update_pool_record(jcr->db, &pr) == 1) { + if (db_create_media_record(jcr, jcr->db, mr) && + db_update_pool_record(jcr, jcr->db, &pr) == 1) { Dmsg1(90, "Created new Volume=%s\n", mr->VolumeName); return 1; } else { diff --git a/bacula/src/dird/protos.h b/bacula/src/dird/protos.h index 4f09c43fee..13a5879392 100644 --- a/bacula/src/dird/protos.h +++ b/bacula/src/dird/protos.h @@ -46,13 +46,13 @@ extern char *level_to_str(int level); /* fd_cmds.c */ extern int connect_to_file_daemon(JCR *jcr, int retry_interval, - int max_retry_time, int verbose); + int max_retry_time, int verbose); extern int send_include_list(JCR *jcr); extern int send_exclude_list(JCR *jcr); extern int get_attributes_and_put_in_catalog(JCR *jcr); extern int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId); extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname, - char *link, char *attr, int stream); + char *link, char *attr, int stream); /* job.c */ extern void set_jcr_defaults(JCR *jcr, JOB *job); @@ -65,7 +65,7 @@ extern void mount_request(JCR *jcr, BSOCK *bs, char *buf); /* msgchan.c */ extern int connect_to_storage_daemon(JCR *jcr, int retry_interval, - int max_retry_time, int verbose); + int max_retry_time, int verbose); extern int start_storage_daemon_job(JCR *jcr); extern int start_storage_daemon_message_thread(JCR *jcr); extern int32_t bget_msg(BSOCK *bs, int type); @@ -76,5 +76,5 @@ extern void wait_for_storage_daemon_termination(JCR *jcr); extern int newVolume(JCR *jcr, MEDIA_DBR *mr); /* ua_cmd.c */ -extern int create_pool(B_DB *db, POOL *pool); +extern int create_pool(JCR *jcr, B_DB *db, POOL *pool); extern void set_pool_dbr_defaults_in_media_dbr(MEDIA_DBR *mr, POOL_DBR *pr); diff --git a/bacula/src/dird/recycle.c b/bacula/src/dird/recycle.c index 9a65048f73..0093eeaf68 100644 --- a/bacula/src/dird/recycle.c +++ b/bacula/src/dird/recycle.c @@ -58,7 +58,7 @@ static int oldest_handler(void *ctx, int num_fields, char **row) int find_recycled_volume(JCR *jcr, MEDIA_DBR *mr) { strcpy(mr->VolStatus, "Recycle"); - if (db_find_next_volume(jcr->db, 1, mr)) { + if (db_find_next_volume(jcr, jcr->db, 1, mr)) { jcr->MediaId = mr->MediaId; Dmsg1(20, "Find_next_vol MediaId=%d\n", jcr->MediaId); strcpy(jcr->VolumeName, mr->VolumeName); @@ -94,9 +94,9 @@ int recycle_a_volume(JCR *jcr, MEDIA_DBR *mr) Dmsg1(100, "Oldest mediaid=%d\n", oldest.MediaId); if (oldest.MediaId != 0) { mr->MediaId = oldest.MediaId; - if (db_get_media_record(jcr->db, mr)) { + if (db_get_media_record(jcr, jcr->db, mr)) { strcpy(mr->VolStatus, "Recycle"); - if (db_update_media_record(jcr->db, mr)) { + if (db_update_media_record(jcr, jcr->db, mr)) { Jmsg(jcr, M_INFO, 0, "Recycled volume %s\n", mr->VolumeName); Dmsg1(100, "Exit 1 recycle_a_volume Vol=%s\n", mr->VolumeName); return 1; diff --git a/bacula/src/dird/restore.c b/bacula/src/dird/restore.c index 80ba26a383..4a6e05187d 100644 --- a/bacula/src/dird/restore.c +++ b/bacula/src/dird/restore.c @@ -82,7 +82,7 @@ int do_restore(JCR *jcr) memset(&rjr, 0, sizeof(rjr)); jcr->jr.Level = 'F'; /* Full restore */ jcr->jr.StartTime = jcr->start_time; - if (!db_update_job_start_record(jcr->db, &jcr->jr)) { + if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) { Jmsg(jcr, M_ERROR, 0, "%s", db_strerror(jcr->db)); restore_cleanup(jcr, JS_ErrorTerminated); return 0; @@ -105,7 +105,7 @@ int do_restore(JCR *jcr) } else { rjr.JobId = jcr->job->RestoreJobId; /* specified by Job Resource */ } - if (!db_get_job_record(jcr->db, &rjr)) { + if (!db_get_job_record(jcr, jcr->db, &rjr)) { Jmsg2(jcr, M_FATAL, 0, _("Cannot get job record id=%d %s"), rjr.JobId, db_strerror(jcr->db)); restore_cleanup(jcr, JS_ErrorTerminated); @@ -116,7 +116,7 @@ int do_restore(JCR *jcr) * Now find the Volumes we will need for the Restore */ jcr->VolumeName[0] = 0; - if (!db_get_job_volume_names(jcr->db, rjr.JobId, &jcr->VolumeName) || + if (!db_get_job_volume_names(jcr, jcr->db, rjr.JobId, &jcr->VolumeName) || jcr->VolumeName[0] == 0) { Jmsg(jcr, M_FATAL, 0, _("Cannot find Volume Name for restore Job %d. %s"), rjr.JobId, db_strerror(jcr->db)); diff --git a/bacula/src/dird/scheduler.c b/bacula/src/dird/scheduler.c index 6206c3b1e5..5ec941ed60 100644 --- a/bacula/src/dird/scheduler.c +++ b/bacula/src/dird/scheduler.c @@ -145,7 +145,6 @@ JCR *wait_for_next_job(char *job_to_run) jcr = new_jcr(sizeof(JCR), dird_free_jcr); ASSERT(job); - sm_check(__FILE__, __LINE__, False); set_jcr_defaults(jcr, job); if (run->level) { jcr->JobLevel = run->level; /* override run level */ diff --git a/bacula/src/dird/ua_cmds.c b/bacula/src/dird/ua_cmds.c index 96f0209a1f..b79246e281 100644 --- a/bacula/src/dird/ua_cmds.c +++ b/bacula/src/dird/ua_cmds.c @@ -280,7 +280,7 @@ getVolName: sprintf(mr.VolumeName, name, i); mr.Slot = slot++; Dmsg1(200, "Create Volume %s\n", mr.VolumeName); - if (!db_create_media_record(ua->db, &mr)) { + if (!db_create_media_record(ua->jcr, ua->db, &mr)) { bsendmsg(ua, db_strerror(ua->db)); return 1; } @@ -290,7 +290,7 @@ getVolName: } pr.NumVols += num; Dmsg0(200, "Update pool record.\n"); - if (db_update_pool_record(ua->db, &pr) != 1) { + if (db_update_pool_record(ua->jcr, ua->db, &pr) != 1) { bsendmsg(ua, db_strerror(ua->db)); return 1; } @@ -506,7 +506,7 @@ void set_pooldbr_from_poolres(POOL_DBR *pr, POOL *pool, int create) * 1 record created */ -int create_pool(B_DB *db, POOL *pool) +int create_pool(JCR *jcr, B_DB *db, POOL *pool) { POOL_DBR pr; @@ -514,13 +514,13 @@ int create_pool(B_DB *db, POOL *pool) strcpy(pr.Name, pool->hdr.name); - if (db_get_pool_record(db, &pr)) { + if (db_get_pool_record(jcr, db, &pr)) { return 0; /* exists */ } set_pooldbr_from_poolres(&pr, pool, 1); - if (!db_create_pool_record(db, &pr)) { + if (!db_create_pool_record(jcr, db, &pr)) { return -1; /* error */ } return 1; @@ -545,7 +545,7 @@ static int createcmd(UAContext *ua, char *cmd) return 1; } - switch (create_pool(ua->db, pool)) { + switch (create_pool(ua->jcr, ua->db, pool)) { case 0: bsendmsg(ua, _("Error: Pool %s already exists.\n\ Use update to change it.\n"), pool->hdr.name); @@ -632,7 +632,7 @@ static int update_volume(UAContext *ua) } for (int done=0; !done; ) { - if (!db_get_media_record(ua->db, &mr)) { + if (!db_get_media_record(ua->jcr, ua->db, &mr)) { if (mr.MediaId != 0) { bsendmsg(ua, _("Volume record for MediaId %d not found.\n"), mr.MediaId); } else { @@ -856,6 +856,13 @@ static int update_volume(UAContext *ua) bsendmsg(ua, _("Invalid number, it must be 0 or greater\n")); break; } + if (VolFiles != (int)(mr.VolFiles + 1)) { + bsendmsg(ua, _("Normally, you should only increase Volume Files by one!\n")); + if (!get_cmd(ua, _("Continue? (yes/no): ")) || + strcasecmp(ua->cmd, "yes") != 0) { + break; + } + } query = get_pool_memory(PM_MESSAGE); Mmsg(&query, "UPDATE Media SET VolFiles=%u WHERE MediaId=%u", VolFiles, mr.MediaId); @@ -898,7 +905,7 @@ static int update_pool(UAContext *ua) set_pooldbr_from_poolres(&pr, pool, 0); /* update */ - id = db_update_pool_record(ua->db, &pr); + id = db_update_pool_record(ua->jcr, ua->db, &pr); if (id <= 0) { bsendmsg(ua, _("db_update_pool_record returned %d. ERR=%s\n"), id, db_strerror(ua->db)); @@ -1200,7 +1207,7 @@ static int delete_volume(UAContext *ua) return 1; } if (strcasecmp(ua->cmd, _("yes")) == 0) { - db_delete_media_record(ua->db, &mr); + db_delete_media_record(ua->jcr, ua->db, &mr); } return 1; } @@ -1221,7 +1228,7 @@ static int delete_pool(UAContext *ua) return 1; } if (strcasecmp(ua->cmd, _("yes")) == 0) { - db_delete_pool_record(ua->db, &pr); + db_delete_pool_record(ua->jcr, ua->db, &pr); } return 1; } @@ -1282,7 +1289,7 @@ gotVol: memset(&mr, 0, sizeof(mr)); strcpy(mr.VolumeName, ua->cmd); - if (db_get_media_record(ua->db, &mr)) { + if (db_get_media_record(ua->jcr, ua->db, &mr)) { bsendmsg(ua, _("Media record for Volume %s already exists.\n"), mr.VolumeName); return 1; @@ -1333,7 +1340,7 @@ gotVol: mr.LabelDate = time(NULL); if (ok) { set_pool_dbr_defaults_in_media_dbr(&mr, &pr); - if (db_create_media_record(ua->db, &mr)) { + if (db_create_media_record(ua->jcr, ua->db, &mr)) { bsendmsg(ua, _("Media record for Volume=%s successfully created.\n"), mr.VolumeName); if (ua->automount) { @@ -1495,19 +1502,19 @@ int open_db(UAContext *ua) ua->catalog = (CAT *)GetNextRes(R_CATALOG, NULL); UnlockRes(); if (!ua->catalog) { - bnet_fsend(ua->UA_sock, _("Could not find a Catalog resource\n")); + bsendmsg(ua, _("Could not find a Catalog resource\n")); return 0; } else { - bnet_fsend(ua->UA_sock, _("Using default Catalog name=%s DB=%s\n"), + bsendmsg(ua, _("Using default Catalog name=%s DB=%s\n"), ua->catalog->hdr.name, ua->catalog->db_name); } } Dmsg0(150, "Open database\n"); - ua->db = db_init_database(NULL, ua->catalog->db_name, ua->catalog->db_user, + ua->db = db_init_database(ua->jcr, ua->catalog->db_name, ua->catalog->db_user, ua->catalog->db_password); - if (!db_open_database(ua->db)) { - bnet_fsend(ua->UA_sock, _("Could not open DB %s: ERR=%s"), + if (!db_open_database(ua->jcr, ua->db)) { + bsendmsg(ua, _("Could not open DB %s: ERR=%s"), ua->catalog->db_name, db_strerror(ua->db)); close_db(ua); return 0; @@ -1520,7 +1527,7 @@ int open_db(UAContext *ua) void close_db(UAContext *ua) { if (ua->db) { - db_close_database(ua->db); + db_close_database(ua->jcr, ua->db); } ua->db = NULL; ua->jcr->db = NULL; diff --git a/bacula/src/dird/ua_output.c b/bacula/src/dird/ua_output.c index bf9e8ade06..f862dad024 100644 --- a/bacula/src/dird/ua_output.c +++ b/bacula/src/dird/ua_output.c @@ -215,11 +215,11 @@ int listcmd(UAContext *ua, char *cmd) for (i=1; iargc; i++) { /* List JOBS */ if (strcasecmp(ua->argk[i], _("jobs")) == 0) { - db_list_job_records(ua->db, &jr, prtit, ua); + db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua); /* List JOBTOTALS */ } else if (strcasecmp(ua->argk[i], _("jobtotals")) == 0) { - db_list_job_totals(ua->db, &jr, prtit, ua); + db_list_job_totals(ua->jcr, ua->db, &jr, prtit, ua); /* List JOBID */ } else if (strcasecmp(ua->argk[i], _("jobid")) == 0) { @@ -227,7 +227,7 @@ int listcmd(UAContext *ua, char *cmd) jobid = atoi(ua->argv[i]); if (jobid > 0) { jr.JobId = jobid; - db_list_job_records(ua->db, &jr, prtit, ua); + db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua); } } @@ -235,7 +235,7 @@ int listcmd(UAContext *ua, char *cmd) } else if (strcasecmp(ua->argk[i], _("job")) == 0 && ua->argv[i]) { bstrncpy(jr.Job, ua->argv[i], MAX_NAME_LENGTH); jr.JobId = 0; - db_list_job_records(ua->db, &jr, prtit, ua); + db_list_job_records(ua->jcr, ua->db, &jr, prtit, ua); /* List FILES */ } else if (strcasecmp(ua->argk[i], _("files")) == 0) { @@ -244,7 +244,7 @@ int listcmd(UAContext *ua, char *cmd) if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) { bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH); jr.JobId = 0; - db_get_job_record(ua->db, &jr); + db_get_job_record(ua->jcr, ua->db, &jr); jobid = jr.JobId; } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) { jobid = atoi(ua->argv[j]); @@ -252,7 +252,7 @@ int listcmd(UAContext *ua, char *cmd) continue; } if (jobid > 0) { - db_list_files_for_job(ua->db, jobid, prtit, ua); + db_list_files_for_job(ua->jcr, ua->db, jobid, prtit, ua); } } @@ -263,27 +263,27 @@ int listcmd(UAContext *ua, char *cmd) if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) { bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH); jr.JobId = 0; - db_get_job_record(ua->db, &jr); + db_get_job_record(ua->jcr, ua->db, &jr); jobid = jr.JobId; } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) { jobid = atoi(ua->argv[j]); } else { continue; } - db_list_jobmedia_records(ua->db, jobid, prtit, ua); + db_list_jobmedia_records(ua->jcr, ua->db, jobid, prtit, ua); done = TRUE; } if (!done) { /* List for all jobs (jobid=0) */ - db_list_jobmedia_records(ua->db, 0, prtit, ua); + db_list_jobmedia_records(ua->jcr, ua->db, 0, prtit, ua); } /* List POOLS */ } else if (strcasecmp(ua->argk[i], _("pools")) == 0) { - db_list_pool_records(ua->db, prtit, ua); + db_list_pool_records(ua->jcr, ua->db, prtit, ua); } else if (strcasecmp(ua->argk[i], _("clients")) == 0) { - db_list_client_records(ua->db, prtit, ua); + db_list_client_records(ua->jcr, ua->db, prtit, ua); /* List MEDIA or VOLUMES */ @@ -294,7 +294,7 @@ int listcmd(UAContext *ua, char *cmd) if (strcasecmp(ua->argk[j], _("job")) == 0 && ua->argv[j]) { bstrncpy(jr.Job, ua->argv[j], MAX_NAME_LENGTH); jr.JobId = 0; - db_get_job_record(ua->db, &jr); + db_get_job_record(ua->jcr, ua->db, &jr); jobid = jr.JobId; } else if (strcasecmp(ua->argk[j], _("jobid")) == 0 && ua->argv[j]) { jobid = atoi(ua->argv[j]); @@ -302,7 +302,7 @@ int listcmd(UAContext *ua, char *cmd) continue; } VolumeName = get_pool_memory(PM_FNAME); - n = db_get_job_volume_names(ua->db, jobid, &VolumeName); + n = db_get_job_volume_names(ua->jcr, ua->db, jobid, &VolumeName); bsendmsg(ua, _("Jobid %d used %d Volume(s): %s\n"), jobid, n, VolumeName); free_pool_memory(VolumeName); done = TRUE; @@ -313,7 +313,7 @@ int listcmd(UAContext *ua, char *cmd) return 1; } mr.PoolId = pr.PoolId; - db_list_media_records(ua->db, &mr, prtit, ua); + db_list_media_records(ua->jcr, ua->db, &mr, prtit, ua); } } else { bsendmsg(ua, _("Unknown list keyword: %s\n"), NPRT(ua->argk[i])); diff --git a/bacula/src/dird/ua_prune.c b/bacula/src/dird/ua_prune.c index ee91d7d34e..71496f943f 100644 --- a/bacula/src/dird/ua_prune.c +++ b/bacula/src/dird/ua_prune.c @@ -254,7 +254,7 @@ int prune_files(UAContext *ua, CLIENT *client) memset(&cr, 0, sizeof(cr)); memset(&del, 0, sizeof(del)); strcpy(cr.Name, client->hdr.name); - if (!db_create_client_record(ua->db, &cr)) { + if (!db_create_client_record(ua->jcr, ua->db, &cr)) { db_unlock(ua->db); return 0; } @@ -376,7 +376,7 @@ int prune_jobs(UAContext *ua, CLIENT *client, int JobType) memset(&cr, 0, sizeof(cr)); memset(&del, 0, sizeof(del)); strcpy(cr.Name, client->hdr.name); - if (!db_create_client_record(ua->db, &cr)) { + if (!db_create_client_record(ua->jcr, ua->db, &cr)) { db_unlock(ua->db); return 0; } @@ -548,7 +548,7 @@ int prune_volume(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr) (int)(now-period)); for (i=0; i < del.num_ids; i++) { jr.JobId = del.JobId[i]; - if (!db_get_job_record(ua->db, &jr)) { + if (!db_get_job_record(ua->jcr, ua->db, &jr)) { continue; } Dmsg2(200, "Looking at %s JobTdate=%d\n", jr.Job, (int)jr.JobTDate); diff --git a/bacula/src/dird/ua_purge.c b/bacula/src/dird/ua_purge.c index 970872ca50..3c06c0fc18 100644 --- a/bacula/src/dird/ua_purge.c +++ b/bacula/src/dird/ua_purge.c @@ -268,7 +268,7 @@ int purge_files_from_client(UAContext *ua, CLIENT *client) memset(&del, 0, sizeof(del)); strcpy(cr.Name, client->hdr.name); - if (!db_create_client_record(ua->db, &cr)) { + if (!db_create_client_record(ua->jcr, ua->db, &cr)) { return 0; } @@ -345,7 +345,7 @@ int purge_jobs_from_client(UAContext *ua, CLIENT *client) memset(&del, 0, sizeof(del)); strcpy(cr.Name, client->hdr.name); - if (!db_create_client_record(ua->db, &cr)) { + if (!db_create_client_record(ua->jcr, ua->db, &cr)) { return 0; } @@ -506,7 +506,7 @@ int mark_media_purged(UAContext *ua, MEDIA_DBR *mr) strcmp(mr->VolStatus, "Full") == 0 || strcmp(mr->VolStatus, "Used") == 0) { strcpy(mr->VolStatus, "Purged"); - if (!db_update_media_record(ua->db, mr)) { + if (!db_update_media_record(ua->jcr, ua->db, mr)) { if (ua->verbose) { bsendmsg(ua, "%s", db_strerror(ua->db)); } diff --git a/bacula/src/dird/ua_restore.c b/bacula/src/dird/ua_restore.c index 39b0d20984..c808dcd6bd 100644 --- a/bacula/src/dird/ua_restore.c +++ b/bacula/src/dird/ua_restore.c @@ -9,7 +9,7 @@ */ /* - Copyright (C) 2002 Kern Sibbald and John Walker + Copyright (C) 2002-2003 Kern Sibbald and John Walker This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -311,7 +311,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji) case -1: /* error */ return 0; case 0: /* list last 20 Jobs run */ - db_list_sql_query(ua->db, uar_list_jobs, prtit, ua, 1); + db_list_sql_query(ua->jcr, ua->db, uar_list_jobs, prtit, ua, 1); done = 0; break; case 1: /* list where a file is saved */ @@ -320,7 +320,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji) } query = get_pool_memory(PM_MESSAGE); Mmsg(&query, uar_file, ua->cmd); - db_list_sql_query(ua->db, query, prtit, ua, 1); + db_list_sql_query(ua->jcr, ua->db, query, prtit, ua, 1); free_pool_memory(query); done = 0; break; @@ -334,7 +334,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji) if (!get_cmd(ua, _("Enter SQL list command: "))) { return 0; } - db_list_sql_query(ua->db, ua->cmd, prtit, ua, 1); + db_list_sql_query(ua->jcr, ua->db, ua->cmd, prtit, ua, 1); done = 0; break; case 4: /* Select the most recent backups */ @@ -375,8 +375,8 @@ static int user_select_jobids(UAContext *ua, JobIds *ji) return 0; } fsr.FileSetId = atoi(fileset_name); /* Id is first part of name */ - if (!db_get_fileset_record(ua->db, &fsr)) { - bsendmsg(ua, "Error getting FileSet record: %s\n", db_strerror(ua->db)); + if (!db_get_fileset_record(ua->jcr, ua->db, &fsr)) { + 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")); } @@ -402,7 +402,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji) bsendmsg(ua, "%s\n", db_strerror(ua->db)); } free_pool_memory(query); - db_list_sql_query(ua->db, uar_list_temp, prtit, ua, 1); + db_list_sql_query(ua->jcr, ua->db, uar_list_temp, prtit, ua, 1); if (!db_sql_query(ua->db, uar_sel_jobid_temp, jobid_handler, (void *)ji)) { bsendmsg(ua, "%s\n", db_strerror(ua->db)); @@ -434,7 +434,7 @@ static int user_select_jobids(UAContext *ua, JobIds *ji) break; } jr.JobId = JobId; - if (!db_get_job_record(ua->db, &jr)) { + if (!db_get_job_record(ua->jcr, ua->db, &jr)) { bsendmsg(ua, _("Unable to get Job record. ERR=%s\n"), db_strerror(ua->db)); return 0; } @@ -665,13 +665,13 @@ static int complete_bsr(UAContext *ua, RBSR *bsr) if (bsr) { memset(&jr, 0, sizeof(jr)); jr.JobId = bsr->JobId; - if (!db_get_job_record(ua->db, &jr)) { + if (!db_get_job_record(ua->jcr, ua->db, &jr)) { bsendmsg(ua, _("Unable to get Job record. ERR=%s\n"), db_strerror(ua->db)); return 0; } bsr->VolSessionId = jr.VolSessionId; bsr->VolSessionTime = jr.VolSessionTime; - if ((bsr->VolCount=db_get_job_volume_parameters(ua->db, bsr->JobId, + if ((bsr->VolCount=db_get_job_volume_parameters(ua->jcr, ua->db, bsr->JobId, &(bsr->VolParams))) == 0) { bsendmsg(ua, _("Unable to get Job Volume Parameters. ERR=%s\n"), db_strerror(ua->db)); if (bsr->VolParams) { @@ -1036,7 +1036,7 @@ static int dircmd(UAContext *ua, TREE_CTX *tree) tree_getpath(node, cwd, sizeof(cwd)); fdbr.FileId = 0; fdbr.JobId = node->JobId; - if (db_get_file_attributes_record(ua->db, cwd, &fdbr)) { + if (db_get_file_attributes_record(ua->jcr, ua->db, cwd, &fdbr)) { decode_stat(fdbr.LStat, &statp); /* decode stat pkt */ ls_output(buf, cwd, &statp); bsendmsg(ua, "%s\n", buf); diff --git a/bacula/src/dird/ua_select.c b/bacula/src/dird/ua_select.c index 5b15d69f68..5f23a8bc1c 100644 --- a/bacula/src/dird/ua_select.c +++ b/bacula/src/dird/ua_select.c @@ -269,7 +269,7 @@ int get_client_dbr(UAContext *ua, CLIENT_DBR *cr) int i; if (cr->Name[0]) { /* If name already supplied */ - if (db_get_client_record(ua->db, cr)) { + if (db_get_client_record(ua->jcr, ua->db, cr)) { return 1; } bsendmsg(ua, _("Could not find Client %s: ERR=%s"), cr->Name, db_strerror(ua->db)); @@ -277,7 +277,7 @@ int get_client_dbr(UAContext *ua, CLIENT_DBR *cr) for (i=1; iargc; i++) { if (strcasecmp(ua->argk[i], _("client")) == 0 && ua->argv[i]) { bstrncpy(cr->Name, ua->argv[i], sizeof(cr->Name)); - if (!db_get_client_record(ua->db, cr)) { + if (!db_get_client_record(ua->jcr, ua->db, cr)) { bsendmsg(ua, _("Could not find Client %s: ERR=%s"), ua->argv[i], db_strerror(ua->db)); cr->ClientId = 0; @@ -306,7 +306,7 @@ int select_client_dbr(UAContext *ua, CLIENT_DBR *cr) cr->ClientId = 0; - if (!db_get_client_ids(ua->db, &num_clients, &ids)) { + if (!db_get_client_ids(ua->jcr, ua->db, &num_clients, &ids)) { bsendmsg(ua, _("Error obtaining client ids. ERR=%s\n"), db_strerror(ua->db)); return 0; } @@ -318,7 +318,7 @@ int select_client_dbr(UAContext *ua, CLIENT_DBR *cr) start_prompt(ua, _("Defined Clients:\n")); for (i=0; i < num_clients; i++) { ocr.ClientId = ids[i]; - if (!db_get_client_record(ua->db, &ocr)) { + if (!db_get_client_record(ua->jcr, ua->db, &ocr)) { continue; } add_prompt(ua, ocr.Name); @@ -330,7 +330,7 @@ int select_client_dbr(UAContext *ua, CLIENT_DBR *cr) memset(&ocr, 0, sizeof(ocr)); bstrncpy(ocr.Name, name, sizeof(ocr.Name)); - if (!db_get_client_record(ua->db, &ocr)) { + if (!db_get_client_record(ua->jcr, ua->db, &ocr)) { bsendmsg(ua, _("Could not find Client %s: ERR=%s"), name, db_strerror(ua->db)); return 0; } @@ -355,7 +355,7 @@ int get_pool_dbr(UAContext *ua, POOL_DBR *pr) int i; if (pr->Name[0]) { /* If name already supplied */ - if (db_get_pool_record(ua->db, pr)) { + if (db_get_pool_record(ua->jcr, ua->db, pr)) { return pr->PoolId; } bsendmsg(ua, _("Could not find Pool %s: ERR=%s"), pr->Name, db_strerror(ua->db)); @@ -363,7 +363,7 @@ int get_pool_dbr(UAContext *ua, POOL_DBR *pr) for (i=1; iargc; i++) { if (strcasecmp(ua->argk[i], _("pool")) == 0 && ua->argv[i]) { bstrncpy(pr->Name, ua->argv[i], sizeof(pr->Name)); - if (!db_get_pool_record(ua->db, pr)) { + if (!db_get_pool_record(ua->jcr, ua->db, pr)) { bsendmsg(ua, _("Could not find Pool %s: ERR=%s"), ua->argv[i], db_strerror(ua->db)); pr->PoolId = 0; @@ -390,7 +390,7 @@ int select_pool_dbr(UAContext *ua, POOL_DBR *pr) pr->PoolId = 0; - if (!db_get_pool_ids(ua->db, &num_pools, &ids)) { + if (!db_get_pool_ids(ua->jcr, ua->db, &num_pools, &ids)) { bsendmsg(ua, _("Error obtaining pool ids. ERR=%s\n"), db_strerror(ua->db)); return 0; } @@ -402,7 +402,7 @@ int select_pool_dbr(UAContext *ua, POOL_DBR *pr) start_prompt(ua, _("Defined Pools:\n")); for (i=0; i < num_pools; i++) { opr.PoolId = ids[i]; - if (!db_get_pool_record(ua->db, &opr)) { + if (!db_get_pool_record(ua->jcr, ua->db, &opr)) { continue; } add_prompt(ua, opr.Name); @@ -414,7 +414,7 @@ int select_pool_dbr(UAContext *ua, POOL_DBR *pr) memset(&opr, 0, sizeof(opr)); bstrncpy(opr.Name, name, sizeof(opr.Name)); - if (!db_get_pool_record(ua->db, &opr)) { + if (!db_get_pool_record(ua->jcr, ua->db, &opr)) { bsendmsg(ua, _("Could not find Pool %s: ERR=%s"), name, db_strerror(ua->db)); return 0; } @@ -446,7 +446,7 @@ int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr) bstrncpy(mr->VolumeName, ua->argv[i], sizeof(mr->VolumeName)); } if (mr->VolumeName[0] == 0) { - db_list_media_records(ua->db, mr, prtit, ua); + db_list_media_records(ua->jcr, ua->db, mr, prtit, ua); if (!get_cmd(ua, _("Enter MediaId or Volume name: "))) { return 0; } @@ -457,7 +457,7 @@ int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr) } } - if (!db_get_media_record(ua->db, mr)) { + if (!db_get_media_record(ua->jcr, ua->db, mr)) { bsendmsg(ua, "%s", db_strerror(ua->db)); return 0; } @@ -503,12 +503,12 @@ POOL *get_pool_resource(UAContext *ua) */ int select_job_dbr(UAContext *ua, JOB_DBR *jr) { - db_list_job_records(ua->db, jr, prtit, ua); + db_list_job_records(ua->jcr, ua->db, jr, prtit, ua); if (!get_cmd(ua, _("Enter the JobId to select: "))) { return 0; } jr->JobId = atoi(ua->cmd); - if (!db_get_job_record(ua->db, jr)) { + if (!db_get_job_record(ua->jcr, ua->db, jr)) { bsendmsg(ua, "%s", db_strerror(ua->db)); return 0; } @@ -540,7 +540,7 @@ int get_job_dbr(UAContext *ua, JOB_DBR *jr) } else { continue; } - if (!db_get_job_record(ua->db, jr)) { + if (!db_get_job_record(ua->jcr, ua->db, jr)) { bsendmsg(ua, _("Could not find Job %s: ERR=%s"), ua->argv[i], db_strerror(ua->db)); jr->JobId = 0; diff --git a/bacula/src/dird/verify.c b/bacula/src/dird/verify.c index 56793efa25..027e30af5c 100644 --- a/bacula/src/dird/verify.c +++ b/bacula/src/dird/verify.c @@ -87,7 +87,7 @@ int do_verify(JCR *jcr) */ if (jcr->JobLevel == L_VERIFY_CATALOG || jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) { memcpy(&jr, &(jcr->jr), sizeof(jr)); - if (!db_find_last_jobid(jcr->db, &jr)) { + if (!db_find_last_jobid(jcr, jcr->db, &jr)) { Jmsg(jcr, M_FATAL, 0, _( "Unable to find JobId of previous InitCatalog Job.\n" "Please run a Verify with Level=InitCatalog before\n" @@ -101,7 +101,7 @@ int do_verify(JCR *jcr) jcr->jr.JobId = jcr->JobId; jcr->jr.StartTime = jcr->start_time; jcr->jr.Level = jcr->JobLevel; - if (!db_update_job_start_record(jcr->db, &jcr->jr)) { + if (!db_update_job_start_record(jcr, jcr->db, &jcr->jr)) { Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db)); goto bail_out; } @@ -119,7 +119,7 @@ int do_verify(JCR *jcr) if (jcr->JobLevel == L_VERIFY_CATALOG || jcr->JobLevel == L_VERIFY_VOLUME_TO_CATALOG) { memset(&jr, 0, sizeof(jr)); jr.JobId = JobId; - if (!db_get_job_record(jcr->db, &jr)) { + if (!db_get_job_record(jcr, jcr->db, &jr)) { Jmsg(jcr, M_FATAL, 0, _("Could not get job record. %s"), db_strerror(jcr->db)); goto bail_out; } @@ -143,7 +143,7 @@ int do_verify(JCR *jcr) * Now find the Volumes we will need for the Verify */ jcr->VolumeName[0] = 0; - if (!db_get_job_volume_names(jcr->db, jr.JobId, &jcr->VolumeName) || + if (!db_get_job_volume_names(jcr, jcr->db, jr.JobId, &jcr->VolumeName) || jcr->VolumeName[0] == 0) { Jmsg(jcr, M_FATAL, 0, _("Cannot find Volume Name for verify JobId=%d. %s"), jr.JobId, db_strerror(jcr->db)); @@ -442,7 +442,7 @@ int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId) * Find equivalent record in the database */ fdbr.FileId = 0; - if (!db_get_file_attributes_record(jcr->db, jcr->fname, &fdbr)) { + if (!db_get_file_attributes_record(jcr, jcr->db, jcr->fname, &fdbr)) { Jmsg(jcr, M_INFO, 0, _("New file: %s\n"), jcr->fname); Dmsg1(020, _("File not in catalog: %s\n"), jcr->fname); stat = JS_Differences; @@ -452,7 +452,7 @@ int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId) * mark file record as visited by stuffing the * current JobId, which is unique, into the MarkId field. */ - db_mark_file_record(jcr->db, fdbr.FileId, jcr->JobId); + db_mark_file_record(jcr, jcr->db, fdbr.FileId, jcr->JobId); } Dmsg3(400, "Found %s in catalog. inx=%d Opts=%s\n", jcr->fname, diff --git a/bacula/src/findlib/find_one.c b/bacula/src/findlib/find_one.c index d80036fb23..8bd209fb45 100755 --- a/bacula/src/findlib/find_one.c +++ b/bacula/src/findlib/find_one.c @@ -274,7 +274,6 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt, int handle_file(FF_PKT *ff, void *hpkt), int i; status = readdir_r(directory, entry, &result); - sm_check(__FILE__, __LINE__, False); Dmsg3(200, "readdir stat=%d result=%x name=%s\n", status, result, entry->d_name); if (status != 0 || result == NULL) { @@ -297,7 +296,6 @@ find_one_file(JCR *jcr, FF_PKT *ff_pkt, int handle_file(FF_PKT *ff, void *hpkt), *q++ = *p++; } *q = 0; - sm_check(__FILE__, __LINE__, False); if (!file_is_excluded(ff_pkt, link)) { rtn_stat = find_one_file(jcr, ff_pkt, handle_file, pkt, link, our_device, 0); } diff --git a/bacula/src/lib/mem_pool.c b/bacula/src/lib/mem_pool.c index 4f928deb69..09491892f6 100644 --- a/bacula/src/lib/mem_pool.c +++ b/bacula/src/lib/mem_pool.c @@ -93,7 +93,6 @@ POOLMEM *sm_get_pool_memory(char *fname, int lineno, int pool) { struct abufhead *buf; - sm_check(fname, lineno, True); if (pool > PM_MAX) { Emsg2(M_ABORT, 0, "MemPool index %d larger than max %d\n", pool, PM_MAX); } @@ -132,7 +131,6 @@ POOLMEM *sm_get_memory(char *fname, int lineno, size_t size) struct abufhead *buf; int pool = 0; - sm_check(fname, lineno, True); if ((buf = (struct abufhead *) sm_malloc(fname, lineno, size+HEAD_SIZE)) == NULL) { Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size); } @@ -151,7 +149,6 @@ size_t sm_sizeof_pool_memory(char *fname, int lineno, POOLMEM *obuf) { char *cp = (char *)obuf; - sm_check(fname, lineno, False); ASSERT(obuf); cp -= HEAD_SIZE; return ((struct abufhead *)cp)->ablen; @@ -164,12 +161,10 @@ POOLMEM *sm_realloc_pool_memory(char *fname, int lineno, POOLMEM *obuf, size_t s void *buf; int pool; - sm_check(fname, lineno, False); ASSERT(obuf); P(mutex); cp -= HEAD_SIZE; buf = sm_realloc(fname, lineno, cp, size+HEAD_SIZE); - sm_check(fname, lineno, True); if (buf == NULL) { V(mutex); Emsg1(M_ABORT, 0, "Out of memory requesting %d bytes\n", size); @@ -180,13 +175,11 @@ POOLMEM *sm_realloc_pool_memory(char *fname, int lineno, POOLMEM *obuf, size_t s pool_ctl[pool].max_size = size; } V(mutex); - sm_check(fname, lineno, False); return (POOLMEM *)(((char *)buf)+HEAD_SIZE); } POOLMEM *sm_check_pool_memory_size(char *fname, int lineno, POOLMEM *obuf, size_t size) { - sm_check(fname, lineno, False); ASSERT(obuf); if (size <= sizeof_pool_memory(obuf)) { return obuf; @@ -200,7 +193,6 @@ void sm_free_pool_memory(char *fname, int lineno, POOLMEM *obuf) struct abufhead *buf; int pool; - sm_check(fname, lineno, True); ASSERT(obuf); P(mutex); buf = (struct abufhead *)((char *)obuf - HEAD_SIZE); @@ -324,7 +316,6 @@ void free_pool_memory(POOLMEM *obuf) struct abufhead *buf; int pool; - sm_check(__FILE__, __LINE__, False); ASSERT(obuf); P(mutex); buf = (struct abufhead *)((char *)obuf - HEAD_SIZE); diff --git a/bacula/src/lib/message.c b/bacula/src/lib/message.c index 13c4b39e15..54d7b6154f 100755 --- a/bacula/src/lib/message.c +++ b/bacula/src/lib/message.c @@ -868,12 +868,6 @@ Jmsg(void *vjcr, int type, int level, char *fmt,...) * Check if we have a message destination defined. * We always report M_ABORT and M_ERROR_TERM */ - - /* There is an apparent compiler bug with the following if - * statement, so the set_jcr... is simply a noop to reload - * registers. - */ - set_jcr_job_status(jcr, jcr->JobStatus); if (msgs && (type != M_ABORT && type != M_ERROR_TERM) && !bit_is_set(type, msgs->send_msg)) { return; /* no destination */ diff --git a/bacula/src/lib/smartall.c b/bacula/src/lib/smartall.c index 5b7bda5795..c7b81f177c 100644 --- a/bacula/src/lib/smartall.c +++ b/bacula/src/lib/smartall.c @@ -108,7 +108,6 @@ static void *smalloc(char *fname, int lineno, unsigned int nbytes) buf += HEAD_SIZE; /* Increment to user data start */ V(mutex); } - sm_check(fname, lineno, True); Dmsg4(1150, "smalloc %d at %x from %s:%d\n", nbytes, buf, fname, lineno); return (void *)buf; } @@ -134,7 +133,6 @@ void sm_free(char *file, int line, void *fp) char *cp = (char *) fp; struct b_queue *qp; - sm_check(__FILE__, __LINE__, True); if (cp == NULL) { Emsg2(M_ABORT, 0, "Attempt to free NULL called from %s:%d\n", file, line); } @@ -230,7 +228,6 @@ void *sm_realloc(char *fname, int lineno, void *ptr, unsigned int size) char *cp = (char *) ptr; Dmsg4(400, "sm_realloc %s:%d 0x%x %d\n", fname, lineno, ptr, size); - sm_check(fname, lineno, True); if (size <= 0) { e_msg(fname, lineno, M_ABORT, 0, "sm_realloc size: %d\n", size); } @@ -269,7 +266,6 @@ void *sm_realloc(char *fname, int lineno, void *ptr, unsigned int size) sm_free(__FILE__, __LINE__, ptr); } Dmsg4(150, "sm_realloc %d at %x from %s:%d\n", size, buf, fname, lineno); - sm_check(fname, lineno, True); return buf; } diff --git a/bacula/src/stored/append.c b/bacula/src/stored/append.c index 3d5ca9009a..b425ecdabc 100644 --- a/bacula/src/stored/append.c +++ b/bacula/src/stored/append.c @@ -51,8 +51,6 @@ int do_append_data(JCR *jcr) /* Tell File daemon to send data */ bnet_fsend(fd_sock, OK_data); - sm_check(__FILE__, __LINE__, False); - if (!jcr->no_attributes && jcr->spool_attributes) { open_spool_file(jcr, jcr->dir_bsock); } @@ -80,8 +78,6 @@ int do_append_data(JCR *jcr) free_block(block); return 0; } - sm_check(__FILE__, __LINE__, False); - Dmsg0(100, "Just after acquire_device_for_append\n"); /* * Write Begin Session Record @@ -93,8 +89,6 @@ int do_append_data(JCR *jcr) ok = FALSE; } - sm_check(__FILE__, __LINE__, False); - memset(&rec, 0, sizeof(rec)); /* @@ -135,7 +129,6 @@ int do_append_data(JCR *jcr) ok = FALSE; break; } - sm_check(__FILE__, __LINE__, False); ds->msg[ds->msglen] = 0; if (sscanf(ds->msg, "%ld %ld %100s", &file_index, &stream, info) != 3) { Jmsg1(jcr, M_FATAL, 0, _("Malformed data header from FD: %s\n"), ds->msg); @@ -161,10 +154,8 @@ int do_append_data(JCR *jcr) /* Read data stream from the File daemon. * The data stream is just raw bytes */ - sm_check(__FILE__, __LINE__, False); while ((n=bget_msg(ds)) > 0 && !job_cancelled(jcr)) { - sm_check(__FILE__, __LINE__, False); rec.VolSessionId = jcr->VolSessionId; rec.VolSessionTime = jcr->VolSessionTime; rec.FileIndex = file_index; @@ -188,7 +179,6 @@ int do_append_data(JCR *jcr) break; } } - sm_check(__FILE__, __LINE__, False); if (!ok) { Dmsg0(400, "Not OK\n"); break; @@ -216,7 +206,6 @@ int do_append_data(JCR *jcr) jcr->dir_bsock->spool = 0; } } - sm_check(__FILE__, __LINE__, False); } if (is_bnet_error(ds)) { Jmsg1(jcr, M_FATAL, 0, _("Network error on data channel. ERR=%s\n"), @@ -229,7 +218,6 @@ int do_append_data(JCR *jcr) * We probably need a new flag that says "Do not attempt * to write because there is no tape". */ - sm_check(__FILE__, __LINE__, False); Dmsg0(90, "Write_end_session_label()\n"); /* Create Job status for end of session label */ diff --git a/bacula/src/stored/bscan.c b/bacula/src/stored/bscan.c index 711b1ae4c5..e5878af641 100644 --- a/bacula/src/stored/bscan.c +++ b/bacula/src/stored/bscan.c @@ -228,7 +228,7 @@ int main (int argc, char *argv[]) if ((db=db_init_database(NULL, db_name, db_user, db_password)) == NULL) { Emsg0(M_ERROR_TERM, 0, _("Could not init Bacula database\n")); } - if (!db_open_database(db)) { + if (!db_open_database(NULL, db)) { Emsg0(M_ERROR_TERM, 0, db_strerror(db)); } Dmsg0(200, "Database opened\n"); @@ -300,7 +300,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) /* Check Pool info */ strcpy(pr.Name, dev->VolHdr.PoolName); strcpy(pr.PoolType, dev->VolHdr.PoolType); - if (db_get_pool_record(db, &pr)) { + if (db_get_pool_record(bjcr, db, &pr)) { if (verbose) { Pmsg1(000, _("Pool record for %s found in DB.\n"), pr.Name); } @@ -323,7 +323,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) memset(&mr, 0, sizeof(mr)); strcpy(mr.VolumeName, dev->VolHdr.VolName); mr.PoolId = pr.PoolId; - if (db_get_media_record(db, &mr)) { + if (db_get_media_record(bjcr, db, &mr)) { if (verbose) { Pmsg1(000, _("Media record for %s found in DB.\n"), mr.VolumeName); } @@ -364,7 +364,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) unser_session_label(&label, rec); memset(&jr, 0, sizeof(jr)); jr.JobId = label.JobId; - if (db_get_job_record(db, &jr)) { + if (db_get_job_record(bjcr, db, &jr)) { /* Job record already exists in DB */ update_db = 0; /* don't change db in create_job_record */ if (verbose) { @@ -472,7 +472,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) jr.JobTDate = (utime_t)mjcr->start_time; jr.ClientId = mjcr->ClientId; free_jcr(mjcr); - if (!db_update_job_end_record(db, &jr)) { + if (!db_update_job_end_record(bjcr, db, &jr)) { Pmsg1(0, _("Could not update job record. ERR=%s\n"), db_strerror(db)); } } @@ -552,7 +552,7 @@ static void record_cb(JCR *bjcr, DEVICE *dev, DEV_BLOCK *block, DEV_RECORD *rec) } fr.JobId = mjcr->JobId; fr.FileId = 0; - if (db_get_file_attributes_record(db, fname, &fr)) { + if (db_get_file_attributes_record(bjcr, db, fname, &fr)) { if (verbose > 1) { Pmsg1(000, _("File record already exists for: %s\n"), fname); } @@ -690,7 +690,7 @@ static int create_file_attributes_record(B_DB *db, JCR *mjcr, return 1; } - if (!db_create_file_attributes_record(db, &ar)) { + if (!db_create_file_attributes_record(bjcr, db, &ar)) { Pmsg1(0, _("Could not create File Attributes record. ERR=%s\n"), db_strerror(db)); return 0; } @@ -732,11 +732,11 @@ static int create_media_record(B_DB *db, MEDIA_DBR *mr, VOLUME_LABEL *vl) return 1; } - if (!db_create_media_record(db, mr)) { + if (!db_create_media_record(bjcr, db, mr)) { Pmsg1(0, _("Could not create media record. ERR=%s\n"), db_strerror(db)); return 0; } - if (!db_update_media_record(db, mr)) { + if (!db_update_media_record(bjcr, db, mr)) { Pmsg1(0, _("Could not update media record. ERR=%s\n"), db_strerror(db)); return 0; } @@ -757,7 +757,7 @@ static int update_media_record(B_DB *db, MEDIA_DBR *mr) } mr->LastWritten = lasttime; - if (!db_update_media_record(db, mr)) { + if (!db_update_media_record(bjcr, db, mr)) { Pmsg1(0, _("Could not update media record. ERR=%s\n"), db_strerror(db)); return 0; } @@ -778,7 +778,7 @@ static int create_pool_record(B_DB *db, POOL_DBR *pr) if (!update_db) { return 1; } - if (!db_create_pool_record(db, pr)) { + if (!db_create_pool_record(bjcr, db, pr)) { Pmsg1(0, _("Could not create pool record. ERR=%s\n"), db_strerror(db)); return 0; } @@ -798,7 +798,7 @@ static int create_client_record(B_DB *db, CLIENT_DBR *cr) if (!update_db) { return 1; } - if (!db_create_client_record(db, cr)) { + if (!db_create_client_record(bjcr, db, cr)) { Pmsg1(0, _("Could not create Client record. ERR=%s\n"), db_strerror(db)); return 0; } @@ -818,12 +818,12 @@ static int create_fileset_record(B_DB *db, FILESET_DBR *fsr) fsr->MD5[0] = ' '; /* Equivalent to nothing */ fsr->MD5[1] = 0; } - if (db_get_fileset_record(db, fsr)) { + if (db_get_fileset_record(bjcr, db, fsr)) { if (verbose) { Pmsg1(000, _("Fileset \"%s\" already exists.\n"), fsr->FileSet); } } else { - if (!db_create_fileset_record(db, fsr)) { + if (!db_create_fileset_record(bjcr, db, fsr)) { Pmsg2(0, _("Could not create FileSet record \"%s\". ERR=%s\n"), fsr->FileSet, db_strerror(db)); return 0; @@ -875,13 +875,13 @@ static JCR *create_job_record(B_DB *db, JOB_DBR *jr, SESSION_LABEL *label, } /* This creates the bare essentials */ - if (!db_create_job_record(db, jr)) { + if (!db_create_job_record(bjcr, db, jr)) { Pmsg1(0, _("Could not create JobId record. ERR=%s\n"), db_strerror(db)); return mjcr; } /* This adds the client, StartTime, JobTDate, ... */ - if (!db_update_job_start_record(db, jr)) { + if (!db_update_job_start_record(bjcr, db, jr)) { Pmsg1(0, _("Could not update job start record. ERR=%s\n"), db_strerror(db)); return mjcr; } @@ -934,7 +934,7 @@ static int update_job_record(B_DB *db, JOB_DBR *jr, SESSION_LABEL *elabel, return 1; } - if (!db_update_job_end_record(db, jr)) { + if (!db_update_job_end_record(bjcr, db, jr)) { Pmsg2(0, _("Could not update JobId=%u record. ERR=%s\n"), jr->JobId, db_strerror(db)); free_jcr(mjcr); return 0; @@ -1026,7 +1026,7 @@ static int create_jobmedia_record(B_DB *db, JCR *mjcr) return 1; } - if (!db_create_jobmedia_record(db, &jmr)) { + if (!db_create_jobmedia_record(bjcr, db, &jmr)) { Pmsg1(0, _("Could not create JobMedia record. ERR=%s\n"), db_strerror(db)); return 0; } @@ -1060,7 +1060,7 @@ static int update_MD5_record(B_DB *db, char *MD5buf, DEV_RECORD *rec) return 1; } - if (!db_add_MD5_to_file_record(db, mjcr->FileId, MD5buf)) { + if (!db_add_MD5_to_file_record(bjcr, db, mjcr->FileId, MD5buf)) { Pmsg1(0, _("Could not add MD5 to File record. ERR=%s\n"), db_strerror(db)); free_jcr(mjcr); return 0; diff --git a/bacula/src/stored/record.c b/bacula/src/stored/record.c index e55a514997..9a68849af2 100644 --- a/bacula/src/stored/record.c +++ b/bacula/src/stored/record.c @@ -178,7 +178,6 @@ int write_record_to_block(DEV_BLOCK *block, DEV_RECORD *rec) ser_declare; uint32_t remlen; - sm_check(__FILE__, __LINE__, False); remlen = block->buf_len - block->binbuf; ASSERT(block->binbuf == (uint32_t) (block->bufp - block->buf)); @@ -216,7 +215,6 @@ rem=%d remainder=%d\n", rec->remainder = rec->data_len; } else { rec->remainder = rec->data_len + WRITE_RECHDR_LENGTH; - sm_check(__FILE__, __LINE__, False); return 0; } } else { @@ -261,7 +259,6 @@ rem=%d remainder=%d\n", remlen -= WRITE_RECHDR_LENGTH; } if (remlen == 0) { - sm_check(__FILE__, __LINE__, False); return 0; /* partial transfer */ } @@ -280,7 +277,7 @@ rem=%d remainder=%d\n", } else { memcpy(block->bufp, rec->data+rec->data_len-rec->remainder, remlen); -#ifdef SMCHECK +#ifdef xxxxxSMCHECK if (!sm_check_rtn(__FILE__, __LINE__, False)) { /* We damaged a buffer */ Dmsg6(0, "Damaged block FI=%s SessId=%d Strm=%s len=%d\n\ @@ -305,7 +302,6 @@ rem=%d remainder=%d\n", } } rec->remainder = 0; /* did whole transfer */ - sm_check(__FILE__, __LINE__, False); return 1; } diff --git a/bacula/src/tools/dbcheck.c b/bacula/src/tools/dbcheck.c index 0d6df331e9..819b39e543 100644 --- a/bacula/src/tools/dbcheck.c +++ b/bacula/src/tools/dbcheck.c @@ -161,7 +161,7 @@ int main (int argc, char *argv[]) /* Open database */ db = db_init_database(NULL, db_name, user, password); - if (!db_open_database(db)) { + if (!db_open_database(NULL, db)) { Emsg1(M_FATAL, 0, "%s", db_strerror(db)); } @@ -177,7 +177,7 @@ int main (int argc, char *argv[]) do_interactive_mode(); } - db_close_database(db); + db_close_database(NULL, db); close_msg(NULL); term_msg(); return 0; -- 2.39.5