Ack.

Thanks,
Ramesh.

On 1/17/2014 8:20 PM, Anders Widell wrote:
>   osaf/libs/core/leap/os_defs.c |  13 +++++++------
>   1 files changed, 7 insertions(+), 6 deletions(-)
>
>
> OpenSAF would fail to start when an invalid thread scheduling policy has been
> configured, e.g. using the following configuration options for one of the
> OpenSAF services:
>
> export OSAF_MDS_SCHED_PRIORITY=0
> export OSAF_MDS_SCHED_POLICY=3
>
> The OpenSAF services fail with the following messages:
>
> Dec 24 14:40:02 SLES_NEW2 opensafd[15010]: ER Timed-out for response from RDE
> Dec 24 14:40:02 SLES_NEW2 opensafd[15010]: ER
> Dec 24 14:40:02 SLES_NEW2 opensafd[15010]: ER Going for recovery
> Dec 24 14:40:02 SLES_NEW2 opensafd[15010]: ER Trying To RESPAWN 
> /usr/lib64/opensaf/clc-cli/osaf-rded attempt #1
> Dec 24 14:40:02 SLES_NEW2 opensafd[15010]: ER Sending SIGKILL to RDE, 
> pid=15031
>
> The reason is that scheduling policy 3 (SCHED_BATCH) is not a valid parameter 
> to
> the pthread_attr_setschedpolicy() function, and OpenSAF passes the configured
> policy to this function without whecking that it is valid.
>
> A check for this case has been added, so that we fall back to the default
> scheduling policy when an invalid policy has been configured.
>
> diff --git a/osaf/libs/core/leap/os_defs.c b/osaf/libs/core/leap/os_defs.c
> --- a/osaf/libs/core/leap/os_defs.c
> +++ b/osaf/libs/core/leap/os_defs.c
> @@ -164,15 +164,16 @@ unsigned int ncs_os_task(NCS_OS_TASK *ta
>                       min_prio = sched_get_priority_min(policy);
>                       max_prio = sched_get_priority_max(policy);
>                       
> -                     if((sp.sched_priority < min_prio) || (sp.sched_priority 
>  > max_prio)) {
> +                     if ((sp.sched_priority < min_prio) || 
> (sp.sched_priority > max_prio) ||
> +                         pthread_attr_setschedpolicy(&attr, policy) != 0) {
>                                       /* Set to defaults */
> -                             syslog(LOG_NOTICE, "scheduling priority %d for 
> given policy %d to the task %s is not \
> -                                                                     within 
> the range, setting to default \
> -                                                     values ", 
> sp.sched_priority, policy, task->info.create.i_name);
> +                             syslog(LOG_NOTICE, "scheduling priority %d or 
> policy %d for the "
> +                                    "task %s is invalid, setting to default 
> values",
> +                                    sp.sched_priority, policy, 
> task->info.create.i_name);
>                               policy = task->info.create.i_policy;
>                               sp.sched_priority = 
> task->info.create.i_priority;
> -                             syslog(LOG_INFO, "%s task default policy is %d, 
> \
> -                             priority is %d", task->info.create.i_name, 
> policy, sp.sched_priority);
> +                             syslog(LOG_INFO, "%s task default policy is %d, 
> priority is %d",
> +                                    task->info.create.i_name, policy, 
> sp.sched_priority);
>                       }
>                               
>   #ifdef RLIMIT_RTPRIO


------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to