07.06.2013 Views

Scsi - Index of

Scsi - Index of

Scsi - Index of

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3250,E70,E60,N91,N80,E61,NIKON<br />

的DSC D70,DSC D70s,DSC D80,索尼爱立信的P990i,M600i,摩托罗拉的RAZR V3x,RAZR V3i,等<br />

一大批产品都出现了这个问题.虽然偶自己的Nokia 6108 没有这种问题,但是考虑到Apple 的iPod 最近<br />

被评为最伟大的20 件IT 产品之一,而Nokia 作为我们Intel 多年来最重要的customer 之一,我觉得这<br />

里<br />

我们还是有必要来看看这个bug 的.再说了,了解了这个,将来去Nokia 面试,去Apple 面试,或者次一点,<br />

去<br />

摩托罗拉或者索尼爱立信面试,跟人家谈一下,喂,伙计,我听说你家的产品有这么这么一个bug,怎么回事<br />

啊?<br />

兄弟们是不是待遇不佳压力太大啊?人家一看你这么拽,连这种内幕都知道,能不要你么?<br />

光荣属于苹果,属于诺基亚,属于摩托罗拉,属于索尼爱立<br />

信!<br />

这一节我们来分析一个在很多企业的产品中都存在的bug.写设备驱动是一件很实在的事情,你得根据实<br />

实在在的硬件来编写你的代码,如果你的硬件存在某种bug,那么你就要去fix 它.如果你希望成为通用的驱<br />

动程序,那么你就要兼顾各家企业,兼顾各种可能存在的bug.也许一百家企业的产品都可以很好的被你的程<br />

序所支持,但是如果地一百零一家的产品有问题,你就得尽量解决.usb-storage 正是这样一个模块.所以它<br />

的代码里会涉及到很多不同的企业.当然我相信,有一个更重要的原因,那就是,没有企业的支持,Linux 不可<br />

能像今天这样火.所以Linux 内核代码中支持诸多企业的设备也是必然的,就像厉娜在给把票投给许飞而不<br />

是给我们复旦的尚雯婕的时候说的那句:于情于理于公于私,都应该这样.<br />

很多年前,《商业周刊》断言:“自由软件业的开发者大部分水平不高,不可能制造高端的企业级产品”. 这是<br />

事实, 出身卑微的Linux 真正有出人头地的机会, 的确是在各大名企大规模介入之后. 而任何一家企业支<br />

持Linux 的目的都只是为了赚钱.IBM 干嘛支持Linux?老板思想境界高?想为全人类服务?我告诉你,IBM<br />

自从2000 年开始展开Linux 战略,2002 年他们家就从Linux 市场上赚取了10 亿美元.所有的公司支持<br />

Linux 的目的无非就是想瓜分那些曾经属于微软的财富. 正如洪波所说的那样,大企业只不过是花钱为这<br />

次<br />

抢劫置办一件迷人的外衣,让所有人认同这样一个观点,那就是,张君拿着武器抢劫运钞车,是死罪,有钱人拿<br />

着Linux 瓜分微软,是正义. (注:张君,我的老乡,也是我当年的偶像)更滑稽的是,时间长了,每一个学习<br />

Linux 的人都有这样一种感觉,觉得自己正做着一件伟大的正义的,追求自由的大事.(郑重声明一下,我是例<br />

外,从未觉得Linux 跟伟大有什么关系,学习Linux 只是混口饭而已.)<br />

Ok,下面让我们来仔细看看这段属于苹果,属于诺基亚,属于摩托罗拉,属于索尼爱立信的代码<br />

吧.US_FL_FIX_CAPACITY 这个flag 的设置,意味着这种设备存在这么一个bug.在scsi 众多命令中,有<br />

一个命令叫做READ CAPACITY.它的作用很简单,就是读取磁盘的总容量.先来点直观的印象吧,还记得当<br />

初哥们给你推荐的那个工具sg_utils3 么,当初用它执行了INQUIRY 命令.现在咱们用它执行READ<br />

CAPACITY,具体命令名字叫做sg_readcap.你要是装了SUSE Linux 的话,里边的rpm 包可能不叫<br />

sg_utils,而是叫scsi-xx-xx,比如偶的就是scsi-1.7_2.36_1.19_0.17_0.97-12.4.这个包包含很多执<br />

行scsi 命令的工具.而且都有man 文档,不会用看看man 就知道了.<br />

180<br />

先来个硬盘的,比如偶的scsi 硬盘:<br />

myhost: # sg_readcap -b /dev/sda<br />

0x11040000 0x200<br />

myhost: # fdisk -l /dev/sda

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!