]> git.sur5r.net Git - bacula/bacula/blob - bacula/patches/3.0.1-cancel-sd.patch
Revert "Regenerated Ingres code using esqlcc"
[bacula/bacula] / bacula / patches / 3.0.1-cancel-sd.patch
1
2  This patch can be applied to version 3.0.1 and should fix
3  a crash in the SD that occurs after canceling a job.
4  This should fix bug #1298.
5
6  Apply it to version 3.0.1 with:
7
8  cd <bacula-source>
9  patch -p0 <3.0.1-cancel-sd.patch
10  ./configure <your-options>
11  make
12  ...
13  make install
14
15
16
17 Index: src/stored/reserve.c
18 ===================================================================
19 --- src/stored/reserve.c        (revision 8892)
20 +++ src/stored/reserve.c        (working copy)
21 @@ -755,6 +755,9 @@
22     bool ok = false;
23  
24     ASSERT(dcr);
25 +   if (job_canceled(jcr)) {
26 +      return false;
27 +   }
28  
29     dev->dlock();  
30  
31 @@ -809,6 +812,9 @@
32     bool ok = false;
33  
34     ASSERT(dcr);
35 +   if (job_canceled(jcr)) {
36 +      return false;
37 +   }
38  
39     dev->dlock();
40  
41 Index: src/stored/spool.c
42 ===================================================================
43 --- src/stored/spool.c  (revision 8892)
44 +++ src/stored/spool.c  (working copy)
45 @@ -436,6 +436,9 @@
46     bool despool = false;
47     DEV_BLOCK *block = dcr->block;
48  
49 +   if (job_canceled(dcr->jcr)) {
50 +      return false;
51 +   }
52     ASSERT(block->binbuf == ((uint32_t) (block->bufp - block->buf)));
53     if (block->binbuf <= WRITE_BLKHDR_LENGTH) {  /* Does block have data in it? */
54        return true;
55 Index: src/stored/vol_mgr.c
56 ===================================================================
57 --- src/stored/vol_mgr.c        (revision 8892)
58 +++ src/stored/vol_mgr.c        (working copy)
59 @@ -344,6 +344,9 @@
60     VOLRES *vol, *nvol;
61     DEVICE * volatile dev = dcr->dev;
62  
63 +   if (job_canceled(dcr->jcr)) {
64 +      return NULL;
65 +   }
66     ASSERT(dev != NULL);
67  
68     Dmsg2(dbglvl, "enter reserve_volume=%s drive=%s\n", VolumeName, 
69 @@ -701,6 +704,9 @@
70     bool rtn = true;
71     VOLRES *vol;
72  
73 +   if (job_canceled(jcr)) {
74 +      return false;
75 +   }
76     lock_volumes();
77     vol = find_volume(VolumeName);
78     if (!vol) {
79 Index: src/stored/askdir.c
80 ===================================================================
81 --- src/stored/askdir.c (revision 8892)
82 +++ src/stored/askdir.c (working copy)
83 @@ -494,6 +494,9 @@
84     JCR *jcr = dcr->jcr;
85     bool got_vol = false;
86  
87 +   if (job_canceled(jcr)) {
88 +      return false;
89 +   }
90     Dmsg0(400, "enter dir_ask_sysop_to_create_appendable_volume\n");
91     ASSERT(dev->blocked());
92     for ( ;; ) {
93 Index: src/stored/block.c
94 ===================================================================
95 --- src/stored/block.c  (revision 8892)
96 +++ src/stored/block.c  (working copy)
97 @@ -415,6 +415,9 @@
98     empty_block(block);
99     return true;
100  #endif
101 +   if (job_canceled(jcr)) {
102 +      return false;
103 +   }
104     ASSERT(block->binbuf == ((uint32_t) (block->bufp - block->buf)));
105     ASSERT(dev->is_open());
106  
107 @@ -935,6 +938,9 @@
108     DEVICE *dev = dcr->dev;
109     DEV_BLOCK *block = dcr->block;
110  
111 +   if (job_canceled(jcr)) {
112 +      return false;
113 +   }
114     ASSERT(dev->is_open());
115     
116     if (dev->at_eot()) {