@@ -141,8 +141,9 @@ def backup_cmds(backup_dir, ds, live, format = nil)
141141 snap_cmd = ''
142142 expo_cmd = ''
143143
144- snap_clup = ''
145- expo_clup = ''
144+ snap_clup = ''
145+ expo_clup = ''
146+ snap_abort = ''
146147
147148 backup_util = '/var/tmp/one/tm/lib/backup_rbd.rb'
148149
@@ -154,12 +155,16 @@ def backup_cmds(backup_dir, ds, live, format = nil)
154155 if live
155156 snapshot = "#{ @rbd_image } @one_backup"
156157
158+ # Remove stale snapshot left over by a failed backup
159+ snap_cmd << rm_snaps_sh ( { :type => :eq , :text => 'one_backup' } )
157160 snap_cmd << "#{ @rbd_cmd } snap create #{ snapshot } \n "
158161 expo_cmd << ds . cmd_confinement (
159162 "#{ @rbd_cmd } export #{ snapshot } #{ draw } \n " ,
160163 backup_dir
161164 )
162165 snap_clup << "#{ @rbd_cmd } snap rm #{ snapshot } \n "
166+
167+ snap_abort << rm_snaps_sh ( { :type => :eq , :text => 'one_backup' } )
163168 else
164169 expo_cmd << ds . cmd_confinement (
165170 "#{ @rbd_cmd } export #{ @rbd_image } #{ draw } \n " ,
@@ -195,6 +200,8 @@ def backup_cmds(backup_dir, ds, live, format = nil)
195200 "ruby #{ backup_util } #{ @rbd_image } NONE #{ snapshot } #{ dexp } \n " ,
196201 backup_dir
197202 )
203+
204+ snap_abort << rm_snaps_sh ( { :type => :prefix , :text => INC_SNAP_PREFIX } )
198205 else
199206 # Incremental backup
200207 incid = @vm_backup_config [ :last_increment ] + 1
@@ -204,6 +211,8 @@ def backup_cmds(backup_dir, ds, live, format = nil)
204211
205212 last_snap = "one_backup_#{ @vm_backup_config [ :last_increment ] } "
206213
214+ # Remove stale snapshot left over by a failed backup
215+ snap_cmd << rm_snaps_sh ( { :type => :eq , :text => "one_backup_#{ incid } " } )
207216 snap_cmd << "#{ @rbd_cmd } snap create #{ snapshot } \n "
208217 snap_cmd << "#{ @rbd_cmd } snap protect #{ snapshot } \n "
209218
@@ -225,14 +234,19 @@ def backup_cmds(backup_dir, ds, live, format = nil)
225234
226235 old_snapshot = "one_backup_#{ @vm_backup_config [ :last_increment ] } "
227236 snap_clup << rm_snaps_sh ( { :type => :eq , :text => old_snapshot } )
237+
238+ # On abort remove only the new snapshot, the previous one
239+ # is still the base for the next increment
240+ snap_abort << rm_snaps_sh ( { :type => :eq , :text => "one_backup_#{ incid } " } )
228241 end
229242
230243 {
231- :snapshot => snap_cmd ,
232- :export => expo_cmd ,
233- :snapshot_clup => snap_clup ,
234- :export_clup => expo_clup ,
235- :cleanup => snap_clup + expo_clup
244+ :snapshot => snap_cmd ,
245+ :export => expo_cmd ,
246+ :snapshot_clup => snap_clup ,
247+ :export_clup => expo_clup ,
248+ :snapshot_abort => snap_abort ,
249+ :cleanup => snap_clup + expo_clup
236250 }
237251 end
238252
0 commit comments