<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body>
We generally provide full updates for older kernels, until we don’t.  There’s a gradually moving window of kernel support for new versions of Lustre, with a heavy eye on the major enterprise distro versions.<br>
<br>
But when a feature depends on something new, we wrap it in config stuff and either disable it when not found, or we copy the required bits in to Lustre if they’re small or hard to do without.<br>
<br>
So, kind of what you’re suggesting.  No problem at all.
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> lustre-devel <lustre-devel-bounces@lists.lustre.org> on behalf of NeilBrown <neilb@suse.com><br>
<b>Sent:</b> Wednesday, August 1, 2018 11:18:57 PM<br>
<b>To:</b> James Simmons<br>
<b>Cc:</b> Lustre Development List<br>
<b>Subject:</b> Re: [lustre-devel] [PATCH 7/7] lustre: change TASK_NOLOAD to TASK_IDLE.</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">On Thu, Aug 02 2018, James Simmons wrote:<br>
<br>
>> TASK_NOLOAD is not a task state to be use by<br>
>> itself, it should only be used together with<br>
>> TASK_UNINTERRUPTIBLE, which easily done<br>
>> by using TASK_IDLE.<br>
>> <br>
>> So convert to TASK_IDLE.<br>
><br>
> Sad only the latest kernel support this :-(<br>
<br>
So?  The patch to add support is trivial.<br>
<br>
commit 80ed87c8a9ca0cad7ca66cf3bbdfb17559a66dcf<br>
Author: Peter Zijlstra <peterz@infradead.org><br>
Date:   Fri May 8 14:23:45 2015 +0200<br>
<br>
    sched/wait: Introduce TASK_NOLOAD and TASK_IDLE<br>
<br>
....<br>
 include/linux/sched.h        | 10 +++++++---<br>
 include/trace/events/sched.h |  3 ++-<br>
 2 files changed, 9 insertions(+), 4 deletions(-)<br>
<br>
You would then need to add some macors like wait_event_idle(), but they<br>
could go in the lustre code.<br>
<br>
If you need it in any vendor kernel I'd be quite surprised if they<br>
wouldn't accept it, at least in a service-pack.<br>
I just checked SLES and the only release that isn't in long-term-support<br>
(no new features) that doesn't already have this patch (linux 4.2 and<br>
later) is SLE11-SP4.<br>
Do you still provide new features for older kernels, or just bug-fix<br>
updates?<br>
<br>
NeilBrown<br>
<br>
><br>
> Reviewed-by: James Simmons <jsimmons@infradead.org><br>
>  <br>
>> Signed-off-by: NeilBrown <neilb@suse.com><br>
>> ---<br>
>>  drivers/staging/lustre/lnet/lnet/lib-eq.c |    4 ++--<br>
>>  1 file changed, 2 insertions(+), 2 deletions(-)<br>
>> <br>
>> diff --git a/drivers/staging/lustre/lnet/lnet/lib-eq.c b/drivers/staging/lustre/lnet/lnet/lib-eq.c<br>
>> index 8347cc44e47d..f085388895ea 100644<br>
>> --- a/drivers/staging/lustre/lnet/lnet/lib-eq.c<br>
>> +++ b/drivers/staging/lustre/lnet/lnet/lib-eq.c<br>
>> @@ -349,7 +349,7 @@ __must_hold(&the_lnet.ln_eq_wait_lock)<br>
>>   * \param timeout Time in jiffies to wait for an event to occur on<br>
>>   * one of the EQs. The constant MAX_SCHEDULE_TIMEOUT can be used to indicate an<br>
>>   * infinite timeout.<br>
>> - * \param interruptible, if true, use TASK_INTERRUPTIBLE, else TASK_NOLOAD<br>
>> + * \param interruptible, if true, use TASK_INTERRUPTIBLE, else TASK_IDLE<br>
>>   * \param event,which On successful return (1 or -EOVERFLOW), \a event will<br>
>>   * hold the next event in the EQs, and \a which will contain the index of the<br>
>>   * EQ from which the event was taken.<br>
>> @@ -406,7 +406,7 @@ LNetEQPoll(struct lnet_handle_eq *eventqs, int neq, signed long timeout,<br>
>>                */<br>
>>               wait = lnet_eq_wait_locked(&timeout,<br>
>>                                          interruptible ? TASK_INTERRUPTIBLE<br>
>> -                                       : TASK_NOLOAD);<br>
>> +                                       : TASK_IDLE);<br>
>>               if (wait < 0) /* no new event */<br>
>>                       break;<br>
>>       }<br>
>> <br>
>> <br>
>> <br>
</div>
</span></font></div>
</body>
</html>