尽管 lk 2.4 生产系列旨在“稳定”,但仍有大量的更改以及错误修复。以下列表不包括对较低级别(适配器)驱动程序的更改。列表中的每个项目都以引入它的内核版本为前缀。 [1]
[2.4.4] 添加了 SCSI_IOCTL_GET_PCI ioctl(),
[2.4.7] 如果设备的 INQUIRY 显示 SCSI 级别高于 SCSI_2,则“lun”位(代表 SCSI 1 和 SCSI 2 标准中 lun 值 0 到 7 的 3 位)不再被屏蔽到 SCSI 命令的第二个字节中,
[2.4.7] max_scsi_luns 内核(和模块 scsi_mod)选项以前可以是 1 到 7。现在上限值可以很大。[扫描算法仍然执行顺序扫描,而不是使用 REPORT_LUNS。]
[2.4.7] scsi_unregister_host() 和 scsi_unregister_module() 现在都返回 int 类型(以前它们是 void 函数)。成功时返回 0,失败时返回 -1(通常为忙),
[2.4.7] 上层驱动程序现在在附加时报告正确的 scsi 设备名称。[以前以“Detected ...”开头的日志消息有时会报告错误的设备(例如,sdc 而不是 sdb)。]内核启动消息现在会将 SCSI 设备显示为“Attached ...”,
[2.4.7] 'max_sectors' 已添加到 Scsi_Host 结构中,
[2.4.8] 更改了一些中间层逻辑,以便在 sense 缓冲区指示逻辑单元即将就绪时重试命令 [ASC=4, ASQ=1],
[2.4.9] 一次重要的 st 更新,
[2.4.9] 中间层更改为在较低级别(适配器)驱动程序返回 DID_RESET 时重试命令,
[2.4.10] 当中间层发出 REQUEST SENSE 时,原始结果(包括 SCSI 状态)会被保存,以便之后可以恢复,
[2.4.10] 向 sd + sr 添加了 BLKGETSIZE64、BLKBSZSET 和 BLKBSZGET ioctl,
[2.4.10] sg 更新,修复了 generic_unplug_device() 竞争条件 + 增加了打开时的 access_count(并在释放时减少),
[2.4.11] 在大多数驱动程序中添加了 MODULE_LICENSE 宏,主要是 MODULE_LICENSE("GPL"),
[2.4.11] 每个命令都增加了 scsi_pid(为什么?),
[2.4.11] st 更新以增加 access_count。现在所有上层驱动程序都在打开时增加 access_count,并在释放时减少它,
[2.4.13] scatterlist 结构增长(alt_address 被删除,添加了 page 和 offset),
[2.4.13] 对于 target <= SCSI_2,不要探测 luns > 7,
[2.4.14] 与 scatterlist 结构更改相关的微调(错误修复)[它破坏了 st 吗?],
[2.4.15] 允许 16 字节 SCSI 命令 [MAX_COMMAND_SIZE 从 12 更改为 16]。HBA 驱动程序必须将 Scsi_Host::max_cmd_len 设置为 16,以便中间层转发 16 字节 SCSI 命令,
[2.4.15] BLKGETSIZE + BLKGETSIZE64 ioctl() 实现从 SCSI 子系统移出(并移入块子系统),
[2.4.15] 大型 st 更新,
[2.4.15] lk 2.5.0 分支,因此 lk2.4.15==lk2.5.0。
[2.4.17] 向 scsi_wait_req() 添加 generic_unplug_device() 调用。这可以停止 SCSI_IOCTL_SEND_COMMAND 中的长时间等待。
[2.4.17] 修复设备扫描错误,在某些情况下,scsi_level(即 SCSI 标准符合性)错位。
[2.4.17] 主要 sg 驱动程序更新,添加 mmap()-ed IO
[2.4.18] 允许上层驱动程序 “init()” 函数(例如 sd_init())优雅地失败。[添加 Scsi_Device::detected 和 scsi_unregister_module()。]
[2.4.18] 修复 MO 设备上集群(SCSI 命令)的问题。
[2.4.18] st 驱动程序更新(压缩算法)。
[2.4.18] 更新 Documentation/scsi.txt 和 scsi-generic.txt。
[2.4.18] 改进 scsi_debug 驱动程序。
[2.4.19] 添加了 Scsi 预留和重置功能。预留允许多台机器共享同一设备(通过预留/释放机制)。需要 Scsi 重置(通过 sg)来“打破”由无响应机器持有的预留。
[2.4.19] 引入 BLIST_LARGELUN 来处理 LUN 大于 7 但报告为 SCSI 2 的情况。
[2.4.19] 更改 sd 和 sr,使 RECOVERED_ERROR 不被视为硬错误。向日志/控制台发送警告。
[2.4.19] 在使用前清零 sg 的缓冲区。[Sg 版本从 3.1.22 升级到 3.1.24,但这并未反映在 sg.h 中(表面上的)。]
[2.4.20] 添加了对 highmem I/O 的支持。由 aic7xxx、3w-xxxx、esp、megaraid、qlogicfc 和 sym53c8xx_2 LLD 使用。
[2.4.20] 向 st 添加了 “blocking_open” 启动时间、模块加载时间参数。
[2.4.21] 除非有 “scsihosts” 匹配,否则为新的 HBA 提供新的主机号(高于任何以前使用过的)。只有在有 “scsihosts” 匹配时,主机编号序列中的“空洞”才会被重新使用。
[2.4.21] 停止将 SCSI 状态 RECOVERED ERROR 被中间层视为错误(补充了 2.4.19 中的更改)。
[2.4.21] 使用 TEST_UNIT_READY 命令(而不是 START_STOP)来确定可移动介质是否已更改(在 sd 驱动程序中)。
[2.4.21] ide-scsi 驱动程序的主要工作。
[2.4.21] 为 Adaptec Ultra 320 控制器添加 aic79xx 驱动程序。
[2.4.22] 将 SEND DIAGNOSTIC 命令的超时时间延长至 2 小时。这是为了前台扩展自检。
[2.4.26] 添加 'scsi_allow_ghost_devices' 内核启动时间和 scsi_mod 模块选项。
[2.4.27] 引入了通过 “libata” 库的 SATA 支持。SATA 磁盘以 SCSI 子系统名称(例如 “/dev/sdb”)出现,并响应 SCSI 命令(通过命令转换工具)。
[1] | 此列表是从 www.kernel.org 发布的官方 2.4 系列内核编译而成的。发行版可以自由定制官方内核,这可能会影响 SCSI 子系统中支持(或更改)的内容。例如,此机器报告的内核为:“2.4.18-27.8.0”。因此,它大致基于官方 2.4.18 内核,供应商为他们的发行版的 “8.0” 级别“修改”了 27 次。作为更改类型的一个示例,官方 2.4.18 中的 aic7xxx 驱动程序不支持 Adaptec 的 Ultra 320 系列 PCI 适配器;但是,该供应商的版本支持。 |