bareos: bareos-15.2 37a083f5

Author Committer Branch Timestamp Parent
mvwieringen mvwieringen bareos-15.2 2015-12-24 11:15 bareos-15.2 6c03073d Pending
Affected Issues  0000253: Enable concurrent jobs on Windows platforms
Changeset vss: Get rid of one VSS client at a time.

The VSS code is currently one big minefield with global variables
all over the place.

These changes make it a bit better at the costs of using some so
called thread specific data pointers e.g. using
pthread_set_specific() and pthread_get_specific().

The big change is that we setup two TSD keys which control the
Thread Specific Data. There is one key which holds the so called
UTF8 to UCS2 cache which caches the last conversion done as this
conversion is rather expensive and is done multiple times. The
second key is used for registering the callback for the VSS
pathconvert functions.

In the FILED code we now keep track of the VSS instance used
using a variable in the JCR instead of using a global VSS instance.

As each Job uses one thread we could now run multiple Jobs which
shouldn't clobber each others caches, have callbacks for VSS if
they use VSS and have their own instance of the VSS class.

By removing these limits we also had to fix the following problems:
- CoInitializeSecurity may only be called once.
- Wait for Snapshotset to complete

Fixes 0000253: Enable concurrent jobs on Windows platforms

Signed-off-by: Philipp Storz <philipp.storz@bareos.com>
mod - src/filed/backup.c Diff File
mod - src/filed/dir_cmd.c Diff File
mod - src/filed/fd_plugins.c Diff File
mod - src/filed/filed.h Diff File
mod - src/filed/status.c Diff File
mod - src/findlib/acl.c Diff File
mod - src/findlib/attribs.c Diff File
mod - src/findlib/create_file.c Diff File
mod - src/findlib/find.c Diff File
mod - src/findlib/find.h Diff File
mod - src/findlib/find_one.c Diff File
mod - src/findlib/match.c Diff File
mod - src/findlib/xattr.c Diff File
mod - src/include/jcr.h Diff File
mod - src/lib/jcr.c Diff File
mod - src/win32/compat/compat.c Diff File
mod - src/win32/compat/include/compat.h Diff File
mod - src/win32/compat/winapi.c Diff File
mod - src/win32/filed/Makefile Diff File
mod - src/win32/filed/vss.c Diff File
mod - src/win32/filed/vss_generic.c Diff File
mod - src/win32/filed/who.h Diff File
mod - src/win32/findlib/win32.c Diff File
mod - src/win32/generic/main.c Diff File
mod - src/win32/include/vss.h Diff File