]> git.sur5r.net Git - bacula/bacula/commitdiff
Small tweaks to locking code no substantial change
authorKern Sibbald <kern@sibbald.com>
Mon, 7 Dec 2009 17:18:03 +0000 (18:18 +0100)
committerKern Sibbald <kern@sibbald.com>
Mon, 7 Dec 2009 17:18:03 +0000 (18:18 +0100)
bacula/src/stored/acquire.c
bacula/src/stored/lock.c
bacula/src/stored/protos.h
bacula/src/stored/vol_mgr.c

index 7623702a342240a5a3dfa9d89efc7c61598ec6eb..c1962e1aba42ead8b7949ff84b5c569db540f384 100644 (file)
@@ -511,7 +511,6 @@ bool release_device(DCR *dcr)
    unlock_volumes();
    Dmsg3(100, "%d writers, %d reserve, dev=%s\n", dev->num_writers, dev->num_reserved(),
          dev->print_name());
-   debug_list_volumes("acquire:release_device()");
 
 
    /* If no writers, close if file or !CAP_ALWAYS_OPEN */
index 392eab47a148a7a40f91c5f2fe6ffab790c7ddf1..7270773593506276f0cdd45b35df21af3c6c357b 100644 (file)
@@ -55,12 +55,14 @@ const int dbglvl = 500;
  *  2. dlock()   simple mutex that locks the device structure. A dlock
  *               can be acquired while a device is blocked if it is not
  *               locked.      
- *  3. r_dlock   "recursive" dlock, when means that a dlock (mutex)
+ *  3. r_dlock(locked)  "recursive" dlock, when means that a dlock (mutex)
  *               will be acquired on the device if it is not blocked
  *               by some other thread. If the device was blocked by
  *               the current thread, it will acquire the lock.
  *               If some other thread has set a block on the device,
  *               this call will wait until the device is unblocked.
+ *               Can be called with locked true, which means the
+ *               dlock is already set
  *
  *  A lock is normally set when modifying the device structure.
  *  A r_lock is normally acquired when you want to block the device
@@ -88,9 +90,10 @@ const int dbglvl = 500;
  *   DEVICE::dlock()   does P(m_mutex)     (in dev.h)
  *   DEVICE::dunlock() does V(m_mutex)
  *
- *   DEVICE::r_dlock() allows locking the device when this thread
-                         already has the device blocked.
- *                    dlock()
+ *   DEVICE::r_dlock(locked) allows locking the device when this thread
+ *                     already has the device blocked.
+ *                    if (!locked)
+ *                       dlock()
  *                    if blocked and not same thread that locked
  *                       pthread_cond_wait
  *                    leaves device locked 
index 862a5523a5aceb7b9746633f472d7bb4b72e150a..8aa28538e52cbd3deb95aa693b5262e89f40be10 100644 (file)
@@ -278,7 +278,6 @@ void    create_volume_lists();
 void    free_volume_lists();
 void    list_volumes(void sendit(const char *msg, int len, void *sarg), void *arg);
 bool    is_volume_in_use(DCR *dcr);
-void    debug_list_volumes(const char *imsg);
 extern  int vol_list_lock_count;
 void    add_read_volume(JCR *jcr, const char *VolumeName);
 void    remove_read_volume(JCR *jcr, const char *VolumeName);
index 55b7001e8b014e36814314e1ae31f682bd21dd7e..61b2c9fbb7cfb459256154e55f0405361954353b 100644 (file)
@@ -49,6 +49,7 @@ static pthread_mutex_t read_vol_lock = PTHREAD_MUTEX_INITIALIZER;
 /* Forward referenced functions */
 static void free_vol_item(VOLRES *vol);
 static VOLRES *new_vol_item(DCR *dcr, const char *VolumeName);
+static void debug_list_volumes(const char *imsg);
 
 /*
  * For append volumes the key is the VolumeName.
@@ -195,7 +196,7 @@ enum {
    debug_nolock = false
 };
 
-void debug_list_volumes(const char *imsg)
+static void debug_list_volumes(const char *imsg)
 {
    VOLRES *vol;
    POOL_MEM msg(PM_MESSAGE);