diff options
author | Stephen Gallagher <sgallagh@redhat.com> | 2010-06-30 13:55:41 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-07-09 11:44:07 -0400 |
commit | cab4c5011d0dc6d98e2115f46b1185a17804df49 (patch) | |
tree | 02532efe8caa98f12a6e1564a85f11bf60e27709 /src/monitor | |
parent | 09c170c5b5cf0d62e7302ef284a1e35072ef1d95 (diff) | |
download | sssd-cab4c5011d0dc6d98e2115f46b1185a17804df49.tar.gz sssd-cab4c5011d0dc6d98e2115f46b1185a17804df49.tar.bz2 sssd-cab4c5011d0dc6d98e2115f46b1185a17804df49.zip |
Add try_inotify option
There are some special cases where inotify cannot be used, even if
the host OS claims that it is supported. In these cases, it should
be possible to explicitly disable the use of inotify.
https://fedorahosted.org/sssd/ticket/484
Diffstat (limited to 'src/monitor')
-rw-r--r-- | src/monitor/monitor.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index 41eadf52..47832c95 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -1632,6 +1632,7 @@ static int monitor_config_file(TALLOC_CTX *mem_ctx, monitor_reconf_fn fn) { int ret, err; + bool use_inotify; struct timeval tv; struct stat file_stat; struct config_file_callback *cb = NULL; @@ -1650,8 +1651,24 @@ static int monitor_config_file(TALLOC_CTX *mem_ctx, ctx->file_ctx->parent_ctx = mem_ctx; ctx->file_ctx->mt_ctx = ctx; } - ret = try_inotify(ctx->file_ctx, file, fn); + + ret = confdb_get_bool(ctx->cdb, ctx, + CONFDB_MONITOR_CONF_ENTRY, + CONFDB_MONITOR_TRY_INOTIFY, + true, &use_inotify); if (ret != EOK) { + talloc_free(ctx->file_ctx); + return ret; + } + + if (use_inotify) { + ret = try_inotify(ctx->file_ctx, file, fn); + if (ret != EOK) { + use_inotify = false; + } + } + + if (!use_inotify) { /* Could not monitor file with inotify, fall back to polling */ cb = talloc_zero(ctx->file_ctx, struct config_file_callback); if (!cb) { |