]> git.sur5r.net Git - bacula/bacula/commitdiff
Implement MaximumConcurrentJobs for SD devices
authorKern Sibbald <kern@sibbald.com>
Mon, 10 Aug 2009 12:17:33 +0000 (14:17 +0200)
committerKern Sibbald <kern@sibbald.com>
Mon, 10 Aug 2009 12:17:33 +0000 (14:17 +0200)
bacula/src/stored/dev.c
bacula/src/stored/dev.h
bacula/src/stored/reserve.c
bacula/src/stored/stored_conf.c
bacula/src/stored/stored_conf.h
bacula/technotes

index 98aa584f7202852585a76f36c51dcf14831e329c..d17c17f018f7687d8743edfc87ae2c83b789826c 100644 (file)
@@ -160,6 +160,7 @@ init_dev(JCR *jcr, DEVRES *device)
    dev->max_block_size = device->max_block_size;
    dev->max_volume_size = device->max_volume_size;
    dev->max_file_size = device->max_file_size;
+   dev->max_concurrent_jobs = device->max_concurrent_jobs;
    dev->volume_capacity = device->volume_capacity;
    dev->max_rewind_wait = device->max_rewind_wait;
    dev->max_open_wait = device->max_open_wait;
index 8c044f000320668a32f018b0c9104d5c35945eb7..b0424b4306dfb31102097de1eea06639461929f4 100644 (file)
@@ -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.
@@ -252,6 +252,7 @@ public:
    uint32_t max_block_size;           /* max block size */
    uint64_t max_volume_size;          /* max bytes to put on one volume */
    uint64_t max_file_size;            /* max file size to put in one file on volume */
+   uint64_t max_concurrent_jobs;      /* maximum simultaneous jobs this drive */
    uint64_t volume_capacity;          /* advisory capacity */
    uint64_t max_spool_size;           /* maximum spool file size */
    uint64_t spool_size;               /* current spool size for this device */
index c2377d8f0d6a7606690c53e5c70f5c88319c7728..742c9b512b11fcbd586ec6ad3277787a941f962a 100644 (file)
@@ -886,6 +886,16 @@ static bool is_max_jobs_ok(DCR *dcr)
          dcr->VolCatInfo.VolCatJobs, dev->num_reserved(),
          dcr->VolCatInfo.VolCatStatus,
          dcr->VolumeName);
+   /* Limit max concurrent jobs on this drive */
+   if (dev->max_concurrent_jobs > 0 && dev->max_concurrent_jobs <= 
+              (uint32_t)(dev->num_writers + dev->num_reserved())) {
+      /* Max Concurrent Jobs depassed or already reserved */
+      Mmsg(jcr->errmsg, _("3609 JobId=%u Max concurrent jobs exceeded on drive %s.\n"), 
+            (uint32_t)jcr->JobId, dev->print_name());
+      queue_reserve_message(jcr);
+      Dmsg1(dbglvl, "reserve dev failed: %s", jcr->errmsg);
+      return false;
+   }
    if (strcmp(dcr->VolCatInfo.VolCatStatus, "Recycle") == 0) {
       return true;
    }
index 79153ab836adea545aff141f5cdf05ceedd8d443..19bfec3720c47f68fdcb8a881c4b432766fca315 100644 (file)
@@ -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.
@@ -157,6 +157,7 @@ static RES_ITEM dev_items[] = {
    {"maximumvolumesize",     store_size,   ITEM(res_dev.max_volume_size), 0, 0, 0},
    {"maximumfilesize",       store_size,   ITEM(res_dev.max_file_size), 0, ITEM_DEFAULT, 1000000000},
    {"volumecapacity",        store_size,   ITEM(res_dev.volume_capacity), 0, 0, 0},
+   {"maximumconcurrentjobs", store_pint32, ITEM(res_dev.max_concurrent_jobs), 0, 0, 0},
    {"spooldirectory",        store_dir,    ITEM(res_dev.spool_directory), 0, 0, 0},
    {"maximumspoolsize",      store_size,   ITEM(res_dev.max_spool_size), 0, 0, 0},
    {"maximumjobspoolsize",   store_size,   ITEM(res_dev.max_job_spool_size), 0, 0, 0},
index 2f4f5d91346dd60f83a6353c251f094f08c3815d..7972f80c68f36c19a0f9119d6b3ed1b6f8165c9e 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 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.
@@ -137,6 +137,7 @@ public:
    uint32_t max_block_size;           /* max block size */
    uint32_t max_volume_jobs;          /* max jobs to put on one volume */
    uint32_t max_network_buffer_size;  /* max network buf size */
+   uint32_t max_concurrent_jobs;      /* maximum concurrent jobs this drive */
    utime_t  vol_poll_interval;        /* interval between polling volume during mount */
    int64_t max_volume_files;          /* max files to put on one volume */
    int64_t max_volume_size;           /* max bytes to put on one volume */
index 2d2a041dda5b838fe983d7d271ef3dc6b5b8a868..5fd7de575678e23f56bd6afd1caa5e46169da0ae 100644 (file)
@@ -2,6 +2,9 @@
           
 General:
 
+10Aug09
+kes  Implement MaximumConcurrentJobs for SD devices.
+     This should significantly help spread jobs among different drives.
 09Aug09
 kes  Fix bug #1344 show pool displayed wrong variable for maxvolbytes
 kes  Fix compiler warnings in acl and xattr code
@@ -30,17 +33,17 @@ kes  Remove installing gconsole start script from Makefile.in
 01Aug09
 ebl  Add Job Info panel to bat
 30Jul09
-ebl  Add restore from multiple storage functionnality with
+ebl  Add restore from multiple storage functionality with
      a part of Graham's patch.
 kes  Add 'show disabled' command that lists the disabled jobs.
 kes  Modify enable/disable commands to show only appropriate Jobs.
 29Jul09
-kes  Add ACL check for client in estimate commande
+kes  Add ACL check for client in estimate command
 ebl  Change time_t by utime_t in accurate function
 kes  Start reworking 3.0.2 bacula.spec file
      - Add SuSE build codes
      - Add depkgs-qt so bat can build on any system
-     - Reoganize defines
+     - Reorganize defines
 26Jul09
 kes  Tweak RedHat spec files
 24Jul09
@@ -90,7 +93,7 @@ ebl  Implement the project 'restore' menu: enter a JobId, automatically
 ebl  Should fix #1323 about verify accurate jobs and deleted files.
 13Jul09
 kes  Send bootstrap directly from DIR to SD
-kes  Create build scripts for Win64 somewhat equilavent to the Win32 ones.
+kes  Create build scripts for Win64 somewhat equivalent to the Win32 ones.
 10Jul09
 ebl  Print correct JobId in bls, should fix #1331
 kes  Apply python detect patch from Bastian Friedrich <bastian.friedrich@collax.com>
@@ -106,7 +109,7 @@ mvw  Call acl and xattr function only when requested for fileset
 mvw  Fix typo introduces by fix for bug #1305
 03Jul09
 ebl  Should fix the first part #1323 about the restore option
-     'List Jobs where a given File is saved' wich display deleted files
+     'List Jobs where a given File is saved' which display deleted files
 02Jul09
 kes  Another fix for bug #1311 to get the correct last_full_time
 ebl  Make estimate command accurate compatible. Should fix #1318