Annotation of wikisrc/projects/project/disk-removal.mdwn, revision 1.1

1.1     ! jmmv        1: [[!template id=project
        !             2: 
        !             3: title="Graceful USB disk detach/reattach"
        !             4: 
        !             5: contact="""
        !             6: [tech-kern](mailto:tech-kern@NetBSD.org)
        !             7: """
        !             8: 
        !             9: mentors="""
        !            10: [Matthias Drochner](mailto:drochner@NetBSD.org), [David Young](mailto:dyoung@NetBSD.org)
        !            11: """
        !            12: 
        !            13: duration="3 months"
        !            14: 
        !            15: description="""
        !            16: Make NetBSD behave gracefully when a "live" USB/FireWire disk drive is accidentally detached and re-attached by, for example, creating a virtual block device that receives block-read/write commands on behalf of the underlying disk driver. This device will delegate reads and writes to the disk driver, but it will keep a list of commands that are "outstanding," that is, reads that the disk driver has not completed, and writes that have not "hit the platter," so to speak. Following disk re-attachment, the virtual block device replays its list of outstanding commands. A correct solution will not replay commands to the wrong disk if the removable was replaced instead of re-attached. Provide a character device for userland to read indications that a disk in use was abruptly detached.
        !            17: 
        !            18: Open questions: Prior art? Isn't this how the Amiga worked? How will this interact with mount/unmount—is there a use-count on devices? Can you leverage "wedges" in your solution? Does any/most/all removable storage indicate reliably when a block written has actually reached the medium?
        !            19: """
        !            20: ]]
        !            21: 
        !            22: [[!tag gsoc]]
        !            23: [[!tag hard]]
        !            24: [[!tag kernel]]

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb