bool ok = true;
char tbuf[100];
bsteal_lock_t holder;
+ bool read_dev;
dev->Lock();
if (!obtain_device_block(dev,
/* if device is reserved, job never started, so release the reserve here */
dcr->clear_reserved();
- if (dev->can_read()) {
+ read_dev = dev->can_read();
+ if (read_dev) {
VOLUME_CAT_INFO *vol = &dev->VolCatInfo;
generate_plugin_event(jcr, bsdEventDeviceClose, dcr);
dev->clear_read(); /* clear read bit */
dev->detach_dcr_from_dev(dcr);
} else {
free_dcr(dcr);
+ if (read_dev) {
+ dev->term(NULL);
+ }
}
Dmsg2(100, "Device %s released by JobId=%u\n", dev->print_name(),
(uint32_t)jcr->JobId);
if (rctx.store->append) {
dcr = new_dcr(rctx.jcr, rctx.jcr->dcr, rctx.device->dev, SD_APPEND);
} else {
- dcr = new_dcr(rctx.jcr, rctx.jcr->read_dcr, rctx.device->dev, SD_READ);
+ DEVICE *dev = init_dev(rctx.jcr, rctx.device, /*adata*/false, /*statcollector*/0x0, /*clone*/true);
+ dcr = new_dcr(rctx.jcr, rctx.jcr->read_dcr, dev, SD_READ);
}
if (!dcr) {
BSOCK *dir = rctx.jcr->dir_bsock;
if (ctx.status == S3StatusOK) {
exists = true;
Mmsg(err, "%s", to);
+
+ /* remove source part */
+ Dmsg3(dbglvl, "%s move sucessful trying to unlink %s", ctx.caller, cloud_fname, dest_cloud_fname);
+ ctx.caller = "S3_delete_object";
+ S3_delete_object(&s3ctx, cloud_fname, NULL, 0, &responseHandler, &ctx);
+ if (ctx.status != S3StatusOK) {
+ /* error message should have been filled within response cb */
+ return false;
+ } else {
+ Dmsg1(dbglvl, "move_cloud_part: Unlink sucessful for file %s.\n", cloud_fname);
+ }
+
return true;
} else if (ctx.status == S3StatusXmlParseFailure) {
/* source doesn't exist. OK. */
label storage=DiskChanger volume=ChangerVolume001 slot=1 Pool=Scratch drive=0
label storage=DiskChanger volume=ChangerVolume002 slot=2 Pool=Scratch drive=0
@#
-run job=$JobName yes
+run job=$JobName level=full yes
+wait
+run job=$JobName level=full yes
wait
run job=$JobName yes
wait
label storage=DiskChanger volume=ChangerVolume002 slot=2 Pool=Full drive=0
list volumes
@#
-run job=$JobName yes
+run job=$JobName level=full yes
@#run job=$JobName yes
wait
list volumes
@#setdebug level=200 dir
@# should migrate both Volumes
-run job=migrate-job yes
+run job=migrate-job level=full yes
wait
purge volume=FileVolume001
purge volume=FileVolume002
@# now do a restore
@#
@$out ${cwd}/tmp/log2.out
-setdebug level=500 storage=File
+@#setdebug level=500 storage=File
restore where=${cwd}/tmp/bacula-restores select storage=DiskChanger
unmark *
mark *
label storage=DiskChanger volume=ChangerVolume001 slot=1 Pool=Full drive=0
label storage=DiskChanger volume=ChangerVolume002 slot=2 Pool=Full drive=0
@#
-run job=$JobName yes
+run job=$JobName level=full yes
wait
-run job=$JobName yes
+run job=$JobName level=full yes
wait
update volume=FileVolume001 VolStatus=Used
update volume=FileVolume002 VolStatus=Used