bareos: master 3b045561

Author Committer Branch Timestamp Parent
mvwieringen mvwieringen master 2014-09-27 20:39 master ea1deed4 Pending
Changeset Refactor daemon plugin handling.

Major refactoring for allowing to drop the one-to-one plugin and
plugin context relationship. We eventually want to allow multiple
instances of one plugin (python plugin comes to mind). When we use
an alist for storing the plugin context which has a pointer to the
actual plugin that the context is linked to we can easily use the
actual callback we need to call in the plugin with the active context.
As we are no longer walking the shared plugin alist we also don't need
to always use the foreach_alist_index to be sure we don't run into
problems with multi threading.

Some state is captured in the shared plugin data which is used by
multiple threads in the filed. This is probably not to smart as it
means that the state is shared between multiple threads and so multiple
backup jobs what is not something you want. As this is mostly core code
and probably not used by any important plugin in the wild it might for
now not be a big problem but it may become a problem if we implement
some more filed plugins.

Added the bDirEventNewPluginOptions event which will allow the dir to
implement the loading of multiple instances of the same plugin each with
its private context.

Added the bsdEventNewPluginOptions event which will allow the storage
daemon to implement the loading of multiple instances of the same plugin
each with its private context.
mod - src/dird/dir_plugins.c Diff File
mod - src/dird/dir_plugins.h Diff File
mod - src/dird/dird_conf.c Diff File
mod - src/dird/dird_conf.h Diff File
mod - src/dird/job.c Diff File
mod - src/dird/msgchan.c Diff File
mod - src/dird/protos.h Diff File
mod - src/dird/sd_cmds.c Diff File
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/restore.c Diff File
mod - src/include/jcr.h Diff File
mod - src/lib/parse_conf.h Diff File
mod - src/lib/plugins.c Diff File
mod - src/lib/plugins.h Diff File
mod - src/stored/dir_cmd.c Diff File
mod - src/stored/job.c Diff File
mod - src/stored/sd_plugins.c Diff File
mod - src/stored/sd_plugins.h Diff File