Monthly Archives: February 2012

红帽内核测试招聘实习生

红帽内核测试组招实习生,长期有效(联系方式见About页面)

工作内容:
1. 编写测试用例(C/bash/python/perl,只要你会,但bash占大多数),并运行测试,查看并分析结果
2. 对bug进行验证(在旧版本上重现,在新版本上验证)
3. 运行已存在的自动化测试用例,查看并分析结果(有bug报bug,测试有问题改测试)

工作范围:
1. 网络测试,包括vlan/bonding/ipv6/NIC driver等
2. 文件系统测试,extN/xfs/btrfs/NFS/CIFS/autofs
3. 内核小版本升级的测试,可能会遇到各种bug,比如安全相关的CVE bug,cpu/mem的bug,调度器的bug等等
(以上工作内容都可能涉及到,但会根据个人兴趣爱好和能力适当安排)

要求:
1. 做事要认真,仔细,要对自己负责
2. 实习期至少半年,每周保证至少4天
3. 有较好的Linux基础,对shell脚本和C语言要熟悉
4. 有内核基础知识优先,了解网络/文件系统的优先
5. 热爱开源,以Linux为平时桌面系统,有开源社区经验优先
6. 向upstream报过bug,提交过patch的大大优先

可能的收获:
1. 比较微薄的实习工资,不会很低,但也不会太高
2. 对Linux系统和Kernel有更多了解的机会
3. 有跟upstream developer接触沟通的机会
4. 一个更好的向upstream贡献patch的平台(可能是kernel,可能是其他开源项目,比如LTP、xfstests)
5. 从实习生转为正式员工的机会

非常欢迎喜欢Linux、热爱开源的同学加入,我个人认为还是一个非常好的机会的 :-)

当fallocate(2)遇到ENOSPC

fallocate(2)这个系统调用主要用来快速给文件预分配空间,被预分配的空间不会写0进去,只是在读取预分配的部分的时候内核直接返回0,所以fallocate(2)操作很快。ext4/xfs/btrfs都支持这个操作(ext3还不支持)。比如预分配10G的空间:

$ df -h | grep xfs
/dev/sda6                      47G   33M   47G   1% /mnt/xfs
$ sudo fallocate -l $((10*1024*1024*1024)) /mnt/xfs/testfile
$ ls -l /mnt/xfs/testfile
-rw-r--r-- 1 root root 10737418240 Feb 12 22:27 /mnt/xfs/testfile
$ df -h | grep xfs
/dev/sda6                      47G   11G   37G  22% /mnt/xfs

但是当要分配的空间大于分区的剩余空间fallocate(2)就会返回ENOSPC错误,但是空间已经分配一部分了,也就是说fallocate(2)不是原子的。

$ df -h | grep xfs
/dev/sda6                      47G   33M   47G   1% /mnt/xfs
$ sudo fallocate -l $((100*1024*1024*1024)) /mnt/xfs/testfile
fallocate: /mnt/xfs/testfile: fallocate failed: No space left on device
$ ls -l /mnt/xfs/testfile
-rw-r--r-- 1 root root 0 Feb 12 22:31 /mnt/xfs/testfile
gery@Debian-Desktop:~$ df -h | grep xfs
/dev/sda6                      47G   40G  7.3G  85% /mnt/xfs

这里可以看到虽然falocate(2)本身已经返回ENOSPC,但是df还是显示已经有85%的空间被占用了。xfs显示文件本身大小还是0,ext4则会把所有剩余空间都占用上,并把文件大小做相应的更新。当然这只是不同文件系统实现上的细微差别,非原子性都是一样的。

在ext4的邮件列表里曾经有人提到过这个问题,Eric Sandeen的回答是,标准没有规定这种情况要如何处理,但现在的实现都很一致。所以用户程序需要自己去检测fallocate(2)的返回值并在出错的情况下做相应的处理,比如unlink(2)或者truncate(2)。

可以看这个thread http://www.spinics.net/lists/linux-ext4/msg29690.html