4014bd401f
Tested under CHAOS4.2, RHEL5, SLES11, and FC11 (all x86_64) Features: Honor spa_mode() when opening the block device. Previously this was ignored and devices were always opened read/write. Integrated DKIOCFLUSHWRITECACHE zio operation with linux WRITE_BARRIER for kernels post 2.6.24 where empty bio requests are supported. For earlier kernels ENOTSUP is returned and no barriers are performed. If RHEL5 based kernels are intended to be supported long term we may need make use of the old akward API. With the addition of WRITE_BARRIER support all writes which were WRITE_SYNC can now be safely made WRITE bios. They will now take advantage of aggregation in the elevator and improved write performance is likely. Notice the ZIO_FLAG_SPECULATIVE flag and pass along the hint to the elevator by using READA instead of READ. This provides the elevator the ability to prioritize the real READs ahead of the speculative IO if needed. Implement an initial version of vdev_disk_io_done() which in the case of an EIO error triggers a media change check. If it determines a media change has occured we fail the device and remove it from the config. This logic I'm sure can be improved further but for now it is an improvement over the VERIFY() that no error will ever happen. APIs: 2.6.22 API change Unused destroy_dirty_buffers arg removed from prototype. 2.6.24 API change Empty write barriers are now supported and we should use them. 2.6.24 API change Size argument dropped from bio_endio and bi_end_io, because the bi_end_io is only called once now when the request is complete. There is no longer any need for a size argument. This also means that partial IO's are no longer possibe and the end_io callback should not check bi->bi_size. Finally, the return type was updated to void. 2.6.28 API change open/close_bdev_excl() renamed to open/close_bdev_exclusive(). 2.6.29 API change BIO_RW_SYNC renamed to BIO_RW_SYNCIO. |
||
---|---|---|
.. | ||
avl | ||
nvpair | ||
unicode | ||
zcommon | ||
zfs | ||
Makefile.in |