linux社区工作经验总结

今天刚往社区里放了一个patchset,

https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=f379fdf10b12e19080ee4e2ce27ed54d9e8806d8


共包含三个patch,具体内容如下:

https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=388f79fda74fd3d8700ed5d899573ec58c2e0253

https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=c15ab236d69dd6dad24541400f460c47853803f8

https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/commit/?id=65a206c01e8e7ffe971477a36419422099216eff


 加上其他的两个bugfix,也算是贡献了上千行代码了。

$ git  log --oneline --author="chrism@mellanox.com"

65a206c net/sched: Change act_api and act_xxx modules to use IDR
c15ab23 net/sched: Change cls_flower to use IDR
388f79f idr: Add new APIs to support unsigned long
7f3b39d net/sched: Fix the logic error to decide the ingress qdisc
5f195c2 net/mlx5e: Fix min inline value for VF rep SQs


首先请仔细阅读下面的文章,review代码要用到git send-email

https://burzalodowa.wordpress.com/2013/10/05/how-to-send-patches-with-git-send-email/

如果你有三个commits,用下面的命令生成如下四个文件:

$  git format-patch --cover-letter --subject-prefix="patch net-next" -o $patch_dir -3

$ cd $patch_dir

$ ll

total 80K
-rw-r--r-- 1 chrism mtl 2.0K Aug 30 02:26 0000-cover-letter.patch
-rw-r--r-- 1 chrism mtl 9.5K Aug 30 02:22 0001-idr-Add-new-APIs-to-support-unsigned-long.patch
-rw-r--r-- 1 chrism mtl 4.8K Aug 30 02:22 0002-net-sched-Change-cls_flower-to-use-IDR.patch
-rw-r--r-- 1 chrism mtl  52K Aug 30 02:22 0003-net-sched-Change-act_api-and-act_xxx-modules-to-use-.patch

修改文件0000-cover-letter.patch,说明这个patchset是干什么的。

如果只有一个commit,就不要cover-letter了。feature要往branch net-next里面放,重要的bugfix一般放到branch net里面。

我们主要工作在networking上,所以基本只用这两个branch。


在发出去review前,要用脚本scripts/checkpatch.pl检查有没有格式上的错误,脚本在linux代码里面。

信发给谁呢,可以用scripts/get_maintainer.pl这个脚本得到一些邮件列表,如果列表太大,不要全发,会被challenge的

捡些重要的发就行了。

下面是个例子:

git send-email /labhome/chrism/net-next/review3/* --to=netdev@vger.kernel.org \
    --cc=jhs@mojatatu.com \
    --cc=xiyou.wangcong@gmail.com \
    --cc=jiri@resnulli.us \
    --cc=davem@davemloft.net \
    --suppress-cc=all

send-email有个--dry-run选项,发前可以先检查一下。


如果根据别人的comment修改过代码后,再发时,要加上v2,v3等等,并且cover-letter上要有changlog。

$  git format-patch --cover-letter --subject-prefix="patch net-next v2" -o $patch_dir -3


send-email需要在~/.gitconfig里加上如下内容:

[sendemail]
        smtpserver = labmailer.lab.your.com
        smtpserverport = 25
        aliasesfile = ~/.gitaliases
        aliasfiletype = mutt
        confirm = always


comment的格式也有要求,举个例子:

一定要有标题,标题前要标明改的是哪个模块,标题第一个字母要大写


    net/sched: Change cls_flower to use IDR

    Currently, all filters with the same priority are linked in a doubly
    linked list. Every filter should have a unique handle. To make the
    handle unique, we need to iterate the list every time to see if the
    handle exists or not when inserting a new filter. It is time-consuming.
    For example, it takes about 5m3.169s to insert 64K rules.

    This patch changes cls_flower to use IDR. With this patch, it
    takes about 0m1.127s to insert 64K rules. The improvement is huge.

    But please note that in this testing, all filters share the same action.
    If every filter has a unique action, that is another bottleneck.
    Follow-up patch in this patchset addresses that.

    Signed-off-by: Chris Mi <chrism@mellanox.com>


如果是bugfix的话,一定要找出是哪个commit引起的问题,举个例子:


    net/sched: Fix the logic error to decide the ingress qdisc

    The offending commit used a newly added helper function.
    But the logic is wrong. Without this fix, the affected NICs
    can't do HW offload. Error -EOPNOTSUPP will be returned directly.

    Fixes: a2e8da9378cc ("net/sched: use newly added classid identity helpers")

    Signed-off-by: Chris Mi <chrism@mellanox.com>

并且offending commit的obj ID(a2e8da9378cc)一定是前12位

Signed-off-by一般是作者的邮件,别人review过你的代码后,会说

Acked-by: name <email>

别忘记在comment上加了。


好了,大概就这么多了,有什么补充的以后再修改了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值