jobid = bacula.get(j, "JobId")
client = bacula.get(j, "Client")
bacula.set(jcr=j, JobReport="Python EndJob output: JobId=%d Client=%s.\n" % (jobid, client))
- if (jobid < 5) :
+ if (jobid < 2) :
startid = bacula.run(j, "run kernsave")
print "Python started new Job: jobid=", startid
# waiting a maximum of 180 seconds.
# Note, this is very system dependent, so if you are
# not running on Linux, you will probably need to
-# re-write it.
-#
-# If you have a FreeBSD system, you might want to change
-# the $(seq 180) to $(jot 180) -- tip from Brian McDonald
+# re-write it, or at least change the grep target.
#
wait_for_drive() {
- for i in $(seq 180); do # Wait max 180 seconds
+ i=0
+ while [ $i -le 180 ]; do # Wait max 180 seconds
if mt -f $1 status | grep ONLINE >/dev/null 2>&1; then
break
fi
# echo "Device $1 - not ready, retrying..."
sleep 1
+ i=`expr $i + 1`
done
}
AutoPrune TINYINT DEFAULT 0,
Recycle TINYINT DEFAULT 0,
PoolType ENUM('Backup', 'Copy', 'Cloned', 'Archive', 'Migration', 'Scratch') NOT NULL,
+ LabelType TINYINT NOT NULL DEFAULT 0,
LabelFormat TINYBLOB,
Enabled TINYINT DEFAULT 1,
ScratchPoolId INTEGER UNSIGNED DEFAULT 0 REFERENCES Pool,
recycle smallint not null default 0,
pooltype text
check (pooltype is null or (pooltype in ('Backup','Copy','Cloned','Archive','Migration'))),
- labelformat text not null,
- enabled smallint not null default 1,
+ labeltype integer not null default 0,
+ labelformat text not null,
+ enabled smallint not null default 1,
scratchpoolid integer,
recyclepoolid integer,
primary key (poolid)
AutoPrune TINYINT DEFAULT 0,
Recycle TINYINT DEFAULT 0,
PoolType VARCHAR(20) NOT NULL,
+ LabelType TINYINT DEFAULT 0,
LabelFormat VARCHAR(128) NOT NULL,
Enabled TINYINT DEFAULT 1,
ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
AutoPrune TINYINT DEFAULT 0,
Recycle TINYINT DEFAULT 0,
PoolType VARCHAR(20) NOT NULL,
+ LabelType TINYINT DEFAULT 0,
LabelFormat VARCHAR(128) NOT NULL,
Enabled TINYINT DEFAULT 1,
ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
Mmsg(mdb->cmd,
"INSERT INTO Pool (Name,NumVols,MaxVols,UseOnce,UseCatalog,"
"AcceptAnyVolume,AutoPrune,Recycle,VolRetention,VolUseDuration,"
-"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelFormat) "
-"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s','%s')",
+"MaxVolJobs,MaxVolFiles,MaxVolBytes,PoolType,LabelType,LabelFormat) "
+"VALUES ('%s',%u,%u,%d,%d,%d,%d,%d,%s,%s,%u,%u,%s,'%s',%d,'%s')",
pr->Name,
pr->NumVols, pr->MaxVols,
pr->UseOnce, pr->UseCatalog,
edit_uint64(pr->VolUseDuration, ed2),
pr->MaxVolJobs, pr->MaxVolFiles,
edit_uint64(pr->MaxVolBytes, ed3),
- pr->PoolType, pr->LabelFormat);
+ pr->PoolType, pr->LabelType, pr->LabelFormat);
Dmsg1(200, "Create Pool: %s\n", mdb->cmd);
if (!INSERT_DB(jcr, mdb, mdb->cmd)) {
Mmsg2(&mdb->errmsg, _("Create db Pool record %s failed: ERR=%s\n"),
{
SQL_ROW row;
int stat = 0;
+ char ed1[50], ed2[50], ed3[50];
if (jcr->JobLevel == L_VERIFY_DISK_TO_CATALOG) {
Mmsg(mdb->cmd,
"SELECT FileId, LStat, MD5 FROM File,Job WHERE "
-"File.JobId=Job.JobId AND File.PathId=%u AND "
-"File.FilenameId=%u AND Job.Type='B' AND Job.JobSTATUS='T' AND "
-"ClientId=%u ORDER BY StartTime DESC LIMIT 1",
- fdbr->PathId, fdbr->FilenameId, jr->ClientId);
+"File.JobId=Job.JobId AND File.PathId=%s AND "
+"File.FilenameId=%s AND Job.Type='B' AND Job.JobSTATUS='T' AND "
+"ClientId=%s ORDER BY StartTime DESC LIMIT 1",
+ edit_int64(fdbr->PathId, ed1),
+ edit_int64(fdbr->FilenameId, ed2),
+ edit_int64(jr->ClientId,ed3));
+
} else {
Mmsg(mdb->cmd,
"SELECT FileId, LStat, MD5 FROM File WHERE File.JobId=%u AND File.PathId=%u AND "
int db_get_job_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
{
SQL_ROW row;
+ char ed1[50];
db_lock(mdb);
if (jr->JobId == 0) {
Mmsg(mdb->cmd, "SELECT VolSessionId,VolSessionTime,"
"PoolId,StartTime,EndTime,JobFiles,JobBytes,JobTDate,Job,JobStatus,"
"Type,Level,ClientId "
-"FROM Job WHERE JobId=%u", jr->JobId);
+"FROM Job WHERE JobId=%s",
+ edit_int64(jr->JobId, ed1));
}
if (!QUERY_DB(jcr, mdb, mdb->cmd)) {
jr->VolSessionId = str_to_uint64(row[0]);
jr->VolSessionTime = str_to_uint64(row[1]);
- jr->PoolId = str_to_uint64(row[2]);
+ jr->PoolId = str_to_int64(row[2]);
bstrncpy(jr->cStartTime, row[3]!=NULL?row[3]:"", sizeof(jr->cStartTime));
bstrncpy(jr->cEndTime, row[4]!=NULL?row[4]:"", sizeof(jr->cEndTime));
jr->JobFiles = atol(row[5]);
"SELECT VolumeName,MAX(VolIndex) FROM JobMedia,Media WHERE "
"JobMedia.JobId=%s AND JobMedia.MediaId=Media.MediaId "
"GROUP BY VolumeName "
- "ORDER BY 2 ASC", edit_uint64(JobId,ed1));
+ "ORDER BY 2 ASC", edit_int64(JobId,ed1));
Dmsg1(130, "VolNam=%s\n", mdb->cmd);
*VolumeNames[0] = 0;
{
SQL_ROW row;
int stat = 0;
+ char ed1[50];
db_lock(mdb);
if (pdbr->PoolId != 0) { /* find by id */
Mmsg(mdb->cmd,
"SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,"
"AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,"
-"MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.PoolId=%u", pdbr->PoolId);
+"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.PoolId=%s",
+ edit_int64(pdbr->PoolId, ed1));
} else { /* find by name */
Mmsg(mdb->cmd,
"SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,AcceptAnyVolume,"
"AutoPrune,Recycle,VolRetention,VolUseDuration,MaxVolJobs,MaxVolFiles,"
-"MaxVolBytes,PoolType,LabelFormat FROM Pool WHERE Pool.Name='%s'", pdbr->Name);
+"MaxVolBytes,PoolType,LabelType,LabelFormat FROM Pool WHERE Pool.Name='%s'",
+ pdbr->Name);
}
if (QUERY_DB(jcr, mdb, mdb->cmd)) {
pdbr->MaxVolJobs = str_to_int64(row[11]);
pdbr->MaxVolFiles = str_to_int64(row[12]);
pdbr->MaxVolBytes = str_to_uint64(row[13]);
- bstrncpy(pdbr->PoolType, row[13]!=NULL?row[14]:"", sizeof(pdbr->PoolType));
- bstrncpy(pdbr->LabelFormat, row[14]!=NULL?row[15]:"", sizeof(pdbr->LabelFormat));
+ bstrncpy(pdbr->PoolType, row[14]!=NULL?row[14]:"", sizeof(pdbr->PoolType));
+ pdbr->LabelType = str_to_int64(row[15]);
+ bstrncpy(pdbr->LabelFormat, row[16]!=NULL?row[16]:"", sizeof(pdbr->LabelFormat));
stat = pdbr->PoolId;
}
} else {
{
SQL_ROW row;
int stat = 0;
+ char ed1[50];
db_lock(mdb);
if (cdbr->ClientId != 0) { /* find by id */
Mmsg(mdb->cmd,
"SELECT ClientId,Name,Uname,AutoPrune,FileRetention,JobRetention "
-"FROM Client WHERE Client.ClientId=%u", cdbr->ClientId);
+"FROM Client WHERE Client.ClientId=%s",
+ edit_int64(cdbr->ClientId, ed1));
} else { /* find by name */
Mmsg(mdb->cmd,
"SELECT ClientId,Name,Uname,AutoPrune,FileRetention,JobRetention "
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(jcr, M_ERROR, 0, "%s", mdb->errmsg);
{
SQL_ROW row;
int stat = 0;
+ char ed1[50];
db_lock(mdb);
if (fsr->FileSetId != 0) { /* find by id */
Mmsg(mdb->cmd,
"SELECT FileSetId,FileSet,MD5,CreateTime FROM FileSet "
- "WHERE FileSetId=%u", fsr->FileSetId);
+ "WHERE FileSetId=%s",
+ edit_int64(fsr->FileSetId, ed1));
} else { /* find by name */
Mmsg(mdb->cmd,
"SELECT FileSetId,FileSet,CreateTime,MD5 FROM FileSet "
if ((row = sql_fetch_row(mdb)) == NULL) {
Mmsg1(&mdb->errmsg, _("FileSet record \"%s\" not found.\n"), fsr->FileSet);
} else {
- fsr->FileSetId = atoi(row[0]);
+ fsr->FileSetId = str_to_int64(row[0]);
bstrncpy(fsr->FileSet, row[1]!=NULL?row[1]:"", sizeof(fsr->FileSet));
bstrncpy(fsr->MD5, row[2]!=NULL?row[2]:"", sizeof(fsr->MD5));
bstrncpy(fsr->cCreateTime, row[3]!=NULL?row[3]:"", sizeof(fsr->cCreateTime));
int stat = 0;
int i = 0;
uint32_t *id;
+ char ed1[50];
db_lock(mdb);
*ids = NULL;
- Mmsg(mdb->cmd, "SELECT MediaId FROM Media WHERE PoolId=%u", PoolId);
+ Mmsg(mdb->cmd, "SELECT MediaId FROM Media WHERE PoolId=%s",
+ edit_int64(PoolId, ed1));
if (QUERY_DB(jcr, mdb, mdb->cmd)) {
*num_ids = sql_num_rows(mdb);
if (*num_ids > 0) {
{
SQL_ROW row;
int stat = 0;
+ char ed1[50];
db_lock(mdb);
if (mr->MediaId == 0 && mr->VolumeName[0] == 0) {
"MediaType,VolStatus,PoolId,VolRetention,VolUseDuration,MaxVolJobs,"
"MaxVolFiles,Recycle,Slot,FirstWritten,LastWritten,InChanger,"
"EndFile,EndBlock,VolParts,LabelType "
- "FROM Media WHERE MediaId=%u", mr->MediaId);
+ "FROM Media WHERE MediaId=%s",
+ edit_int64(mr->MediaId, ed1));
} else { /* find by name */
Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,VolJobs,VolFiles,VolBlocks,"
"VolBytes,VolMounts,VolErrors,VolWrites,MaxVolBytes,VolCapacityBytes,"
Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,UseOnce,UseCatalog,"
"AcceptAnyVolume,VolRetention,VolUseDuration,MaxVolJobs,MaxVolBytes,"
"AutoPrune,Recycle,PoolType,LabelFormat,Enabled,ScratchPoolId,"
- "RecyclePoolId "
- "FROM Pool ORDER BY PoolId");
+ "RecyclePoolId,LabelType "
+ " FROM Pool ORDER BY PoolId");
} else {
Mmsg(mdb->cmd, "SELECT PoolId,Name,NumVols,MaxVols,PoolType,LabelFormat "
"FROM Pool ORDER BY PoolId");
"VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
"VolCapacityBytes,VolStatus,Recycle,VolRetention,"
"VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
- "EndFile,EndBlock,VolParts,LabelType "
- "FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName);
+ "EndFile,EndBlock,VolParts,LabelType"
+ " FROM Media WHERE Media.VolumeName='%s'", mdbr->VolumeName);
} else {
Mmsg(mdb->cmd, "SELECT MediaId,VolumeName,Slot,PoolId,"
"MediaType,FirstWritten,LastWritten,LabelDate,VolJobs,"
"VolFiles,VolBlocks,VolMounts,VolBytes,VolErrors,VolWrites,"
"VolCapacityBytes,VolStatus,Recycle,VolRetention,"
"VolUseDuration,MaxVolJobs,MaxVolFiles,MaxVolBytes,InChanger,"
- "EndFile,EndBlock,VolParts,LabelType "
- "FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
+ "EndFile,EndBlock,VolParts,LabelType"
+ " FROM Media WHERE Media.PoolId=%u ORDER BY MediaId", mdbr->PoolId);
}
} else {
if (mdbr->VolumeName[0] != 0) {
db_update_pool_record(JCR *jcr, B_DB *mdb, POOL_DBR *pr)
{
int stat;
- char ed1[50], ed2[50], ed3[50];
+ char ed1[50], ed2[50], ed3[50], ed4[50];
db_lock(mdb);
Mmsg(mdb->cmd,
"UPDATE Pool SET NumVols=%u,MaxVols=%u,UseOnce=%d,UseCatalog=%d,"
"AcceptAnyVolume=%d,VolRetention='%s',VolUseDuration='%s',"
"MaxVolJobs=%u,MaxVolFiles=%u,MaxVolBytes=%s,Recycle=%d,"
-"AutoPrune=%d,LabelFormat='%s' WHERE PoolId=%u",
+"AutoPrune=%d,LabelType=%d,LabelFormat='%s' WHERE PoolId=%s",
pr->NumVols, pr->MaxVols, pr->UseOnce, pr->UseCatalog,
pr->AcceptAnyVolume, edit_uint64(pr->VolRetention, ed1),
edit_uint64(pr->VolUseDuration, ed2),
pr->MaxVolJobs, pr->MaxVolFiles,
edit_uint64(pr->MaxVolBytes, ed3),
- pr->Recycle, pr->AutoPrune,
- pr->LabelFormat, pr->PoolId);
+ pr->Recycle, pr->AutoPrune, pr->LabelType,
+ pr->LabelFormat,
+ edit_int64(pr->PoolId, ed4));
stat = UPDATE_DB(jcr, mdb, mdb->cmd);
db_unlock(mdb);
localtime_r(&ttime, &tm);
strftime(dt, sizeof(dt), "%Y-%m-%d %T", &tm);
Mmsg(mdb->cmd, "UPDATE Media SET FirstWritten='%s'"
-" WHERE VolumeName='%s'", dt, mr->VolumeName);
+ " WHERE VolumeName='%s'", dt, mr->VolumeName);
stat = UPDATE_DB(jcr, mdb, mdb->cmd);
Dmsg1(400, "Firstwritten stat=%d\n", stat);
}
USE bacula;
ALTER TABLE Media ADD COLUMN LabelType INTEGER UNSIGNED NOT NULL DEFAULT 0;
+ALTER TABLE Pool ADD COLUMN LabelType INTEGER UNSIGNED NOT NULL DEFAULT 0;
ALTER TABLE Media ADD COLUMN VolParts INTEGER UNSIGNED NOT NULL DEFAULT 0;
END-OF-DATA
ALTER TABLE media ADD COLUMN labeltype integer;
UPDATE media SET labeltype=0;
ALTER TABLE media ALTER COLUMN labeltype SET NOT NULL;
+ALTER TABLE pool ADD COLUMN labeltype integer;
+UPDATE pool set labeltype=0;
+ALTER TABLE pool ALTER COLUMN labeltype SET NOT NULL;
ALTER TABLE media ADD COLUMN volparts integer;
UPDATE media SET volparts=0;
DROP TABLE Media_backup;
+CREATE TEMPORARY TABLE Pool_backup (
+ PoolId INTEGER,
+ Name VARCHAR(128) NOT NULL,
+ NumVols INTEGER UNSIGNED DEFAULT 0,
+ MaxVols INTEGER UNSIGNED DEFAULT 0,
+ UseOnce TINYINT DEFAULT 0,
+ UseCatalog TINYINT DEFAULT 1,
+ AcceptAnyVolume TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+ MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+ MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+ MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+ AutoPrune TINYINT DEFAULT 0,
+ Recycle TINYINT DEFAULT 0,
+ PoolType VARCHAR(20) NOT NULL,
+ LabelType TINYINT DEFAULT 0,
+ LabelFormat VARCHAR(128) NOT NULL,
+ Enabled TINYINT DEFAULT 1,
+ ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ UNIQUE (Name),
+ PRIMARY KEY (PoolId)
+ );
+
+INSERT INTO Pool_backup SELECT
+ PoolId, Name, NumVols, MaxVols,
+ UseOnce, UseCatalog, AcceptAnyVolume,
+ VolRetention, VolUseDuration, MaxVolJobs,
+ MaxVolFiles, MaxVolBytes, AutoPrune,
+ Recycle, PoolType, 0, LabelFormat,
+ Enabled, ScratchPoolId, RecyclePoolId
+ FROM Pool;
+
+DROP TABLE Pool;
+
+CREATE TABLE Pool (
+ PoolId INTEGER,
+ Name VARCHAR(128) NOT NULL,
+ NumVols INTEGER UNSIGNED DEFAULT 0,
+ MaxVols INTEGER UNSIGNED DEFAULT 0,
+ UseOnce TINYINT DEFAULT 0,
+ UseCatalog TINYINT DEFAULT 1,
+ AcceptAnyVolume TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+ MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+ MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+ MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+ AutoPrune TINYINT DEFAULT 0,
+ Recycle TINYINT DEFAULT 0,
+ PoolType VARCHAR(20) NOT NULL,
+ LabelType TINYINT DEFAULT 0,
+ LabelFormat VARCHAR(128) NOT NULL,
+ Enabled TINYINT DEFAULT 1,
+ ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ UNIQUE (Name),
+ PRIMARY KEY (PoolId)
+ );
+
+INSERT INTO Pool (
+ PoolId, Name, NumVols, MaxVols,
+ UseOnce, UseCatalog, AcceptAnyVolume,
+ VolRetention, VolUseDuration, MaxVolJobs,
+ MaxVolFiles, MaxVolBytes, AutoPrune,
+ Recycle, PoolType, LabelType, LabelFormat,
+ Enabled, ScratchPoolId, RecyclePoolId )
+ SELECT * FROM Pool_backup;
+
+DROP TABLE Pool_backup;
+
COMMIT;
END-OF-DATA
DROP TABLE Media_backup;
+CREATE TEMPORARY TABLE Pool_backup (
+ PoolId INTEGER,
+ Name VARCHAR(128) NOT NULL,
+ NumVols INTEGER UNSIGNED DEFAULT 0,
+ MaxVols INTEGER UNSIGNED DEFAULT 0,
+ UseOnce TINYINT DEFAULT 0,
+ UseCatalog TINYINT DEFAULT 1,
+ AcceptAnyVolume TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+ MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+ MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+ MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+ AutoPrune TINYINT DEFAULT 0,
+ Recycle TINYINT DEFAULT 0,
+ PoolType VARCHAR(20) NOT NULL,
+ LabelType TINYINT DEFAULT 0,
+ LabelFormat VARCHAR(128) NOT NULL,
+ Enabled TINYINT DEFAULT 1,
+ ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ UNIQUE (Name),
+ PRIMARY KEY (PoolId)
+ );
+
+INSERT INTO Pool_backup SELECT
+ PoolId, Name, NumVols, MaxVols,
+ UseOnce, UseCatalog, AcceptAnyVolume,
+ VolRetention, VolUseDuration, MaxVolJobs,
+ MaxVolFiles, MaxVolBytes, AutoPrune,
+ Recycle, PoolType, 0, LabelFormat,
+ Enabled, ScratchPoolId, RecyclePoolId
+ FROM Pool;
+
+DROP TABLE Pool;
+
+CREATE TABLE Pool (
+ PoolId INTEGER,
+ Name VARCHAR(128) NOT NULL,
+ NumVols INTEGER UNSIGNED DEFAULT 0,
+ MaxVols INTEGER UNSIGNED DEFAULT 0,
+ UseOnce TINYINT DEFAULT 0,
+ UseCatalog TINYINT DEFAULT 1,
+ AcceptAnyVolume TINYINT DEFAULT 0,
+ VolRetention BIGINT UNSIGNED DEFAULT 0,
+ VolUseDuration BIGINT UNSIGNED DEFAULT 0,
+ MaxVolJobs INTEGER UNSIGNED DEFAULT 0,
+ MaxVolFiles INTEGER UNSIGNED DEFAULT 0,
+ MaxVolBytes BIGINT UNSIGNED DEFAULT 0,
+ AutoPrune TINYINT DEFAULT 0,
+ Recycle TINYINT DEFAULT 0,
+ PoolType VARCHAR(20) NOT NULL,
+ LabelType TINYINT DEFAULT 0,
+ LabelFormat VARCHAR(128) NOT NULL,
+ Enabled TINYINT DEFAULT 1,
+ ScratchPoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ RecyclePoolId INTEGER UNSIGNED REFERENCES Pool DEFAULT 0,
+ UNIQUE (Name),
+ PRIMARY KEY (PoolId)
+ );
+
+INSERT INTO Pool (
+ PoolId, Name, NumVols, MaxVols,
+ UseOnce, UseCatalog, AcceptAnyVolume,
+ VolRetention, VolUseDuration, MaxVolJobs,
+ MaxVolFiles, MaxVolBytes, AutoPrune,
+ Recycle, PoolType, LabelType, LabelFormat,
+ Enabled, ScratchPoolId, RecyclePoolId )
+ SELECT * FROM Pool_backup;
+
+DROP TABLE Pool_backup;
+
COMMIT;
END-OF-DATA
edit_utime(res->res_pool.VolUseDuration, ed1, sizeof(ed1)),
res->res_pool.Recycle,
NPRT(res->res_pool.label_format));
- sendit(sock, " CleaningPrefix=%s\n",
- NPRT(res->res_pool.cleaning_prefix));
+ sendit(sock, " CleaningPrefix=%s LabelType=%d\n",
+ NPRT(res->res_pool.cleaning_prefix), res->res_pool.LabelType);
sendit(sock, " RecyleOldest=%d PurgeOldest=%d MaxVolJobs=%d MaxVolFiles=%d\n",
res->res_pool.recycle_oldest_volume,
res->res_pool.purge_oldest_volume,
Dmsg1(90, "session_label record=%x\n", rec);
switch (label) {
case SOS_LABEL:
- if (dev->state & ST_TAPE) {
+ if (dev->is_tape()) {
dcr->StartBlock = dev->block_num;
dcr->StartFile = dev->file;
} else {
}
break;
case EOS_LABEL:
- if (dev->state & ST_TAPE) {
+ if (dev->is_tape()) {
dcr->EndBlock = dev->EndBlock;
dcr->EndFile = dev->EndFile;
} else {
int len;
int stat;
+ Dmsg1(100, "LabelType=%d\n", dcr->VolCatInfo.LabelType);
switch (dcr->VolCatInfo.LabelType) {
case B_BACULA_LABEL:
return true;
case B_ANSI_LABEL:
case B_IBM_LABEL:
ser_declare;
- Dmsg0(000, "Write ansi label.\n");
+ Dmsg0(100, "Write ansi label.\n");
len = strlen(VolName);
if (len > 6) {
len = 6; /* max len ANSI label */
* If tape read the following EOF mark, on disk do
* not read.
*/
- Dmsg0(000, "Read ansi label.\n");
- if (dev->state & ST_TAPE) {
+ Dmsg0(100, "Read ansi label.\n");
+ if (dev->is_tape()) {
num_rec = 4;
} else {
num_rec = 3;
Mmsg2(dev->errmsg, _("Read error on device %s in ANSI/IBM label. ERR=%s\n"),
dev->dev_name, be.strerror());
Jmsg(jcr, M_ERROR, 0, "%s", dev->errmsg);
- if (dev->state & ST_EOF) { /* EOF just seen? */
+ if (dev->at_eof()) { /* EOF just seen? */
dev->state |= ST_EOT; /* yes, error => EOT */
}
return VOL_IO_ERROR;
}
- Dmsg1(000, "ANSI label=%80s\n", label);
}
return VOL_OK;
}
td = time(NULL);
}
tm = gmtime(&td);
- bsnprintf(buf, 6, "%d", 1000 * (tm->tm_year + 1900 - 2000) + tm->tm_yday);
+ bsnprintf(buf, 10, "%d ", 1000 * (tm->tm_year + 1900 - 2000) + tm->tm_yday);
return buf;
}