raw is used to bind a Linux raw character device to a block device.
Any block device may be used: at the time of binding, the device
driver does not even have to be accessible (it may be loaded on
demand as a kernel module later).
raw is used in two modes: it either sets raw device bindings, or it
queries existing bindings. When setting a raw device,
/dev/raw/raw<N> is the device name of an existing raw device node in
the filesystem. The block device to which it is to be bound can be
specified either in terms of its major and minor device numbers, or
as a path name /dev/<blockdev> to an existing block device file.
The bindings already in existence can be queried with the -q option,
which is used either with a raw device filename to query that one
device, or with the -a option to query all bound raw devices.
Unbinding can be done by specifying major and minor 0.
Once bound to a block device, a raw device can be opened, read and
written, just like the block device it is bound to. However, the raw
device does not behave exactly like the block device. In particular,
access to the raw device bypasses the kernel's block buffer cache
entirely: all I/O is done directly to and from the address space of
the process performing the I/O. If the underlying block device
driver can support DMA, then no data copying at all is required to
complete the I/O.
Because raw I/O involves direct hardware access to a process's
memory, a few extra restrictions must be observed. All I/Os must be
correctly aligned in memory and on disk: they must start at a sector
offset on disk, they must be an exact number of sectors long, and the
data buffer in virtual memory must also be aligned to a multiple of
the sector size. The sector size is 512 bytes for most devices.
Set query mode. raw will query an existing binding instead of
setting a new one.
With -q , specify that all bound raw devices should be
Display help text and exit.
Display version information and exit.
The Linux dd(1) command should be used without the bs= option, or the
blocksize needs to be a multiple of the sector size of the device
(512 bytes usually), otherwise it will fail with "Invalid Argument"
Raw I/O devices do not maintain cache coherency with the Linux block
device buffer cache. If you use raw I/O to overwrite data already in
the buffer cache, the buffer cache will no longer correspond to the
contents of the actual storage device underneath. This is
deliberate, but is regarded either a bug or a feature depending on
who you ask!
This page is part of the util-linux (a random collection of Linux
utilities) project. Information about the project can be found at
⟨https://www.kernel.org/pub/linux/utils/util-linux/⟩. If you have a
bug report for this manual page, send it to
firstname.lastname@example.org. This page was obtained from the
project's upstream Git repository
2016-12-10. If you discover any rendering problems in this HTML ver‐
sion of the page, or you believe there is a better or more up-to-date
source for the page, or you have corrections or improvements to the
information in this COLOPHON (which is not part of the original man‐
ual page), send a mail to email@example.com
util-linux August 1999 RAW(8)