[lustre-devel] [PATCH 7/7] lustre: change TASK_NOLOAD to TASK_IDLE.

NeilBrown neilb at suse.com
Wed Aug 1 21:18:57 PDT 2018


On Thu, Aug 02 2018, James Simmons wrote:

>> TASK_NOLOAD is not a task state to be use by
>> itself, it should only be used together with
>> TASK_UNINTERRUPTIBLE, which easily done
>> by using TASK_IDLE.
>> 
>> So convert to TASK_IDLE.
>
> Sad only the latest kernel support this :-(

So?  The patch to add support is trivial.

commit 80ed87c8a9ca0cad7ca66cf3bbdfb17559a66dcf
Author: Peter Zijlstra <peterz at infradead.org>
Date:   Fri May 8 14:23:45 2015 +0200

    sched/wait: Introduce TASK_NOLOAD and TASK_IDLE

....
 include/linux/sched.h        | 10 +++++++---
 include/trace/events/sched.h |  3 ++-
 2 files changed, 9 insertions(+), 4 deletions(-)

You would then need to add some macors like wait_event_idle(), but they
could go in the lustre code.

If you need it in any vendor kernel I'd be quite surprised if they
wouldn't accept it, at least in a service-pack.
I just checked SLES and the only release that isn't in long-term-support
(no new features) that doesn't already have this patch (linux 4.2 and
later) is SLE11-SP4.
Do you still provide new features for older kernels, or just bug-fix
updates?

NeilBrown

>
> Reviewed-by: James Simmons <jsimmons at infradead.org>
>  
>> Signed-off-by: NeilBrown <neilb at suse.com>
>> ---
>>  drivers/staging/lustre/lnet/lnet/lib-eq.c |    4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/staging/lustre/lnet/lnet/lib-eq.c b/drivers/staging/lustre/lnet/lnet/lib-eq.c
>> index 8347cc44e47d..f085388895ea 100644
>> --- a/drivers/staging/lustre/lnet/lnet/lib-eq.c
>> +++ b/drivers/staging/lustre/lnet/lnet/lib-eq.c
>> @@ -349,7 +349,7 @@ __must_hold(&the_lnet.ln_eq_wait_lock)
>>   * \param timeout Time in jiffies to wait for an event to occur on
>>   * one of the EQs. The constant MAX_SCHEDULE_TIMEOUT can be used to indicate an
>>   * infinite timeout.
>> - * \param interruptible, if true, use TASK_INTERRUPTIBLE, else TASK_NOLOAD
>> + * \param interruptible, if true, use TASK_INTERRUPTIBLE, else TASK_IDLE
>>   * \param event,which On successful return (1 or -EOVERFLOW), \a event will
>>   * hold the next event in the EQs, and \a which will contain the index of the
>>   * EQ from which the event was taken.
>> @@ -406,7 +406,7 @@ LNetEQPoll(struct lnet_handle_eq *eventqs, int neq, signed long timeout,
>>  		 */
>>  		wait = lnet_eq_wait_locked(&timeout,
>>  					   interruptible ? TASK_INTERRUPTIBLE
>> -					   : TASK_NOLOAD);
>> +					   : TASK_IDLE);
>>  		if (wait < 0) /* no new event */
>>  			break;
>>  	}
>> 
>> 
>> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.lustre.org/pipermail/lustre-devel-lustre.org/attachments/20180802/d6a9462e/attachment.sig>


More information about the lustre-devel mailing list