How about iSCSI?
Hello,
After reading the ReactOS GSoC ideas page, I became interested in the
IFS wrapper driver project idea[1], and would appreciate any comments
on my project proposal before I formally submit it.
First, a bit about me. I am a student in a dual-major program,
studying Computer Science and Japanese at the University of
Massachusetts at Amherst. I have had some experience in kernel
development previously; as part of an internship at a research project
at my University, I wrote some network flow analysis code running in
the Linux kernel. While filesystem work will be a first for me, I
think it will be an interesting leaning experience. I am fluent in
English and Japanese, and am in the UTC-0400 timezone (TZ=US/Eastern).
My freenode username is bd_, and my myReactOS username is bdonlan.
In preparation for writing this proposal, I obtained a copy of the
"Windows NT File System Internals: A Developer's Guide" book from
O'Reilly. Although a bit dated, it has been enourmously helpful in
helping me get an idea of what I'm getting into.
My goal in this project will be to write a library to significantly
simplify writing a NT File System Driver. Although writing a
kernel-mode filesystem will never be as easy as with, eg, FUSE, it
should be possible to abstract away many of the idiosyncracies of the
NT filesystem API, at least. For example, the wrapper library may
handle:
* Automatically queueing asynchronous filesystem operations on a worker thread
* Parsing paths and invoking a FS-supplied traversal function for each
directory element
* Interfacing with the NT cache manager, including flushing data from
the cache when a non-cached operation is performed on a cached file,
and establishing cache maps for the underlying device for a disk-based
file system
* Providing a common implementation of byte range locks and oplocks,
and disabling fast I/O when they are in use
* Caching directory entry lookups
* Performing typical input validation/security checks needed by all NT
filesystems
* Helper tools may also be provided to load pseudo-filesystems
(filesystems with neither network nor disk backing) on an ad-hoc basis
Essentially, the library should make it easy for the filesystem
designer to focus on the actual filesystem, rather than the NT IFS
interfaces - a read call would be able to skip all the preparation and
checks, and directly go to perform the actual I/O.
Major milestones for the project may include:
- Prepare a sketch of the API and callbacks for the IFS helper library
(subject to change if necessary)
- Implement enough of the wrapper library to implement a simple
pseudo-filesystem demonstrating non-cached reads and writes
- Add support for cached reads/writes (interaction with the cache
manager, caching for on-disk metadata)
- Demonstrate a disk-based filesystem without metadata update support
(MINIX FS or FAT?)
- Demonstrate a disk-based filesystem with full read-write support
- If time allows, add support for ancillary features, such as byte
locks, oplocks, and notify watchers.
The interfaces exposed by the filesystem library will of course be
clearly documented. Filesystems needing more advanced support will
also be able to override any IFS callbacks they choose.
I have an existing consulting commitment that will take some of my
time, but I expect to be able to put in 20-30 hours of work per week
into this project. Further, I hereby swear that I have not used nor
seen the source code to any version of the Windows operating system
nor any Microsoft product that may be related to the proposed project
that is under a license incompatible with contribution to ReactOS,
including but not limited to the leaked Windows 2000 source code and
the Windows Research Kernel.
I would appreciate any comments on my proposal before formally
submitting it to the GSoC site.
Thanks,
Bryan Donlan
[1] - http://www.reactos.org/wiki/Google_Summer_of_Code_2011_Ideas#IFS_Wrapper_Driver
_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev