Search
j0ke.net Open Build Service
>
Projects
>
server:backup
>
bacula
> 2.4.4-sd-deadlock.patch
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File 2.4.4-sd-deadlock.patch of Package bacula (Revision 15)
Currently displaying revision
15
,
show latest
This patch is backported from the development SVN and should fix bug #1213, which is a deadlock in the SD when a volume is on the wrong drive. Apply it to version 2.4.4 with: cd <bacula-source> patch -p0 <2.4.4-sd-deadlock.patch ./configure <your options> make ... make install Index: src/stored/reserve.c =================================================================== --- src/stored/reserve.c (revision 8426) +++ src/stored/reserve.c (working copy) @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2000-2008 Free Software Foundation Europe e.V. + Copyright (C) 2000-2009 Free Software Foundation Europe e.V. The main author of Bacula is Kern Sibbald, with contributions from many others, a complete list can be found in the file AUTHORS. @@ -498,7 +498,6 @@ void DCR::unreserve_device() { lock_volumes(); - dev->dlock(); if (is_reserved()) { clear_reserved(); reserved_volume = false; @@ -514,7 +513,6 @@ volume_unused(this); } } - dev->dunlock(); unlock_volumes(); } Index: src/stored/acquire.c =================================================================== --- src/stored/acquire.c (revision 8426) +++ src/stored/acquire.c (working copy) @@ -1,7 +1,7 @@ /* Bacula® - The Network Backup Solution - Copyright (C) 2002-2008 Free Software Foundation Europe e.V. + Copyright (C) 2002-2009 Free Software Foundation Europe e.V. The main author of Bacula is Kern Sibbald, with contributions from many others, a complete list can be found in the file AUTHORS. @@ -647,8 +647,8 @@ /* Detach this dcr only if attached */ if (dcr->attached_to_dev && dev) { + dev->dlock(); dcr->unreserve_device(); - dev->dlock(); dcr->dev->attached_dcrs->remove(dcr); /* detach dcr from device */ dcr->attached_to_dev = false; // remove_dcr_from_dcrs(dcr); /* remove dcr from jcr list */