]> Zhao Yanbai Git Server - minix.git/commit
FS support for grant-based i/o.
authorBen Gras <ben@minix3.org>
Tue, 20 Jun 2006 10:12:09 +0000 (10:12 +0000)
committerBen Gras <ben@minix3.org>
Tue, 20 Jun 2006 10:12:09 +0000 (10:12 +0000)
commit2384a852969451e12d3b4fa30a85e366b19a3a3b
treec53fd9e8c2176919aaa013ac86cedd689b24bbfd
parent54f1e6d3d4c1db3f8771751397ca449d79cce8dc
FS support for grant-based i/o.

For character device i/o, FS does a so-called 'magic' grant to let the
driver copy from or to user space. As this is done in FS address space,
the driver is told to do this in FS address space. The redirection to
the right user process then happens at copy-time in the kernel, using the
FS grant table. This also happens for DEV_READ and DEV_WRITE on block
devices.

For other block device i/o, which happens from/to FS buffers, FS does
a 'direct' grant to its own address space for the driver.

After the i/o returns, this access has to be K-I-L-L-E-D, revoked.
Sometimes this is after a SUSPEND and DEV_REVIVE, in which case the
revoking happens in pipe.c.

This conversion happens in safe_io_conversion() in device.c, called
by dev_io and dev_bio.

FS has to pre-allocate its own space for these grant tables. This happens
in main.c.
servers/fs/Makefile
servers/fs/cache.c
servers/fs/device.c
servers/fs/fproc.h
servers/fs/main.c
servers/fs/misc.c
servers/fs/pipe.c
servers/fs/proto.h