Tao,Andreas,all,

What is your plan in test/test framework changes from the point of view
of integration to kernel? As i know, kernel.org has his own test
infrastructure and his own test framework.

I'm sorry if it's incorrect place for this question.

Thanks,
        Roman

On 04/27/2012 02:15 PM, [email protected] wrote:
> Hi Andreas,
> 
>> -----Original Message-----
>> From: Andreas Dilger [mailto:[email protected]]
>> Sent: Friday, April 27, 2012 11:54 AM
>> To: Peng, Tao
>> Cc: <[email protected]>; <[email protected]>; 
>> <[email protected]>
>> Subject: Re: [wc-discuss] Re: Lustre and cross-platform portability
>>
>> On 2012-04-26, at 20:23, <[email protected]> wrote:
>>> Thank you very much for bringing it up in LUG and getting all these 
>>> positive support from community.
>>
>> Tao,
>> Yes it does look promising.
>>
>>>> To revive this thread, based on discussion at the LUG TWG:
>>>> - there was general consensus that cleaning up the Lustre client
>>>>  (and server) code was very desirable to do
>>>> - migrating libcfs to emulate the Linux kernel APIs is also usable.
>>>>  Ken mentioned that there is relatively little conflict between
>>>>  the Linux kernel and the MacOS kernel, and the same for WinNT, so
>>>>  they could use the same function names as Linux without problems.
>>> I created LU-1346 (http://jira.whamcloud.com/browse/LU-1346) to track 
>>> libcfs cleanup work.
>>
>> OK
>>
>>>> - there was no objection to converting the Lustre code from spaces
>>>>  to tabs.  My proposal was that build/checkpatch.pl could require
>>>>  tabs immediately, and new patches should be submitted with tabs
>>>>  on all new/modified lines (and optionally all lines on small
>>>>  functions to avoid messy formatting).  This will avoid issues
>>>>  with current patches in flight, and also avoid "git annotate"
>>>>  showing the jumbo replace-all-spaces-with-tabs patch for every
>>>>  line in Lustre, and I think a good fraction of lines will be
>>>>  updated in the next 9-12 months or more.  As we approach the
>>>>  actual time for upstream kernel submission is close, then we can
>>>>  make a final effort to clean up remaining lines in idle code
>>>>  (which will also be unlikely to conflict with existing work).
>>> While tabs are the main coding style difference between Lustre and kernel, 
>>> there are a few minor
>> change that is needed as well. I think we need to do following to match 
>> kernel coding style:
>>> 1. Lustre uses expandtab while kernel requires tabs
>>
>> Right.
>>
>>> 2. Lustre has vim syntax rules in most source files, which need to be 
>>> removed
>>
>> They should be replaced with explicit vim and enacts syntax rules that have 
>> the kernel indent style
>> instead.  If we could get syntax rules that embodied more of the coding 
>> style than just indentation,
>> that would be even better.
>>
> But we do need to remove them before submitting to kernel, right? And if we 
> enforce checkpatch.pl on every patch applied, IMHO there is not much benefit 
> to have syntax rules on every file, not to mention that it is explicitly 
> forbidden in kernel coding style (Documentation/CodingStyle, Chapter 18:  
> Editor modelines and other cruft).
> 
> BTW, instead of just enabling tabs, how about changing checkpatch.pl to 
> latest kernel version to make sure all future patches follow kernel coding 
> styles?
> 
>>> 3. Lustre uses a slightly different comment style, which need to be changed 
>>> to kernel style
>>
>> This is DOxygen style formatting.  I had forgotten about this. We had in the 
>> past used this inline
>> formatting for producing some documentation, but I'd need to ask about 
>> whether there is still a need
>> for this today. In the meantime, please leave the comment style as-is.
>>
> OK.
> 
>>
>>> I created LU-1347 (http://jira.whamcloud.com/browse/LU-1347) to track the 
>>> coding style changes.
>>>
>>>> There is some hope that the kernel maintainers will not require
>>>> all of the Lustre macros to be removed, but we can deal with this
>>>> on a case-by-case basis.
>>>>
>>> IMO, we can divide macros to three groups (or more?):
>>> 1. Old kernel support macros, kernel maintainers are clear that they won't 
>>> accept it.
>>
>> Yes, but we need to maintain this in the external Lustre tree for years 
>> after Lustre would be accepted
>> into mainline, since it would not be in vendor kernels (which a majority of 
>> Lustre users would be
>> using).
>>
>> For such compat macros we need to make an effort to keep the upstream code 
>> as close as possible to the
>> external tree, so patches have the most chance of applying.
>>
> I agree. We should minimize maintenance effort for it. And as you suggested, 
> we can put as many of these compat macros into places like linux_compat.h as 
> possible and have Lustre code use latest kernel APIs, so that most 
> maintenance effort for old kernel support would be to keep linux_compat.h 
> uptodate. For compact macros that cannot be cleaned up this way, we will have 
> to pay the extra efforts. And of course the cleanup will be an incremental 
> process and macros will be dealt with in a case-by-case basis.
> 
>>> 2. For macros to mark out server code, kernel maintainers can accept it. 
>>> But I think we need to make
>> sure we don't do it too intrusive.
>>
>> Sure, and we also need to make sure the ongoing maintenance effort to keep 
>> the code working is not too
>> much either.
>>
>> I'm OK with incremental patches that more cleanly split the client and 
>> server code (structures,
>> headers, etc) if that improves the code structure and readability.
>>
> I agree that we can do some incremental patches to split client and server 
> code. But I hope we only do it when it is trivial and simple. IMHO if we want 
> to entirely split client/server code, it will be large code structure change. 
> Since kernel maintainers already agreed on HAVE_SERVER_SUPPORT, how about we 
> keep going that way at first? And we can make some split wherever it is 
> simple and clear. And we will try to make code structure as clear/readable as 
> possible. Then when we summit code for review, if kernel maintainers still 
> don't like it, we do the large restructuring. Does it make sense?
> 
>>> 3. Lustre feature macros, we can convert them to Kconfig macros.
>>
>> Sure. Note that some of them may be obsolete, so before you spend too much 
>> time cleaning them up,
>> please post a list to Jira. Maybe some of them can be dropped entirely.
>>
> Thanks. I will do as you suggested when it comes to converting them to 
> Kconfig macros.
> 
> Cheers,
> Tao
> 
>>>> On 2012-03-14, at 7:31 PM, Andreas Dilger wrote:
>>>>> Whamcloud and EMC are jointly investigating how to be able to contribute 
>>>>> the Lustre client code
>> into
>>>> the upstream Linux kernel.
>>>>>
>>>>> As a prerequisite to this, EMC is working to clean up the Lustre client 
>>>>> code to better match the
>>>> kernel coding style, and one of the anticipated major obstacles to 
>>>> upstream kernel submission is
>> the
>>>> heavy use of code abstraction via libcfs for portability to other 
>>>> operating systems (most notably
>>>> MacOS and WinNT, but also for liblustre, and potentially *BSD).
>>>>>
>>>>> I have no information that the WinNT project will ever be released by 
>>>>> Oracle,
>>>>
>>>> [revised] and the MacOS client needs significant work to update it to the 
>>>> latest version of Lustre,
>>>> and to get it landed into the Lustre repo,
>>>>
>>>>> so the libcfs portability layer is potentially exacting a high cost in 
>>>>> code maintenance and
>>>> complexity (CLIO being a prime example) for no apparent benefit.  
>>>> Similarly, the liblustre client
>>>> needs a portability layer for userspace, and suffers from the same 
>>>> apparent lack of interest or
>> users.
>>>>>
>>>>> I'd like to get some feedback from the Lustre community about removing 
>>>>> the libcfs abstraction
>>>> entirely, or possibly restructuring it to look like the Linux kernel API, 
>>>> and having the other
>>>> platforms code against it as a Linux portability layer, like ZFS on Linux 
>>>> uses the Solaris
>> Portability
>>>> Layer (SPL) to avoid changing the core ZFS code.  A related topic is 
>>>> whether it would be better to
>>>> replace all cfs_* functions with standard Linux kernel functions en-masse, 
>>>> or migrate away from
>> cfs_*
>>>> functions slowly?
>>>>>
>>>>> Also, we're planning on deprecating the liblustre client code, due to 
>>>>> lack of interest/usage.  The
>>>> current code is in disrepair, and we've been keeping it around for years 
>>>> without any benefit, and
>>>> while I was one of the strongest advocates for keeping it in our back 
>>>> pocket in case of future
>> needs,
>>>> I don't see that materializing in the future.
>>>>>
>>>>> The liblustre code would be left in the tree for now, in case someone 
>>>>> from the community is
>>>> interested to get it working and maintain it, and it may be updated on a 
>>>> best effort basis.  If
>> nobody
>>>> steps forward to do this work, the liblustre code would be deleted from 
>>>> the development branch in a
>>>> year or so.
>>>>>
>>>>>
>>>>> Unfortunately, after starting this thread, I may not be able to reply to 
>>>>> questions in a timely
>>>> manner due to vacation.  I look forward to a thread that concludes with 
>>>> unanimous agreement from
>> all
>>>> parties. :-)
>>>>>
>>>>> Cheers, Andreas
>>>>> --
>>>>> Andreas Dilger                       Whamcloud, Inc.
>>>>> Principal Lustre Engineer            http://www.whamcloud.com/
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> Cheers, Andreas
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
> 
> _______________________________________________
> Lustre-discuss mailing list
> [email protected]
> http://lists.lustre.org/mailman/listinfo/lustre-discuss

_______________________________________________
Lustre-discuss mailing list
[email protected]
http://lists.lustre.org/mailman/listinfo/lustre-discuss

Reply via email to