writev to scsi disks
I was wondering if I did a simple writev to a SCSI disk, does it take the sg path to the device? I am guessing sg (REQ_SPECIAL) is only true for character devices (and ioctl's) and not block devices.
These are my questions:
- Is sg a common feature among SCSI disks these days? How do I know
what disks support this feature (any capabilities published by the driver)?
- How does one make writev work for SCSI disk (as a block device)
in direct_io?
- If I use SCSI disks as character device, can I simply use writev on the
character device file, and will sg codepath be taken?
Quoted 3 lines · Dheeraj Pandey
I was wondering if I did a simple writev to a SCSI disk, does it take the sg path to the device? I am guessing sg (
REQ_SPECIAL) is only true for character devices (and ioctl's) and not block devices.
? I think you misunderstand how writev works. It's design is to take a list of scattered buffers in a user program and consolidate them into a single write. This (in the current implementation) is a separate entity from the block level Scatter Gather.
If by sg write path, if you mean scatter-gather write path, then yes, that single write would be split up again into a sg list based on the device parameters if you mean does the writev sg list control where on the disk the data ends up, then no, if you use a disk device as a simple file, writev consolidates all writes to the current file position.
James