How about the other way. Keeping the new changes in "ifdef". Let we 
leave to the end-user discretion on setting this flag (based on their 
kernel version).

README can provide the update on this flag saying., to set this flag and 
check if user observe hang in fork-exec.

Regards,
Ramesh.

On 9/19/2013 1:01 PM, Hans Feldt wrote:
> The only problem here is the kernel requirement 2.6.32
>
> http://wiki.novell.com/index.php/Kernel_versions
> https://access.redhat.com/site/articles/3078
> http://www.windriver.com/announces/linux4/
>
> system requirements would be SLES11-SP1, RHEL6 and WRL4
>
> I am not sure how to go about this. Worst case we have to keep the old 
> code behind some ifdefs
>
> Thanks,
> Hans
>
>
> On 09/18/2013 06:17 PM, Ramesh Babu Betham wrote:
>> Yes. Ack.
>>
>> Regards,
>> Ramesh.
>>
>> ----- Original Message -----
>> From: [email protected]
>> To: [email protected]
>> Cc: [email protected], [email protected]
>> Sent: Wednesday, September 18, 2013 9:16:06 PM GMT +05:30 Chennai, 
>> Kolkata, Mumbai, New Delhi
>> Subject: RE: [devel] [PATCH 1 of 1] base: use SCHED_RESET_ON_FORK in 
>> daemonize [#532]
>>
>> OK is this an ack?
>> Thanks,
>> Hans
>>
>>> -----Original Message-----
>>> From: Ramesh Babu Betham [mailto:[email protected]]
>>> Sent: den 18 september 2013 17:42
>>> To: Hans Feldt
>>> Cc: [email protected]; [email protected]
>>> Subject: Re: [devel] [PATCH 1 of 1] base: use SCHED_RESET_ON_FORK in 
>>> daemonize [#532]
>>>
>>> Yes, you are correct. Below mentioned change is enough.
>>>
>>>> +    policy |= SCHED_RESET_ON_FORK;
>>>
>>> Regards,
>>> Ramesh.
>>>
>>>
>>> ----- Original Message -----
>>> From: [email protected]
>>> To: [email protected], [email protected]
>>> Cc: [email protected]
>>> Sent: Wednesday, September 18, 2013 5:34:05 PM GMT +05:30 Chennai, 
>>> Kolkata, Mumbai, New Delhi
>>> Subject: RE: [devel] [PATCH 1 of 1] base: use SCHED_RESET_ON_FORK in 
>>> daemonize [#532]
>>>
>>> OK I thought it was reverting back to defaults due to system limits 
>>> or something. Not that some user had configured it wrong. I get it,
>>> should remove all changes in daemoniz() except:
>>>>> +        policy |= SCHED_RESET_ON_FORK;
>>>
>>> Ok?
>>>
>>> Thanks,
>>> Hans
>>>
>>>> -----Original Message-----
>>>> From: Ramesh Betham [mailto:[email protected]]
>>>> Sent: den 18 september 2013 13:51
>>>> To: Hans Feldt
>>>> Cc: [email protected]
>>>> Subject: Re: [devel] [PATCH 1 of 1] base: use SCHED_RESET_ON_FORK 
>>>> in daemonize [#532]
>>>>
>>>> Hi Hans,
>>>>
>>>> The reason for code existing to the failure of 
>>>> "sched_setscheduler()" is
>>>> to continue with *default values* by any chance if it fails with the
>>>> user defined values given through env-var settings "*__SCHED_PRIORITY"
>>>> and "*_SCHED_POLICY".
>>>>
>>>> Thanks,
>>>> Ramesh.
>>>>
>>>> On 9/18/2013 2:49 PM, Hans Feldt wrote:
>>>>>    osaf/libs/core/common/daemon.c | 23 ++++++++++++++++++-----
>>>>>    osaf/libs/core/leap/os_defs.c  |   8 --------
>>>>>    2 files changed, 18 insertions(+), 13 deletions(-)
>>>>>
>>>>>
>>>>> In ncs_os_process_execute_timed() non async signal safe functions 
>>>>> are used
>>>>> between fork() and exec(). That can cause undeterministic 
>>>>> behaviour in the
>>>>> child and cause problems for AMF to provide service.
>>>>>
>>>>> The amfnd main thread runs with RT scheduling policy and
>>>>> ncs_os_process_execute_timed() needs to guarantee that child 
>>>>> processes get
>>>>> normal scheduling policy and not just inherits the callers policy.
>>>>>
>>>>> By adding the SCHED_RESET_ON_FORK option to the sched_setscheduler 
>>>>> system call
>>>>> it is guaranteed by the kernel that all child processes gets normal
>>>>> scheduling policy. No matter the policy of the parent process/thread.
>>>>>
>>>>> diff --git a/osaf/libs/core/common/daemon.c 
>>>>> b/osaf/libs/core/common/daemon.c
>>>>> --- a/osaf/libs/core/common/daemon.c
>>>>> +++ b/osaf/libs/core/common/daemon.c
>>>>> @@ -40,6 +40,15 @@
>>>>>    #include <ncsgl_defs.h>
>>>>>    #include <os_defs.h>
>>>>>
>>>>> +/*
>>>>> + * See "man 2 sched_setscheduler"
>>>>> + * SCHED_RESET_ON_FORK is supported from Linux 2.6.32 but is not 
>>>>> in POSIX (yet)
>>>>> + * SCHED_RESET_ON_FORK is defined in <linux/sched.h>
>>>>> + * The above file cannot be included because it will break an LSB 
>>>>> build
>>>>> + * We trust that the Linux kernel ABI will never change and is 
>>>>> backwards
>>>>> + * compatible thus it is safe to define our own constant here.
>>>>> + */
>>>>> +#define SCHED_RESET_ON_FORK     0x40000000
>>>>>
>>>>>    #define DEFAULT_RUNAS_USERNAME    "opensaf"
>>>>>
>>>>> @@ -216,6 +225,7 @@ void daemonize(int argc, char *argv[])
>>>>>        {
>>>>>            policy = SCHED_RR;
>>>>>            prio_val = sched_get_priority_min(policy);
>>>>> +        policy |= SCHED_RESET_ON_FORK;
>>>>>        }
>>>>>
>>>>>        strcpy(t_str, basename(argv[0]));
>>>>> @@ -235,14 +245,17 @@ void daemonize(int argc, char *argv[])
>>>>>
>>>>>        param.sched_priority = prio_val;
>>>>>        if (sched_setscheduler(0, policy, &param) == -1) {
>>>>> -        syslog(LOG_ERR, "Could not set scheduling class for %s", 
>>>>> strerror(errno));
>>>>> +        syslog(LOG_ERR, "daemonize: could not set scheduling 
>>>>> class - %s", strerror(errno));
>>>>>            if( (!strncmp("osafamfwd", basename(argv[0]), 9)) || 
>>>>> (!strncmp("osafamfnd", basename(argv[0]), 9)))
>>>>>            {
>>>>> -            policy = SCHED_RR;
>>>>> +            syslog(LOG_NOTICE, "daemonize: setting scheduler 
>>>>> policy to OTHER");
>>>>> +            syslog(LOG_WARNING, "daemonize: this system is not 
>>>>> correctly configured");
>>>>> +            policy = SCHED_OTHER;
>>>>>                param.sched_priority = sched_get_priority_min(policy);
>>>>> -            syslog(LOG_INFO, "setting to default values");
>>>>> -            if (sched_setscheduler(0, policy, &param) == -1)
>>>>> -                syslog(LOG_ERR, "Could not set scheduling class 
>>>>> for %s", strerror(errno));
>>>>> +            if (sched_setscheduler(0, policy, &param) == -1) {
>>>>> +                syslog(LOG_ERR, "daemonize: could not set 
>>>>> scheduling class, exiting");
>>>>> +                exit(EXIT_FAILURE);
>>>>> +            }
>>>>>            }
>>>>>        }
>>>>>
>>>>> 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
>>>>> @@ -999,14 +999,6 @@ uint32_t ncs_os_process_execute_timed(NC
>>>>>        osaf_mutex_lock_ordie(&s_cloexec_mutex);
>>>>>
>>>>>        if ((pid = fork()) == 0) {
>>>>> -        /*
>>>>> -         ** Make sure forked processes have default scheduling class
>>>>> -         ** independent of the callers scheduling class.
>>>>> -         */
>>>>> -        struct sched_param param = {.sched_priority = 0 };
>>>>> -        if (sched_setscheduler(0, SCHED_OTHER, &param) == -1)
>>>>> -            syslog(LOG_ERR, "%s: Could not setscheduler: %s", 
>>>>> __FUNCTION__, strerror(errno));
>>>>> -
>>>>>            /* set the environment variables */
>>>>>            for (; count > 0; count--) {
>>>>>                setenv(node->name, node->value, node->overwrite);
>>>>
>>>> ------------------------------------------------------------------------------
>>>>  
>>>>
>>>> LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
>>>> 1,500+ hours of tutorials including VisualStudio 2012, Windows 8, 
>>>> SharePoint
>>>> 2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power 
>>>> Pack includes
>>>> Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
>>>> http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
>>>>  
>>>>
>>>> _______________________________________________
>>>> Opensaf-devel mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>
>>


------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13. 
http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to