[project] Development cycle binaries for today
[people/sha0/winvblock.git] / CHANGES.log
1 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2 Date:   Tue Jun 1 03:19:42 2010 -0400\r
3 \r
4     [version] Up version to 0.0.1.8\r
5     \r
6     This release introduces initial support for GRUB4DOS\r
7     sector-mapped disks.  Currently, only HDD images with MBRs\r
8     are supported.\r
9     \r
10     Please note that this is an early stage in supporting this\r
11     scenario, so you might find quirks.  Also be aware of the\r
12     limitations:\r
13     - If your booted-from disk image file gets _moved_ while you\r
14       are booted from it, expect terrible things to happen.  Try\r
15       to avoid such things as defragmenting the filesystem with\r
16       the disk image on it!\r
17     - There isn't really a good way to know which Windows disk a\r
18       GRUB4DOS backing disk corresponds to!  Not enough information\r
19       is available to make the right decision.  BIOS drive numbers\r
20       have no relevance in Windows, so we cannot exactly identify\r
21       which backing disk is correct for a disk image\r
22     - WinVBlock is not capable of magic; your booted disk image\r
23       _must_ have drivers and device ID associations so that the\r
24       _real_ disks are found at boot time!\r
25 \r
26 commit 528bc2fd78dc16ab0eb491d16d7c9754cedf2baf\r
27 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
28 Date:   Tue Jun 1 03:09:12 2010 -0400\r
29 \r
30     [filedisk] Add MBR check for GRUB4DOS disks\r
31     \r
32     We lack any good means of finding the correct backing disk for\r
33     a boot-time file-backed disk.  Here is a really cheap check\r
34     which will test for an MBR where we would expect on on the\r
35     backing disk.  This doesn't support CD/DVD, obviously.\r
36 \r
37 commit 4e975c0c27e20785862311a2cdb26195fe7c4f9d\r
38 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
39 Date:   Tue Jun 1 02:28:04 2010 -0400\r
40 \r
41     [disk] Move MBR structure def. and CHS macros into header\r
42 \r
43 commit 0ae2ca7a78e9cf27f22a316dcb05803c62db80b9\r
44 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
45 Date:   Tue Jun 1 00:43:43 2010 -0400\r
46 \r
47     [filedisk] Increase timeout for threaded disk processing\r
48     \r
49     If there's nothing to do but a possible device__free(),\r
50     just sleep for up to a whole second before checking.\r
51 \r
52 commit 011dab2d9d092b18e4b33ac6c4f9cef704bc76ef\r
53 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
54 Date:   Tue Jun 1 00:04:06 2010 -0400\r
55 \r
56     [filedisk] Initial support for booting a filedisk from GRUB4DOS\r
57     \r
58     Whee.  We scan memory for GRUB4DOS sector-mapped disks, create\r
59     filedisks for them, then hook them so that the first time they\r
60     are used, we try to find the appropriate backing disk for each.\r
61     \r
62     The limitations of the current implementation are:\r
63     - We assume the first disk is the right backing disk (very naive)\r
64     - We don't check to make sure we don't open our own disk\r
65     - It's pretty slow for some reason that needs investigation\r
66     - There is not really a good way to associate GRUB4DOS mappings\r
67       to Windows disks; not enough information is passed!\r
68     - If the image file for a filedisk gets moved while we are using\r
69       it, expect terrible things to happen!\r
70 \r
71 commit c4ecc3c834c3cc134c57a6ff6111c5bf304518e5\r
72 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
73 Date:   Mon May 31 22:36:38 2010 -0400\r
74 \r
75     [filedisk] Move filedisk__get_ptr macro into header\r
76     \r
77     Same as other such *__get_ptr() macros used by multiple\r
78     C source files.\r
79 \r
80 commit 66a679f8bbd572030568f71a4230e8be13add7d6\r
81 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
82 Date:   Mon May 31 21:41:18 2010 -0400\r
83 \r
84     [filedisk] Implement threaded filedisk creation function\r
85     \r
86     filedisk__create_threaded() should return a pointer to a\r
87     threaded, file-backed disk.\r
88 \r
89 commit 98538ada95a51016053f6697554de76cf19f9d33\r
90 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
91 Date:   Mon May 31 21:21:16 2010 -0400\r
92 \r
93     [filedisk] Add support for threaded filedisks\r
94     \r
95     We now have a disk__io routine which enqueues a request for\r
96     later processing.  We implement a device__free routine to\r
97     support such asynchronous filedisks.  We have a thread\r
98     function per threaded filedisk which processes the queue\r
99     of requests.\r
100 \r
101 commit 9e1d1812362fc789b8fb9c2c0f742000335fa3f9\r
102 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
103 Date:   Mon May 31 15:29:26 2010 -0400\r
104 \r
105     [filedisk] Allow for a file offset\r
106     \r
107     It's useful to have a base offset into a file from which\r
108     the virtual disk's sectors will be considered to start.\r
109 \r
110 commit 351f5f0aa0b3b3b08d38d8cb4618cf01ca10d71c\r
111 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
112 Date:   Sun May 30 02:16:19 2010 -0400\r
113 \r
114     [filedisk] Add GRUB4DOS module\r
115     \r
116     Distinguish between the case of GRUB4DOS RAM disks and\r
117     GRUB4DOS sector-mapped (file-backed) disks.  A new probe\r
118     routine is added (which currently does nothing).\r
119 \r
120 commit d496bbd8a09700f1f9eff5699f5b4e1e84c13c16\r
121 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
122 Date:   Sun May 30 02:01:01 2010 -0400\r
123 \r
124     [filedisk] Put in own subdir and change to library\r
125     \r
126     There is a plan to support GRUB4DOS sector-mapped disks,\r
127     so we will need another probe routine, suggesting that\r
128     there should be a GRUB4DOS source file in a filedisk/\r
129     directory, as there is a GRUB4DOS source file in the\r
130     ramdisk/ directory.\r
131 \r
132 commit 7851226757d4ef03b7fdc7fe8341fbcc755ddbd5\r
133 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
134 Date:   Sun May 30 01:27:48 2010 -0400\r
135 \r
136     [disk] Allow for asynchronous IRP completion\r
137     \r
138     After much debugging, it was revealed that in order to use\r
139     ZwReadFile() for a file-backed disk during boot, one needs\r
140     to return STATUS_PENDING to the caller and start a worker\r
141     thread who will use ZwReadFile() and then complete the IRP.\r
142 \r
143 commit c3bbae2932391febefafa00590744e3b648455e1\r
144 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
145 Date:   Sun May 23 13:36:53 2010 -0400\r
146 \r
147     [irp,bus] Send and handle IRP completion properly for detach\r
148     \r
149     The disk detach handler was not completing the IRP and the\r
150     IRP processor was not checking for completion in an outer\r
151     while() loop.  Both fixed.\r
152 \r
153 commit cdb9742c4666551053e24693814a0112d097eefc\r
154 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
155 Date:   Sun May 23 12:47:02 2010 -0400\r
156 \r
157     [aoe] Fix get_ptr macro and uses\r
158     \r
159     How I missed this, I really have no idea...\r
160 \r
161 commit 85a5a7a469f6e8fc509999e4eca7c7ecf246ce30\r
162 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
163 Date:   Sun May 23 11:46:31 2010 -0400\r
164 \r
165     [bus] Fix NULL pointer dereference when disk walking\r
166     \r
167     For 'winvblk detach' and 'winvblk umount' commands.\r
168 \r
169 commit 9ae27babccf48d38a7908891dec8ed48e23b1a56\r
170 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
171 Date:   Sun May 23 11:45:17 2010 -0400\r
172 \r
173     [aoe] Fix NULL pointer dereferencing in disk walking\r
174     \r
175     For the 'winvblk show' command...  Which, by the way,\r
176     should be untied from the AoE module at some point.\r
177 \r
178 commit dafb0c3962355ada36b71501e890eb96dba873f5\r
179 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
180 Date:   Sun May 23 05:18:22 2010 -0400\r
181 \r
182     [major] Re-work device structures and creation\r
183     \r
184     This rather large commit affects a majority of the AoE and\r
185     WinVBlock modules.  It is unfortunately large in order to\r
186     ensure that after the series of changes were made, that a\r
187     system was still bootable from a WinVBlock disk.\r
188     \r
189     What was involved:\r
190     \r
191     A DEVICE_OBJECT's DeviceExtension member no longer points to\r
192     one of our device types.  All of our device types were\r
193     previously structures which included the structures they\r
194     derived functionality from as their first members.  So you\r
195     had something like a RAM disk with a disk as its first\r
196     member, a disk having a device as its first member.  So to\r
197     access any one of the structures, you could quite simply\r
198     cast a pointer.\r
199     \r
200     Now a DeviceExtension points to a pointer to a device__type.\r
201     A device__type has an ext member which is a pointer to the\r
202     instance of the next-higher structure type, such as a\r
203     disk__type.  A disk__type also has an ext member, so that\r
204     AoE, RAM, and file-backed disks can extend it.\r
205     \r
206     Each device class provides a global creation routine, which\r
207     tracks the device instance in a list of created devices for\r
208     that type.  The device class' creation routine should set\r
209     default parameters.  The creation routine can override the\r
210     device routines used by callers calling the routines of the\r
211     "base class" (the device type).  As an example, when you\r
212     create a RAM disk, you:\r
213       - create a disk\r
214         - which creates a device\r
215         - which hook's a device routine for the device\r
216       - hook some of the disk's routines\r
217       - add the RAM disk to the global list\r
218     \r
219     When deleting the RAM disk, you:\r
220       - call the deletion routine you hooked for the disk\r
221         - which calls the deletion rout. it hooked for the dev.\r
222       - remove the RAM disk from the global list\r
223     \r
224     Some copy'n'pasted comments were corrected.\r
225     \r
226     Some code expecting the base-class-as-first-member-of-\r
227     derived-class was exposed and modified appropriately.\r
228     \r
229     get_ptr() macros were changed.\r
230     \r
231     DEVICE_OBJECT deletion paths were tied to device__free()\r
232     calls.\r
233     \r
234     Some TODOs are left: More error-checking when calling\r
235     module initialization functions, watching NULL pointer\r
236     dereferences when walking sibling pointers.\r
237 \r
238 commit ee22e3f47b5745cbbd82bd4dbe61ae079b690082\r
239 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
240 Date:   Fri May 21 15:33:32 2010 -0400\r
241 \r
242     [bus] Use new bus creation strategy\r
243     \r
244     When creating the boot bus or when a user manually installs\r
245     a bus device, the bus module will use the new device creation\r
246     scheme.\r
247     \r
248     When the bus module initializes, it creates the boot bus,\r
249     which is a root-enumerated device via IoReportDetectedDevice().\r
250     Using this kernel function means that the PnpManager owns the\r
251     PDO.  If a user manually installs a bus device, PnpManager also\r
252     owns the PDO.  So the create_pdo() routine for a bus doesn't\r
253     make a lot of sense, except for indirectly for the case of the\r
254     boot bus only.\r
255     \r
256     Also, when the IoReportDetectedDevice() is used, we must\r
257     manually call our attach_fdo() function to create the\r
258     DEVICE_OBJECT which we own and which we will associate with\r
259     the driver-internal bus & device details.\r
260     \r
261     There is a really big nasty TODO left over in this commit\r
262     which should be removed as soon as possible.  In shifting to\r
263     the new device classing scheme, we are part-way through,\r
264     where some devices use a DEVICE_OBJECT's DeviceExtension as\r
265     a device__type_ptr, and the bus uses it as a device__type_ptr*.\r
266     So for now, we have the mini IRP handling system sense if it\r
267     should compensate for this.\r
268     \r
269     The next steps will be to move all of the various disk types\r
270     to use counterpart strategies for device classing.  But hey,\r
271     it still boots.\r
272 \r
273 commit 09743972d1ed6483a9ac1be0a6011f991390b9b5\r
274 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
275 Date:   Fri May 21 00:07:53 2010 -0400\r
276 \r
277     [cosmetics] Fix some typos due to copy and paste\r
278 \r
279 commit b21520d56202027a0e01212f4e7fe746ac4d669c\r
280 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
281 Date:   Thu May 20 23:48:15 2010 -0400\r
282 \r
283     [bus] bus__add_child once more takes a bus param\r
284     \r
285     Trying to move away from the "one bus" model.\r
286 \r
287 commit 7b4b51eecd6904c2aaf7fc3bff1ccc84a07d02b3\r
288 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
289 Date:   Thu May 20 23:12:12 2010 -0400\r
290 \r
291     [device,bus] Further develop device routines\r
292     \r
293     Much of it unused for now, but eventually (seems like it's\r
294     always eventually) each device type will create an instance\r
295     of a type it would like to derive from, then overrides\r
296     whatever operations it wants to.  When the device is asked\r
297     to perform operations, it should either have sensible, do-\r
298     nothing defaults or meaningful device-specific operations.\r
299 \r
300 commit badf22aa21fd2497a395bd8321770e207bdf1310\r
301 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
302 Date:   Thu May 20 16:19:28 2010 -0400\r
303 \r
304     [bus] Create boot bus here, introduce init function\r
305     \r
306     The bus module is now responsible for creation of bus PDOs,\r
307     such as the boot bus which exposes WinVBlock-supported boot\r
308     disks.  We now have bus__init() and bus__finalize() funcs\r
309     which are called by the driver module.\r
310     \r
311     We also mimic the device module by having a bus__create()\r
312     function, though it is currently unused, also like the\r
313     device__create() function.\r
314 \r
315 commit b99d66372c8ed5a83a76c5fd584ce472f2631d03\r
316 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
317 Date:   Thu May 20 09:41:29 2010 -0400\r
318 \r
319     [device] Don't use a pointer for device operations\r
320     \r
321     Instead of pointing at some device operations structure,\r
322     we actually copy the operations' function pointers for\r
323     each device.\r
324 \r
325 commit f0dc2f7cfb53df889524e8de78a1cbe8ba1fa531\r
326 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
327 Date:   Thu May 20 01:44:59 2010 -0400\r
328 \r
329     [device] Introduce device creation routine\r
330     \r
331     Though currently unused, the idea is to eventually have the\r
332     different device type modules as providers of their device\r
333     types.  The new device-common module will produce a device\r
334     structure which has device-common properties.  A caller can\r
335     then override whichever properties they need to, such as the\r
336     device operations.\r
337     \r
338     Also, device creation should track created devices for easy\r
339     tear-down later on.\r
340 \r
341 commit 95ccb0ef85ced48b53b4d459d36dd2170603b2fd\r
342 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
343 Date:   Tue May 18 16:39:41 2010 -0400\r
344 \r
345     [device] Introduce device header and move details there\r
346     \r
347     Move device specifics out of the driver header and into a\r
348     device headers, instead.  We are on our way to a form of\r
349     device functionality inheritance...  Something like:\r
350     \r
351       device\r
352       ..bus\r
353       ..disk\r
354       ....aoe\r
355       ....ramdisk\r
356       ....filedisk\r
357     \r
358     "And the rest." - Gilligan's Island\r
359 \r
360 commit ca9d2991567c6ef9d846ccad0eb13c06e8a38d1b\r
361 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
362 Date:   Tue May 18 10:42:23 2010 -0400\r
363 \r
364     [winvblock/driver] Rename dev_ext member to device\r
365     \r
366     Just cosmetic.  I am trying to hide the details of\r
367     Windows DEVICE_OBJECTs with their DeviceExtension.\r
368 \r
369 commit 81ea249b7a177e6ef8ed86d4854c2cb55430d4ab\r
370 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
371 Date:   Tue May 18 10:25:47 2010 -0400\r
372 \r
373     [project] Rename dev_ext variables to dev\r
374     \r
375     Just cosmetic.  I am trying to hide the details of\r
376     Windows DEVICE_OBJECTs with their DeviceExtension.\r
377 \r
378 commit 30cc5dec4305178d39512d8e6fdb67dd91819fa7\r
379 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
380 Date:   Mon May 17 23:02:32 2010 -0400\r
381 \r
382     [winvblock/driver] Rename driver__dev_ext to device__type\r
383     \r
384     This type will be coming out of the driver module soon.\r
385 \r
386 commit 763dec1e3c74a8095fbb43ec0ebff5acd0660ff5\r
387 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
388 Date:   Mon May 17 20:59:12 2010 -0400\r
389 \r
390     [winvblock/probe] Move disk probe routine into bus\r
391     \r
392     It makes some sense that we can delay our RAM disk probing\r
393     until the bus is actually queried for children.  This means\r
394     that the DriverEntry() returns sooner.\r
395 \r
396 commit 68b99504849b45911ea5ada3ad2c8aa2245c1256\r
397 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
398 Date:   Mon May 17 20:27:37 2010 -0400\r
399 \r
400     [disk] Add missing extern specifier for export\r
401 \r
402 commit e749b9e42922aa04ab246bc53da31c2f3b75b358\r
403 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
404 Date:   Mon May 17 00:12:05 2010 -0400\r
405 \r
406     [build] Re-visit build system and directory structure\r
407     \r
408     Thanks to OSR's ntdev mailing-list and Tim Roberts' response,\r
409     we now have a directory layout with some hierarchical\r
410     organization.  Very nice.\r
411 \r
412 commit 18e2cbd719c6974a5334b7b773e8a28f83fde31b\r
413 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
414 Date:   Sun May 16 17:23:51 2010 -0400\r
415 \r
416     [version] Up version to 0.0.1.7\r
417     \r
418     This version sees a couple of changes:\r
419     \r
420     - AoE has been split off as a separate driver that depends\r
421     on the WinVBlock bus driver.  This removes the bus driver's\r
422     dependency on NDIS.SYS.  You can boot from an AoE disk still,\r
423     but pay attention to the service load order; you want NDIS to\r
424     load first, then your NIC's driver, then WinVBlock, then AoE.\r
425     \r
426     - Geometry detection has been added for file-backed disks, so\r
427     you can hopefully do:\r
428     \r
429       winvblk attach c:\foo.hdd h 0 0 0\r
430     \r
431     and get the right geometry.\r
432     \r
433     - We now always create a root-enumerated bus device.  There's\r
434     no longer a need to add the /WINVBLOCK=BUS=1 option to the\r
435     BOOT.INI or TXTSETUP.SIF files.\r
436 \r
437 commit 908b420c949dc11e0a9318fd7643ee7a5c649227\r
438 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
439 Date:   Sun May 16 17:19:37 2010 -0400\r
440 \r
441     [aoe] Add files to support 64-bit compilation\r
442     \r
443     As in, AMD64/x64...  Not Itanium/IA-64.\r
444 \r
445 commit e1b6cf336cdb93323302fe1afcdae1782a36bfe5\r
446 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
447 Date:   Sun May 16 17:17:45 2010 -0400\r
448 \r
449     [project] Add to git ignore file\r
450     \r
451     Ignore warning, error, log files.  Ignore object\r
452     directories.\r
453 \r
454 commit 5200bee416645443b0ee672263d9bc30fa0ed365\r
455 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
456 Date:   Sun May 16 15:18:38 2010 -0400\r
457 \r
458     [bus/disk,bus/filedisk] Add geometry detection\r
459     \r
460     Now you can specify something like:\r
461     \r
462       winvblk attach c:\foo.hdd h 0 0 0\r
463     \r
464     and geometry detection will be attempted when the first\r
465     sector of the disk is accessed.  We use some of the logic\r
466     from H. Peter Anvin's MEMDISK to look at FAT and MBR\r
467     params.\r
468 \r
469 commit 2549ed2921c3d63e38a609da89acb16101fdd0c9\r
470 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
471 Date:   Mon May 10 23:41:12 2010 -0400\r
472 \r
473     [httpdisk] Apply WinVBlock-as-usual indentation\r
474 \r
475 commit c108b940d666d462e0cbb30356fbe25f63ee1f36\r
476 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
477 Date:   Mon May 10 23:38:24 2010 -0400\r
478 \r
479     [httpdisk] Dos2Unix source files\r
480 \r
481 commit 1fb699648a5bc32fc40de044ce70fb427cb8eddc\r
482 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
483 Date:   Mon May 10 23:32:34 2010 -0400\r
484 \r
485     [httpdisk] Support compilation under DDK 6001.18001\r
486     \r
487     A couple of changes so that HTTPDisk and its mounting\r
488     utility compile under the Windows Driver Development Kit\r
489     version 6001.18001, which is what I've been using for\r
490     WinVBlock.\r
491 \r
492 commit 6d26bad9697bd83101172cbb525d26ddb40a905c\r
493 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
494 Date:   Mon May 10 22:54:49 2010 -0400\r
495 \r
496     [httpdisk] Initial population into WinVBlock repository\r
497     \r
498     The extremely nice work of Bo Brantén found at:\r
499     \r
500     http://www.acc.umu.se/~bosse/\r
501     \r
502     includes HTTPDisk, a read-only HTTP SAN driver, of sorts.\r
503     \r
504     He has very kindly provided permission for its incorporation\r
505     into WinVBlock.  It will be developed to be a "feature\r
506     driver", just as AoE is a "feature driver".\r
507     \r
508     Please note that HTTPDisk is GPLv2 or any later version.\r
509 \r
510 commit 1037e1e1bf67392404c63f535ab22dc267499025\r
511 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
512 Date:   Mon May 10 22:05:58 2010 -0400\r
513 \r
514     [project] Split AoE off, part 3\r
515     \r
516     At last, the unfortunately monolithic AoE module can be\r
517     separated from the bus, RAM disk and file-backed disk\r
518     code.  This is the final part of the estimated 3 commits.\r
519     \r
520     Now that AoE is its own driver, but dependent on WinVBlock,\r
521     we have to consider the service load order in a booted-from\r
522     scenario.\r
523     \r
524     I've re-ordered HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\\r
525     Control\ServiceGroupOrder\ : List : REG_MULTI_SZ as follows:\r
526     \r
527     ...\r
528     System Bus Extender\r
529     * NDIS Wrapper\r
530     * NDIS\r
531     SCSI miniport\r
532     ...\r
533     \r
534     Instead of:\r
535     \r
536     ...\r
537     System Bus Extender\r
538     SCSI miniport\r
539     ...\r
540     Streams Drivers\r
541     * NDIS Wrapper\r
542     COM Infrastructure\r
543     ...\r
544     PNP_TDI\r
545     * NDIS\r
546     TDI\r
547     ...\r
548     \r
549     And I use the following Group values for the two drivers:\r
550     \r
551     ...\Services\WinVBlock : Group : REG_SZ : SCSI miniport\r
552     ...\Services\AoE : Group : REG_SZ : SCSI Class\r
553     \r
554     And of course as usual, you will want your NIC driver set\r
555     to boot-start.  Loading should thus be ordered as follows:\r
556     \r
557     NDIS\r
558     NIC driver\r
559     WinVBlock\r
560     AoE\r
561 \r
562 commit 0e3582a09583afc01260f7d1ddaf3ee6d22050d1\r
563 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
564 Date:   Mon May 10 21:40:43 2010 -0400\r
565 \r
566     [project] Split AoE off, part 2\r
567     \r
568     At last, the unfortunately monolithic AoE module can be\r
569     separated from the bus, RAM disk and file-backed disk\r
570     code.  This is part 2 of an estimated 3 commits.  Do not\r
571     expect AoE to work until the third commit.\r
572 \r
573 commit 3df7614b527e16a04b54907812c8aca7344bb42d\r
574 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
575 Date:   Mon May 10 21:33:11 2010 -0400\r
576 \r
577     [project] Split AoE off, part 1\r
578     \r
579     At last, the unfortunately monolithic AoE module can be\r
580     separated from the bus, RAM disk and file-backed disk\r
581     code.  This is part 1 of an estimated 3 commits.  Do not\r
582     expect AoE to work until the third commit.\r
583 \r
584 commit 171f46360ac507ad261c21006c8ab3af5fa5a0f9\r
585 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
586 Date:   Mon May 10 20:13:00 2010 -0400\r
587 \r
588     [debug] Export xDbgPrint\r
589     \r
590     Because AoE (and every other module) uses it.\r
591 \r
592 commit 7726ae5bc2d49c992ebd2ade36cd51efb100bd34\r
593 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
594 Date:   Mon May 10 20:09:34 2010 -0400\r
595 \r
596     [driver] Export Driver_CompletePendingIrp\r
597     \r
598     Because AoE uses it. *sigh*  I'm in a hurry to finish this\r
599     split so that AoE can be its own driver.\r
600 \r
601 commit 5b532480e2edb02e237242bd044e0bb62e78c5a6\r
602 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
603 Date:   Mon May 10 15:26:16 2010 -0400\r
604 \r
605     [disk] Export disk device operations\r
606     \r
607     Because AoE uses them.\r
608 \r
609 commit 785957d74fae19dedea8ac37debe383246906f1a\r
610 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
611 Date:   Mon May 10 15:17:52 2010 -0400\r
612 \r
613     [aoe] Implement a disk close routine\r
614     \r
615     To avoid referencing the disk__default_close() function in\r
616     the disk module.\r
617 \r
618 commit 4209907fabccc3e26e7146671f4cf428949fcb42\r
619 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
620 Date:   Mon May 10 15:11:24 2010 -0400\r
621 \r
622     [driver] Export Error function\r
623     \r
624     Because AoE uses it.\r
625 \r
626 commit 281a67e2a8e75c825aa110982b1592f198e3b850\r
627 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
628 Date:   Mon May 10 15:02:58 2010 -0400\r
629 \r
630     [bus,aoe,irp] AoE mini IRP handling in AoE module\r
631     \r
632     The bus module pretty well needs to expose the bus device to\r
633     other drivers so that they can register their mini IRP\r
634     handling tables with it.  bus__dev() now yields the FDO.\r
635     \r
636     The un-register function was mis-named in the IRP module.\r
637     \r
638     We are now registering the AoE IOCTL handling twice, but\r
639     this is not a big deal.  When AoE is finally split off,\r
640     the bus module will no longer register anything AoE-related.\r
641 \r
642 commit 356ee317a0a8c9eb0e85fe1edffe9a9853643b99\r
643 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
644 Date:   Mon May 10 14:13:57 2010 -0400\r
645 \r
646     [project] Change get_XXX_ptr to preprocessor macro\r
647     \r
648     I don't think the inline specifier was working anyway.\r
649 \r
650 commit 7feecadb08d7f09fb745ac1b68090ef3656db8e6\r
651 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
652 Date:   Mon May 10 13:57:18 2010 -0400\r
653 \r
654     [bus] bus__add_child only uses the single bus\r
655     \r
656     The bus__add_child() function has been modified to simply\r
657     use the only bus device we allow, rather than taking an\r
658     argument.  Also, we invalidate the bus relations instead\r
659     of the caller.\r
660 \r
661 commit dc26e3d56f44ae23c8f9d1523b7d9ce9cc853a87\r
662 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
663 Date:   Mon May 10 13:18:01 2010 -0400\r
664 \r
665     [registry,aoe] Move AoE Registry setup into AoE module\r
666     \r
667     AoE needs to register its protocol with NDIS and also does\r
668     some Registry manipulation.  This logic has been moved from\r
669     the Registry module into the AoE module (which is getting\r
670     quite monolithic now).  This is still towards splitting AoE\r
671     into its own driver.\r
672 \r
673 commit 819355c4ba81c161345489c7c8568e32155a5f2f\r
674 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
675 Date:   Mon May 10 12:40:32 2010 -0400\r
676 \r
677     [registry] Change Registry_NoteOsLoadOptions function\r
678     \r
679     Renamed to registry__note_os_load_opts().  Now takes an\r
680     argument instead of storing directly to a global in the\r
681     driver module.\r
682     \r
683     We also free this from the driver module at driver unload\r
684     time, as well.\r
685 \r
686 commit 5ffbd67823df15e624c55790e8f5744b6b11832f\r
687 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
688 Date:   Mon May 10 12:12:53 2010 -0400\r
689 \r
690     [registry] Export handy functions by Michael Brown\r
691     \r
692     AoE will want to do some Registry manipulation once it has\r
693     been split from WinVBlock, so we might as well export some\r
694     functions it (or other future drivers) could make use of.\r
695 \r
696 commit b05c54be05c1c881d9ae482db41a26780c414230\r
697 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
698 Date:   Mon May 10 11:54:06 2010 -0400\r
699 \r
700     [aoe] Do not truncate fractional end cylinder\r
701     \r
702     Ran into problems with AoE to a disk image with geometry\r
703     constrained to QEmu's expectations.  We used to truncate\r
704     a fractional end cylinder for the disk, but this has been\r
705     changed with the hopes that most disk consumers will use\r
706     LBA.\r
707     \r
708     We should really address the FIXME and use geometry from\r
709     the MBR.\r
710 \r
711 commit 481bdb089027a722eac1f514bbb5c75ea3a7bf15\r
712 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
713 Date:   Sun May 9 18:39:36 2010 -0400\r
714 \r
715     [project] Match Entry messages with Exit messages\r
716     \r
717     Simply output messages when functions return via the\r
718     "usual" or expected path, so we can track entry and exit.\r
719 \r
720 commit 0a40d1be143310c2dce11d05f1598457b175267f\r
721 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
722 Date:   Sat May 8 16:12:55 2010 -0400\r
723 \r
724     [aoe_ioctl] Merge header into AoE header\r
725     \r
726     Also moved a single extern function declaration needed\r
727     by the AoE protocol module right into the protocol\r
728     module itself, thus avoiding complications for the\r
729     user-space "mount" utility having to know about the DDK.\r
730 \r
731 commit 13ed736ced14a4cd339b491a29d8cbb8452aa23c\r
732 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
733 Date:   Sat May 8 15:59:59 2010 -0400\r
734 \r
735     [aoe] Make AoE_Start private\r
736     \r
737     Renamed to start().  Only the AoE module uses it.\r
738 \r
739 commit 6701e254d2fc02c1c7850a728f6b9b0ead3843ce\r
740 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
741 Date:   Sat May 8 15:56:28 2010 -0400\r
742 \r
743     [aoe] Rename AoE_ResetProbe to aoe__reset_probe\r
744     \r
745     Used by the AoE protocol module, too.\r
746 \r
747 commit b1a3cc9a7fb8de3fce5c6e4887455ac413a926e8\r
748 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
749 Date:   Sat May 8 15:54:19 2010 -0400\r
750 \r
751     [aoe] Rename AoE_Reply to aoe__reply\r
752     \r
753     Used by the AoE protocol module, too.\r
754 \r
755 commit 4525af4ffb801aee5895f480b204cebed2fb78ce\r
756 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
757 Date:   Sat May 8 15:50:12 2010 -0400\r
758 \r
759     [aoe] Make AoE disk operations private\r
760     \r
761     An amendment to commit\r
762     818ebaaf58fcfbad04c7760ca4db1edfb4d146f1\r
763 \r
764 commit 02d2e86e21d7ae3dbf078a18bd511cf30bdf0860\r
765 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
766 Date:   Sat May 8 15:46:51 2010 -0400\r
767 \r
768     [aoe] Make aoe__target_list private\r
769     \r
770     An amendment to commit\r
771     793f876c1aa0dddff0d9b2f402ed105e0f7a89b5\r
772 \r
773 commit 818ebaaf58fcfbad04c7760ca4db1edfb4d146f1\r
774 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
775 Date:   Sat May 8 15:42:59 2010 -0400\r
776 \r
777     [aoe] Make AoE disk operations private\r
778 \r
779 commit 71d0b1eb484ca68804541148f9ca39e34cf1650d\r
780 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
781 Date:   Sat May 8 15:40:35 2010 -0400\r
782 \r
783     [aoe] Rename aoe__get_disk_ptr to get_aoe_disk_ptr\r
784     \r
785     Since it's entirely within the AoE module now.\r
786 \r
787 commit 793f876c1aa0dddff0d9b2f402ed105e0f7a89b5\r
788 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
789 Date:   Sat May 8 15:38:39 2010 -0400\r
790 \r
791     [aoe] Make aoe__target_list private\r
792     \r
793     Only AoE functions need to know the AoE target_list\r
794     type now.\r
795 \r
796 commit 2e84efe9b7747ee0b4f184d5cc575a699936b116\r
797 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
798 Date:   Sat May 8 15:30:42 2010 -0400\r
799 \r
800     [aoe] Make AoE search_state private\r
801     \r
802     Only AoE functions need to know about the search_state\r
803     enumeration now.\r
804 \r
805 commit 30d11d5b622caa47a6d57470e6964032ed20f611\r
806 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
807 Date:   Sat May 8 15:27:51 2010 -0400\r
808 \r
809     [aoe] Make aoe__disk_type private\r
810     \r
811     Only AoE functions need to know about this type now.\r
812 \r
813 commit 5110aec0e75bdce0d0f3b3a2100a9ad64cf9244e\r
814 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
815 Date:   Sat May 8 13:53:05 2010 -0400\r
816 \r
817     [bus/bus_dev_ctl,bus/aoe] Move AoE IOCTLs into AoE module\r
818     \r
819     Still in the process of splitting AoE off, we move AoE-\r
820     specific IOCTL handling into the AoE module.\r
821 \r
822 commit bb0cc2d79dfbfbc8ac90f8815653f3e867819ec1\r
823 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
824 Date:   Sat May 8 12:35:20 2010 -0400\r
825 \r
826     [bus/disk] Fix uninitialized mini IRP handling table chain\r
827     \r
828     Before registering a mini IRP handling table with a device,\r
829     we should really make sure the chain of tables is empty.\r
830     Oops.\r
831 \r
832 commit 4ce836b52af4afb5bc39e82f108f9e46ba8bd76e\r
833 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
834 Date:   Fri May 7 20:37:19 2010 -0400\r
835 \r
836     [mount,aoe] Move AoE IOCTLs into their own file\r
837     \r
838     Starting to split AoE from the rest.\r
839 \r
840 commit 0f090193e606d935165ae8ba4428a52d15939948\r
841 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
842 Date:   Fri May 7 17:33:43 2010 -0400\r
843 \r
844     [irp] Use mini IRP handling chain\r
845     \r
846     When an IRP dispatch comes in, we special-case a power\r
847     IRP, or pass the IRP along to irp__process().\r
848     \r
849     irp__process() will walk each table of IRP handlings\r
850     in the device's chain of registered tables, looking for\r
851     an IRP handling that matches the IRP major and minor\r
852     codes.  This is roughly similar to the PDO stacked\r
853     beneath multiple FDOs approach, but just a little less\r
854     complex and with perhaps less memory and management\r
855     overhead.\r
856     \r
857     A feature (provided by a driver) can register handled\r
858     IRP types on a device, then WinVBlock should use that\r
859     feature's functions to process the IRP.  I hope WinVBlock\r
860     can call functions in another driver in this way. :)\r
861     \r
862     So now when a bus or disk device is created, the default\r
863     driver IRP handling table is registered as well as the\r
864     device-specific handling table (bus or disk).  We used\r
865     to manually build a large table with these tables copied\r
866     into it, but not anymore.\r
867 \r
868 commit c6ca22ad43a0db18c807bb5dcc5e48ccffff3fd2\r
869 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
870 Date:   Fri May 7 10:53:21 2010 -0400\r
871 \r
872     [irp] Move mini IRP handling into its own module\r
873     \r
874     We introduce bus/irp.c for the miniature IRP handling logic.\r
875     \r
876     We also introduce code for an IRP handling table chain.  The\r
877     goal of such a chain is to allow IRP handlings to be\r
878     dynamically added and removed for a device.  An example use\r
879     would be for the AoE system to register IOCTL handling with\r
880     the WinVBlock bus device, so that the bus processes the\r
881     IOCTLs.  If the AoE system is unloaded, it should be able to\r
882     un-register the handling of these IOCTLs.\r
883     \r
884     Currently, the IRP handling table chain is not used, but\r
885     this will change in a future commit.\r
886 \r
887 commit 5e000d42647f5afb63a2c74061f7199d157c164e\r
888 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
889 Date:   Thu May 6 19:54:07 2010 -0400\r
890 \r
891     [headers] Introduce generic pointer type\r
892     \r
893     We include winvblock__any_ptr to represent a void *.\r
894 \r
895 commit 2c9dc5bd3ec4e100fe0e583758500e1982e9170f\r
896 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
897 Date:   Wed May 5 19:15:10 2010 -0400\r
898 \r
899     [bus/bus] Remove STDCALL for argless func\r
900     \r
901     Bus_Stop() takes no arguments, so it doesn't need the\r
902     STDCALL specifier.\r
903 \r
904 commit ba1d96bbb2254e9f9a9ff5ee59172e1fff167c98\r
905 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
906 Date:   Wed May 5 19:12:34 2010 -0400\r
907 \r
908     [bus/driver] Remove reinitialization declaration\r
909     \r
910     Should have been removed in commit\r
911     3afe1fddd34f0e0187dca6bb569d9f8353aab07a\r
912 \r
913 commit 32a89e9dd90e58b98b48a124d6e3760ec706440c\r
914 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
915 Date:   Tue May 4 18:43:14 2010 -0400\r
916 \r
917     [build] Build bus driver to provide exports\r
918     \r
919     Using the helpful information at this web page[1], we\r
920     now compile to provide a .LIB so that other drivers\r
921     can link against it and use functions that we might\r
922     choose to export.\r
923     \r
924     Export functions by beginning with winvblock__lib_func\r
925     in the declaration.\r
926     \r
927     [1] http://www.wd-3.com/archive/KernelDlls.htm\r
928         Tim Roberts\r
929 \r
930 commit 3f338d2b7296009a8fd5714837da328b4f15bb29\r
931 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
932 Date:   Mon May 3 14:57:31 2010 -0400\r
933 \r
934     [bus/driver] Always create the root-enumerated bus dev\r
935     \r
936     Instead of requiring the user to specify a BOOT.INI/TXTSETUP.SIF\r
937     /WINVBLOCK=BUS=1 option, we will simply always provide a root-\r
938     enumerated bus device.  It's probably less complicated that way.\r
939 \r
940 commit 4e3103dec6b4e6d753f92bca5c9831fb2040c608\r
941 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
942 Date:   Fri Apr 30 19:10:11 2010 -0400\r
943 \r
944     [devel] Update wxDev-C++ project file\r
945     \r
946     Should reflect directory & file shuffling\r
947 \r
948 commit a9408bd55b72c40de677ddc4ee9c3471178b5ccd\r
949 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
950 Date:   Fri Apr 30 19:03:07 2010 -0400\r
951 \r
952     [build] Move majority of code into bus subdir\r
953     \r
954     The plan is to split AoE functionality off into its own driver,\r
955     to avoid WinVBlock's dependency on NDIS for those users who\r
956     do not require or desire the AoE feature.\r
957     \r
958     Similarly, future features with dependencies can have their own\r
959     directories and their own .SYS drivers.\r
960     \r
961     For now, all driver code including AoE has been moved into bus/,\r
962     but AoE will eventually come out of there.\r
963     \r
964     A strategy needs to be determined to allow for the single bus\r
965     device to accept features in a modular fashion, and to route\r
966     applicable feature-wide control signals to each feature's driver.\r
967     \r
968     For example, the WinVBlock bus (an "HDD controller" of sorts) can\r
969     support certain virtual disk types natively.  When an AoE driver\r
970     starts, it could look for the bus and register itself as a\r
971     feature if the bus is found.  Thenceforth, a user-land utility\r
972     could request an AoE-attach of the WinVBlock bus, who could forward\r
973     that request on to the AoE driver.\r
974 \r
975 commit c07f380b83d69643dbb01a9c68a32dd49e175511\r
976 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
977 Date:   Fri Apr 30 17:26:12 2010 -0400\r
978 \r
979     [build] Move userland utility into subdir\r
980 \r
981 commit bdd8c75f0dbe3bcda2fff3a3fad548bad77030e0\r
982 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
983 Date:   Fri Apr 30 17:16:05 2010 -0400\r
984 \r
985     [build] Move driver loader into subdir\r
986 \r
987 commit 5143a3b691e6e11c559d32635efddf3002572f38\r
988 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
989 Date:   Fri Apr 30 16:15:48 2010 -0400\r
990 \r
991     [build] Move PXE NBP sources into nbp subdir\r
992     \r
993     It's time to re-organize the project's directory structure.\r
994 \r
995 commit 41d3e4ac4ae6099115d64f57c4b325a788d977bd\r
996 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
997 Date:   Thu Jan 14 14:19:19 2010 -0500\r
998 \r
999     [version] Up version to 0.0.1.6\r
1000 \r
1001 commit 240f2467779a9774acc8327d65c7c06bf44fc82b\r
1002 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1003 Date:   Wed Jan 13 16:28:17 2010 -0500\r
1004 \r
1005     [driver] Remove old testing comments\r
1006     \r
1007     Some code for outputting text to the initial Windows\r
1008     kernel-mode boot screen was sitting inside a couple of\r
1009     comment blocks.  Now that code is no longer there to\r
1010     potentially confuse anyone.\r
1011 \r
1012 commit 745d6949d914a8ef98b7b3ebe8a3e4f141092dc1\r
1013 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1014 Date:   Wed Jan 13 15:19:22 2010 -0500\r
1015 \r
1016     [filedisk] Close file handle\r
1017     \r
1018     When a file-backed disk is removed, we close the file handle.\r
1019 \r
1020 commit 6abd22eca85a6898e51ed9706c06e701ea932dc7\r
1021 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1022 Date:   Wed Jan 13 14:46:09 2010 -0500\r
1023 \r
1024     [bus_dev_ctl] Do not set boot drive on AoE mount\r
1025 \r
1026 commit eaf1aa72ff36f49a197bab7e209b251bb342d938\r
1027 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1028 Date:   Wed Jan 13 14:19:31 2010 -0500\r
1029 \r
1030     [bus,disk] Call close routine upon device deletion\r
1031     \r
1032     For cleanup purposes.\r
1033 \r
1034 commit c4712f19d264f6aae9736cf3665df51a2ad94f21\r
1035 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1036 Date:   Wed Jan 13 14:00:05 2010 -0500\r
1037 \r
1038     [driver,disk] Add close routine\r
1039     \r
1040     So that devices can be closed/detached/removed/deleted/whatever.\r
1041     \r
1042     Implement a simple redirection in the disk module to redirect\r
1043     a device close call to a disk close call.\r
1044 \r
1045 commit 035b71dde7cc4122a246a627765b8c5cf69c08b1\r
1046 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1047 Date:   Wed Jan 13 13:55:23 2010 -0500\r
1048 \r
1049     [disk] Add close routine\r
1050     \r
1051     A dummy default close routine for disks is implemented.\r
1052 \r
1053 commit 20822a178d78a90dbec1f7918c1a7b578d8e1d94\r
1054 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1055 Date:   Wed Jan 13 12:27:35 2010 -0500\r
1056 \r
1057     [aoe] Set media type for AoE SAN\r
1058     \r
1059     Now that disk__create_pdo() uses the media type as an\r
1060     index, we need to set this member beforehand.\r
1061 \r
1062 commit 964f7b81b9d353b61208b9cd79547729aa87c984\r
1063 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1064 Date:   Fri Jan 8 16:57:01 2010 -0500\r
1065 \r
1066     [general] Quick header inclusion audit\r
1067 \r
1068 commit e6bc51f526c47369033fb665c201f73a2469f776\r
1069 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1070 Date:   Fri Jan 8 16:40:42 2010 -0500\r
1071 \r
1072     [aoe] Move target list cleanup code out of bus module\r
1073 \r
1074 commit 795b51387c351c503a541a090c41f5a918fbaba5\r
1075 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1076 Date:   Fri Jan 8 16:28:50 2010 -0500\r
1077 \r
1078     [bus] Remove unused forward declaration for disk\r
1079 \r
1080 commit 5177c3ead3da4812e1703392625c497c0eb681eb\r
1081 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1082 Date:   Fri Jan 8 16:27:42 2010 -0500\r
1083 \r
1084     [aoe] Move target list spin-lock into AoE module\r
1085 \r
1086 commit cc2666558691cc50470fa1bf8376dfaa2acebddc\r
1087 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1088 Date:   Fri Jan 8 16:18:24 2010 -0500\r
1089 \r
1090     [aoe] Move target list type and global into AoE module\r
1091     \r
1092     Out of the bus module.\r
1093 \r
1094 commit 47e732f85b3bd4be5c2071b22d2d8a7b00aace7f\r
1095 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1096 Date:   Fri Jan 8 15:51:14 2010 -0500\r
1097 \r
1098     [bus] Remove Bus_Start routine\r
1099     \r
1100     The AoE target-list was initialized in this routine, and\r
1101     that was it.  This initialization has thus been moved to\r
1102     AoE_Start().\r
1103 \r
1104 commit db2c227cf35ea31ed9b54201494e1bc6d4bd666b\r
1105 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1106 Date:   Fri Jan 8 15:46:22 2010 -0500\r
1107 \r
1108     [bus] Remove Bus_AddTarget declaration from header\r
1109     \r
1110     Forgot to remve this when Bus_AddTarget() was moved into the\r
1111     AoE module as add_target().\r
1112 \r
1113 commit bb6e0e95c751a09bf53f97027723be52ed4f475f\r
1114 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1115 Date:   Fri Jan 8 15:37:06 2010 -0500\r
1116 \r
1117     [bus] Remove unused Bus_CleanupTargetList function\r
1118 \r
1119 commit 79eb0801f6d48848331cd93f9e3b03e4d651795a\r
1120 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1121 Date:   Fri Jan 8 15:33:49 2010 -0500\r
1122 \r
1123     [aoe] Move Bus_AddTarget into AoE module\r
1124     \r
1125     And rename it to add_target().  The AoE module was its\r
1126     only consumer.\r
1127 \r
1128 commit 4e0f77a57ca705dcc8b19fbd362eb810965b813c\r
1129 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1130 Date:   Fri Jan 8 15:03:32 2010 -0500\r
1131 \r
1132     [bus] Bus_AddChild renamed to bus__add_child\r
1133 \r
1134 commit 90179740c6e999571b0df1bf3ed9147948413423\r
1135 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1136 Date:   Fri Jan 8 14:43:32 2010 -0500\r
1137 \r
1138     [bus] Remove disk details from Bus_AddChild\r
1139     \r
1140     A fair bit of shuffling.  Devices extensions now have\r
1141     a device operations member which is a struct of function\r
1142     pointers; one for device creation and one for device\r
1143     initialization.  This is akin to the disk operations\r
1144     structure found as a member of a disk.\r
1145     \r
1146     Bus_AddChild() is now simply passed a device extension\r
1147     pointer, which points at device extension details to add\r
1148     to the bus.  It will call the particular PDO creation\r
1149     routine provided by whoever populated the device\r
1150     extension.  That routine will return a PDO that will be\r
1151     attached to the bus.  Bus_AddChild() is also still\r
1152     passed a pointer to the bus device object to which the\r
1153     child belongs.\r
1154     \r
1155     The only PDO creation routine at this time is obviously\r
1156     disk__create_pdo(), since we are a virtual SCSI driver!\r
1157     The reason for this bit of abstraction is in case anyone\r
1158     finds the code handy some day as a reference for the\r
1159     bus-and-child model.  This code is not at that stage yet.\r
1160 \r
1161 commit 1e907947181e5631d775b2c77927193c3bbefecd\r
1162 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1163 Date:   Fri Jan 8 12:27:16 2010 -0500\r
1164 \r
1165     [bus,disk] Move the disk counter into the disk module\r
1166     \r
1167     Seems like a good place for it.\r
1168 \r
1169 commit 7dcf22cfe22521161673533040a1dde522450b62\r
1170 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1171 Date:   Fri Jan 8 12:21:37 2010 -0500\r
1172 \r
1173     [driver] Introduce device initialization routine\r
1174     \r
1175     Any device on the bus could have an initialization routine, so\r
1176     the device extension now has an init function pointer member.\r
1177     \r
1178     disk__create_pdo() will setup the device extension for disks\r
1179     to redirect to the init function pointer member of the disk's\r
1180     operations structure.\r
1181 \r
1182 commit 05eb4dee2835966e5a753a019d5e38785a93ef38\r
1183 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1184 Date:   Fri Jan 8 10:55:56 2010 -0500\r
1185 \r
1186     [driver] Move next_sibling_ptr out of disk module\r
1187     \r
1188     It's a property of a device, not really of a disk.\r
1189 \r
1190 commit 12761466f712be2b2210b711fe00599d8828fe1f\r
1191 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1192 Date:   Fri Jan 8 10:41:00 2010 -0500\r
1193 \r
1194     [driver] Move Parent member out of disk module\r
1195     \r
1196     It's a property of a device, not really of a disk.\r
1197 \r
1198 commit 2be42b348fc7d8e46e260b8fb5318088c2634b6c\r
1199 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1200 Date:   Fri Jan 8 10:19:52 2010 -0500\r
1201 \r
1202     [driver,aoe] Move AOEPROTOCOLVER define\r
1203 \r
1204 commit 9dda7435f29ea5f5b28027db860488d55f35ed08\r
1205 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1206 Date:   Fri Jan 8 10:18:16 2010 -0500\r
1207 \r
1208     [driver,protocol] Move AOEPROTOCOLID define\r
1209 \r
1210 commit 09c540d3a9c614ed62a36fc4ac20a16bf17a943d\r
1211 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1212 Date:   Fri Jan 8 10:14:55 2010 -0500\r
1213 \r
1214     [disk] Remove AoE comment\r
1215 \r
1216 commit 844f90acffe7b509e5b0afcb1fc4bb782e366e78\r
1217 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1218 Date:   Fri Jan 8 10:08:27 2010 -0500\r
1219 \r
1220     [bus,disk] Move some disk device logic\r
1221     \r
1222     Trying to move disk device creation logic out of the bus\r
1223     module and into the disk module.  We now have a disk PDO\r
1224     creation function, disk__create_pdo().\r
1225     \r
1226     Not all disk logic has been moved out yet.\r
1227 \r
1228 commit e7b1e9db500cfb4aba35122371a290429b67ad84\r
1229 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1230 Date:   Fri Jan 8 01:00:58 2010 -0500\r
1231 \r
1232     [bus] Remove unused boolean argument for Bus_AddChild\r
1233 \r
1234 commit 3dfee60896a091857ca353150259cc0527a16eb2\r
1235 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1236 Date:   Fri Jan 8 00:50:51 2010 -0500\r
1237 \r
1238     [driver] Remove unused device extension member\r
1239 \r
1240 commit 91e0ab598df7c76b9ff2aac303d9904d6743ceed\r
1241 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1242 Date:   Thu Jan 7 19:40:10 2010 -0500\r
1243 \r
1244     [driver] Make a global pointer to the driver object\r
1245 \r
1246 commit 53597c30a6c6df108f3b2fb666755b961f5e3a0d\r
1247 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1248 Date:   Thu Jan 7 17:59:10 2010 -0500\r
1249 \r
1250     [mount] Prefix object manager global namespace for filedisks\r
1251     \r
1252     ZwCreateFile() wants "\??\X:\PATH\FILE" so winvblk.exe will\r
1253     throw "\??\" onto the beginning of the path that they\r
1254     specify, on their behalf.\r
1255 \r
1256 commit 6155e5fc1a96ddf236482cbcad9e58cc7ae9f552\r
1257 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1258 Date:   Thu Jan 7 09:13:48 2010 -0500\r
1259 \r
1260     [version] Up version to 0.0.1.5\r
1261 \r
1262 commit 148187b431b208df669ea30875ba430f60f80bab\r
1263 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1264 Date:   Thu Jan 7 03:08:17 2010 -0500\r
1265 \r
1266     [driver] Fix use of un-initialized pointer\r
1267     \r
1268     Big oops.  For auto-generation of a bus device, we\r
1269     use IoReportDetectedDevice().  It expects the final\r
1270     parameter as a PDO pointer.  If it's non-NULL, it is\r
1271     assumed that we already have a PDO, which we don't.\r
1272 \r
1273 commit 4e72aadc8dea6dbb3eb760437db43d54c7fa3e95\r
1274 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1275 Date:   Thu Jan 7 02:29:40 2010 -0500\r
1276 \r
1277     [disk,filedisk,ramdisk] Move compat_ids into disk module\r
1278     \r
1279     Having the same array in the filedisk and ramdisk modules\r
1280     was redundant.  It's universal and so belongs in disk.c.\r
1281 \r
1282 commit e157cb6e49cf48c0bdfa1e1d8ad6a6af6b9e8537\r
1283 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1284 Date:   Thu Jan 7 02:24:24 2010 -0500\r
1285 \r
1286     [ramdisk] Use table for hardware and compatible IDs\r
1287     \r
1288     Instead of the multiple and redundant ternary operations.\r
1289 \r
1290 commit fb1f0d1ea9b1926bdce804cf682e5ff3cef9bb83\r
1291 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1292 Date:   Thu Jan 7 02:17:18 2010 -0500\r
1293 \r
1294     [filedisk] Use table for hardware and compatible IDs\r
1295     \r
1296     Instead of the multiple and redundant ternary operations.\r
1297 \r
1298 commit 161ba255348361206fb966da7301efef0b8d1a78\r
1299 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1300 Date:   Thu Jan 7 02:00:20 2010 -0500\r
1301 \r
1302     [disk_scsi] Removable-detection using table\r
1303     \r
1304     The disk's media type is used as an index into a\r
1305     MEDIA_TYPE table for whether the disk is removable or not.\r
1306 \r
1307 commit 47117c3b216b3af66c8d18c3d16e7c2f729860e2\r
1308 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1309 Date:   Thu Jan 7 01:52:33 2010 -0500\r
1310 \r
1311     [disk] Removable-detection using table\r
1312     \r
1313     The disk's media type is used as an index into a boolean\r
1314     table for whether the disk is removable or not.\r
1315     \r
1316     Move the table from the last commit into the disk module,\r
1317     since disk_pnp had similar logic to disk_dev_ctl.\r
1318 \r
1319 commit 99c9fa4548f538df73dd5ae5f12c1a6d400a73d9\r
1320 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1321 Date:   Thu Jan 7 01:41:04 2010 -0500\r
1322 \r
1323     [disk_dev_ctl] Removable-detection using table\r
1324     \r
1325     The disk's media type is used as an index into a boolean\r
1326     table for whether the disk is removable or not.\r
1327 \r
1328 commit 467e79c462f4aab1ef553fa12235e8c53b4d0f96\r
1329 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1330 Date:   Thu Jan 7 01:28:07 2010 -0500\r
1331 \r
1332     [bus] Remove double-ternary operation\r
1333     \r
1334     Use a table instead, with a disk's media type as index.\r
1335 \r
1336 commit 799f9c8ee546c2ba688b53f14d0f8e2bb55cfbb0\r
1337 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1338 Date:   Wed Jan 6 12:12:16 2010 -0500\r
1339 \r
1340     [build] Update hardware installation file\r
1341     \r
1342     Updated the .INF with a more accurate date as well as\r
1343     proper detection for an auto-generated bus device.\r
1344 \r
1345 commit 3e54153e5a56cafe44cf112f37b19dccfa2cb4ae\r
1346 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1347 Date:   Wed Jan 6 05:02:24 2010 -0500\r
1348 \r
1349     [cosmetics] Replace string literal instances with a macro\r
1350     \r
1351     In our project-common header we now define C preprocessor\r
1352     macros which expand to the string "WinVBlock" in normal\r
1353     and wide versions.  Appropriate replacements committed.\r
1354 \r
1355 commit 5198b07dd1b578736013d131d7f772f6c8314c5b\r
1356 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1357 Date:   Wed Jan 6 03:41:13 2010 -0500\r
1358 \r
1359     [version] Up version to 0.0.1.4\r
1360 \r
1361 commit 1885de6e4ca331e40dc31e20ff003b2046701ed7\r
1362 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1363 Date:   Wed Jan 6 03:37:51 2010 -0500\r
1364 \r
1365     [filedisk] Improve device IDs\r
1366     \r
1367     The bus, device type, and location are better now:\r
1368     \r
1369     WinVBlock\FileOpticalDisc\...Hash_FFFFFFFF\r
1370     WinVBlock\FileFloppyDisk\...Hash_FFFFFFFF\r
1371     WinVBlock\FileHardDisk\...Hash_FFFFFFFF\r
1372     \r
1373     where FFFFFFFF is the cheap "hash" for the disk.\r
1374 \r
1375 commit b59fb2ffa55845730a067ff209d28df6883fea83\r
1376 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1377 Date:   Wed Jan 6 03:20:26 2010 -0500\r
1378 \r
1379     [aoe] Improve device IDs\r
1380     \r
1381     The bus, device type, and location are better now:\r
1382     \r
1383     WinVBlock\AoEHardDisk\...AoE_at_Shelf_F.Slot_T\r
1384     \r
1385     where F and T are the shelF and sloT numbers, resp.\r
1386 \r
1387 commit a4fa1e81be532e83ecd65a66edfb6980eb74835f\r
1388 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1389 Date:   Wed Jan 6 02:52:39 2010 -0500\r
1390 \r
1391     [ramdisk] Improve device IDs\r
1392     \r
1393     The bus, device type, and location are better now:\r
1394     \r
1395     WinVBlock\RAMOpticalDisc\...RAM_at_FFFFFFFF\r
1396     WinVBlock\RAMFloppyDisk\...RAM_at_FFFFFFFF\r
1397     WinVBlock\RAMHardDisk\...RAM_at_FFFFFFFF\r
1398     \r
1399     TODO: A static string table that disks point to\r
1400 \r
1401 commit 3afe1fddd34f0e0187dca6bb569d9f8353aab07a\r
1402 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1403 Date:   Wed Jan 6 01:56:27 2010 -0500\r
1404 \r
1405     [driver,bus] Remove re-initialization routine\r
1406     \r
1407     MAJOR LEARNING: A boot driver re-initialization routine is\r
1408     too late to create the bus device and its disks!  Why?\r
1409     If the boot volume was not installed during a previous\r
1410     session, that means it's a new volume.  Never-before-seen\r
1411     volumes are only registered as possible boot volumes at a\r
1412     point before boot driver re-initialization routines are\r
1413     called.\r
1414     \r
1415     As such, our previous re-initialization routine was _only_\r
1416     useful if the expected boot volume on one of the RAM disks\r
1417     was somehow already installed...  It so happens that in\r
1418     testing, I often modify the RAM disk image by using it\r
1419     with QEmu as the virtual machine's hard disk drive.  Thus,\r
1420     the volume gets installed at that time and persists.  The\r
1421     Blue Screen of Death that folks were having was pretty\r
1422     mysterious.  The symptoms involved the Session Manager\r
1423     crashing at a post-0x0000007B time, which was unexpected.\r
1424     \r
1425     The crash was due to an uninstalled volume being installed\r
1426     too late, as mentioned.  So now probe__disks() happens\r
1427     at bus creation time, and bus creation time happens either\r
1428     during DriverEntry (if the user requests) or when the PnP\r
1429     Manager re-establishes a previously installed bus device.\r
1430     Both of these times occur before a boot driver\r
1431     re-initialization routine occurs.\r
1432     \r
1433     An easy way to reproduce the issue was to change the MBR\r
1434     signature on a disk already installed, thus making it a\r
1435     "brand new" disk, with "brand new" volumes on it.\r
1436     \r
1437     This also explains why the Recovery Console will only boot\r
1438     from a WinVBlock RAM disk with the /WINVBLOCK=BUS=1 switch.\r
1439     This switch caused early bus creation _and_ early disk\r
1440     probing.\r
1441     \r
1442     EXTRA NOTE: Including the previous commit in CHANGES.log,\r
1443     which was missed.\r
1444 \r
1445 commit a6740504ce2ddcb4573e4e4fa2ff7b7d46276c51\r
1446 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1447 Date:   Wed Jan 6 01:24:23 2010 -0500\r
1448 \r
1449     [debug] Add DEBUGIRPS to file for convenience\r
1450     \r
1451     This means that two changes to debug.h will enable verbose\r
1452     debugging, whenever needed.  Purely for convenience's sake.\r
1453 \r
1454 commit 6123f08169b1caa48813dbe35b1d389851da5734\r
1455 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1456 Date:   Sun Jan 3 06:45:37 2010 -0500\r
1457 \r
1458     [disk] Minor cosmetic touch-ups\r
1459 \r
1460 commit d7a8f1f5bda8d638f00a9d5669717ffc05c0ad42\r
1461 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1462 Date:   Sun Jan 3 06:27:39 2010 -0500\r
1463 \r
1464     [disk] Abstract disk PnP ID response routine as a disk operation\r
1465     \r
1466     Each disk class implements their own PnP ID response routine,\r
1467     so we formalize this as a disk operation.\r
1468 \r
1469 commit 7fa951e723d20f39636d66ff14a7df0cb1b6b995\r
1470 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1471 Date:   Sun Jan 3 05:53:25 2010 -0500\r
1472 \r
1473     [disk] Abstract initialization routine as a disk operation\r
1474     \r
1475     Each disk class implements their own initialization routine,\r
1476     so we formalize this as a disk operation.\r
1477 \r
1478 commit 657c511c5fc28be7c6601488b68533a9f13e6ca3\r
1479 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1480 Date:   Sun Jan 3 05:16:25 2010 -0500\r
1481 \r
1482     [disk] Abstract max_xfer_len routine as a disk operation\r
1483     \r
1484     Each disk class implements their own max_xfer_len routine,\r
1485     so we formalize this as a disk operation.\r
1486 \r
1487 commit 4788c1152d94fb811b6688a9ee9c70cca44ad504\r
1488 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1489 Date:   Sun Jan 3 04:25:34 2010 -0500\r
1490 \r
1491     [disk] Abstract I/O routine as a disk operation\r
1492     \r
1493     Each disk class implements their own I/O routine, so we\r
1494     formalize this as a disk operation.\r
1495 \r
1496 commit b4ed63d13354eb63ecb25fac805c2cf5ef45fcf5\r
1497 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1498 Date:   Sun Jan 3 03:37:48 2010 -0500\r
1499 \r
1500     [disk,aoe] Move search state from disk into AoE\r
1501     \r
1502     disk__search_state renamed to search_state.\r
1503     All enum members renamed.\r
1504 \r
1505 commit c507dedb5429b75f8aad6cf773dd4bc50c294fe8\r
1506 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1507 Date:   Sun Jan 3 03:08:59 2010 -0500\r
1508 \r
1509     [disk] DISK_DISKTYPE renamed to disk__media\r
1510     \r
1511     FloppyDisk renamed to disk__media_floppy\r
1512     HardDisk renamed to disk__media_hard\r
1513     OpticalDisc renamed to disk__media_optical\r
1514 \r
1515 commit 27e0c774d2f2858b3ac5b329788437b6eac34b81\r
1516 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1517 Date:   Sat Jan 2 21:41:46 2010 -0500\r
1518 \r
1519     [aoe] AOE_DISKSEARCH renamed to disk_search\r
1520 \r
1521 commit adc10763d66df16277564d1fa7082df726bb3d37\r
1522 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1523 Date:   Sat Jan 2 21:16:35 2010 -0500\r
1524 \r
1525     [aoe] AOE_TAG renamed to work_tag\r
1526 \r
1527 commit 927377c58235c7b0fae6fa903518aa9655defc7c\r
1528 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1529 Date:   Sat Jan 2 20:36:07 2010 -0500\r
1530 \r
1531     [aoe] AOE_REQUEST renamed to io_req\r
1532 \r
1533 commit ac1ef556e281c04e4f205cb1470dede340abfa95\r
1534 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1535 Date:   Sat Jan 2 20:23:22 2010 -0500\r
1536 \r
1537     [aoe] AOE_PACKET renamed to packet\r
1538 \r
1539 commit 3c92067e83a074f53759f68735ba3c5ac26335d7\r
1540 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1541 Date:   Sat Jan 2 19:56:07 2010 -0500\r
1542 \r
1543     [aoe] AOE_TAGTYPE renamed to tag_type\r
1544     \r
1545     AoE_RequestType renamed to tag_type_io\r
1546     AoE_SearchDriveType renamed to tag_type_search_drive\r
1547 \r
1548 commit f750eb04802d25a9f4f25d34c92ac0397f93980d\r
1549 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1550 Date:   Sat Jan 2 19:35:01 2010 -0500\r
1551 \r
1552     [aoe] AoE_Thread renamed to thread\r
1553 \r
1554 commit 378db7ce8fdbcaeccbb3d1f3f162245d7c991195\r
1555 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1556 Date:   Sat Jan 2 19:15:05 2010 -0500\r
1557 \r
1558     [cosmetics] VOID renamed to void\r
1559     \r
1560     And PVOID changed to 'void *'.  Why not?\r
1561 \r
1562 commit 82c0572209016fe97fe51cf89f31c24c270da7a3\r
1563 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1564 Date:   Sat Jan 2 17:52:12 2010 -0500\r
1565 \r
1566     [filedisk] Initial file-backed disk support\r
1567     \r
1568     Fairly messy, this commit introduces file-backed disk support.\r
1569     \r
1570     The aoe.exe user-mode program has been renamed to winvblk.exe.\r
1571     It now accepts two new commands:\r
1572     \r
1573     winvblk attach \??\<path> <type> <cyls> <heads> <sectors>\r
1574     winvblk detach <disk num>\r
1575     \r
1576     <path> is the file path to a disk image.  For now, you should prefix\r
1577     "\??\" in front of the path.\r
1578     \r
1579     <type> is one of 'f', 'c', 'h' for floppy, optical disc, hard disk,\r
1580     respectively.\r
1581     \r
1582     <cyls> is the cylinder count.  Common values might be:\r
1583     65535: for an optical disc drive\r
1584        80: for a floppy disk\r
1585     \r
1586     <heads> is the count of heads.  Common values might be:\r
1587     255: for an optical disc drive\r
1588       2: for a floppy disk\r
1589     \r
1590     <sectors> is the count of sectors per track, not to be confused\r
1591     with the total sector count for the media.  Common values might be:\r
1592     15: for an optical disc drive\r
1593     18: for a 1.44 MB floppy disk\r
1594     36: for a 2.88 MB floppy disk\r
1595     \r
1596     These geometry parameters are not optional at this time.\r
1597     \r
1598     <disk num> is the internal disk number.  Unfortunately the only\r
1599     way to currently find this out is with 'winvblk show', which yields\r
1600     some garbage since it is interpreting all disks as AoE SANs.  This\r
1601     is obviously a FIXME item.\r
1602     \r
1603     GRUB4DOS and MEMDISK modules also got a slight fix to initialize\r
1604     disk parameters with all zeroes.\r
1605     \r
1606     The file-backed disk logic currently leaks HANDLES, since it does\r
1607     not close them upon a 'detach'.  This is obviously a FIXME item.\r
1608     \r
1609     To prevent duplicate PDOs, every file-backed disk has a 32-bit\r
1610     "hash" which is really just a very stupid attempt at a unique ID\r
1611     based on LBADiskSize and the file path to the disk image.  Heh.\r
1612     \r
1613     Some examples for attaching file-backed disks:\r
1614     \r
1615     winvblk attach \??\d:\RamXP.HDD h 52 128 63\r
1616     winvblk attach \??\d:\some.iso c 65535 255 15\r
1617     winvblk attach \??\d:\floppy144.vfd f 80 2 18\r
1618 \r
1619 commit c9a4d42ff431d71cd339aaa58be5a2d4ba9e0588\r
1620 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1621 Date:   Tue Dec 29 02:07:49 2009 -0500\r
1622 \r
1623     [filedisk] Introduce skeleton for file-backed disk class\r
1624     \r
1625     A rip-off of the RAM disk module, minus RAM disk functionality.\r
1626     This skeleton will be developed into a file-backed disk class.\r
1627     Currently implemented is a probing routine which will create a\r
1628     single 10 MB dummy HDD which silently discards writes and reads\r
1629     as all zeroes.\r
1630 \r
1631 commit 2669130893f1f61ae79a069bbd621bcbbf911808\r
1632 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1633 Date:   Mon Dec 28 22:28:35 2009 -0500\r
1634 \r
1635     [cosmetics] Run indent twice due to indent bug\r
1636     \r
1637     You might or might not have noticed that 'indent' will take\r
1638     a file and change its mind about how to indent it.  Take that\r
1639     resulting file and run 'indent' again and it will put the file\r
1640     back the way it was.  Thus there is an "even" format and an\r
1641     "odd" format.  This is silly.  As a work-around, the indent.sh\r
1642     and indent_add.sh scripts will run 'indent' twice on a file.\r
1643     \r
1644     Yeesh.\r
1645 \r
1646 commit c5eaee18347fe4bf55ea17b4d37c59ca7f955d91\r
1647 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1648 Date:   Mon Dec 28 22:22:38 2009 -0500\r
1649 \r
1650     [probe] Split aBFT probing out into the AoE module\r
1651     \r
1652     Probing of the aBFT for a boot-time AoE disk is now a\r
1653     routine in the AoE module (aoe.c).\r
1654     \r
1655     Testing an AoE SAN-boot from gPXE yielded pleasant results.\r
1656 \r
1657 commit 6bb7f2b5a8208d4b5a6efcc9c14f8b057f0ad1c9\r
1658 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1659 Date:   Mon Dec 28 21:58:36 2009 -0500\r
1660 \r
1661     [probe] Split GRUB4DOS out into its own module\r
1662     \r
1663     GRUB4DOS specifics are now in their own module.\r
1664     \r
1665     Probing of the aBFT for a boot-time AoE disk should\r
1666     undergo the same treatment.\r
1667 \r
1668 commit 91dcb15f46e362f84cfecbbf30783dfafe95534a\r
1669 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1670 Date:   Mon Dec 28 21:38:36 2009 -0500\r
1671 \r
1672     [probe] Split MEMDISK out into its own module\r
1673     \r
1674     MEMDISK specifics are now in their own module.\r
1675     \r
1676     GRUB4DOS RAM disks should undergo the same treatment.\r
1677 \r
1678 commit 043daf101d9baee2381bdac2375ec15929dd625f\r
1679 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1680 Date:   Mon Dec 28 18:38:08 2009 -0500\r
1681 \r
1682     [major] Turn disk structure inside out\r
1683     \r
1684     ...Kind of.  There are currently five places where devices are\r
1685     created:\r
1686     \r
1687     1. Bus created in bus.c\r
1688     2. AoE disk created in bus_dev_ctl.c\r
1689     3. AoE disk created in probe.c\r
1690     4. GRUB4DOS disk created in probe.c\r
1691     5. MEMDISK created in probe.c\r
1692     \r
1693     Each of these places is currently responsible for populating the\r
1694     details of the device class structures.  They will now inform\r
1695     the Bus_AddChild() routine of how much device extension space\r
1696     they require.\r
1697     \r
1698     For example, a RAM disk contains a disk and a disk contains the\r
1699     device-common structure.  Thus Bus_AddChild() needs to allocate\r
1700     (via IoCreateDevice()) enough device extension space for all of\r
1701     this.\r
1702     \r
1703     Previously, the disk structure contained a union of the different\r
1704     disk classes.  I prefer the model where a child class can have\r
1705     knowledge of a parent class, but not vice versa.\r
1706     \r
1707     This change involved a lot of shuffling, as well as the need to\r
1708     fix a bug which probably should have been fixed separately;\r
1709     see the DeviceTextLocationInformation handling in disk_pnp.c.\r
1710 \r
1711 commit e82adc0efaeafdf6e9c15ec08e7e7db9fef897cd\r
1712 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1713 Date:   Mon Dec 28 04:48:28 2009 -0500\r
1714 \r
1715     [disk_pnp] Split ID query logic for disk class\r
1716     \r
1717     The PnP ID query now calls disk__query_id() which in turn\r
1718     calls the disk class-specific function to return the right\r
1719     ID(s) in the passed wide-char string buffer.\r
1720     \r
1721     There should no longer be any checks anywhere for the\r
1722     IsRamdisk boolean member of the disk structure.  Now we\r
1723     are free to remove that member and re-arrange how we use the\r
1724     device extension space, rather than having a union for our\r
1725     difference disk classes.\r
1726 \r
1727 commit 9368fb48b5e2064a471725f23b0816c474fa741e\r
1728 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1729 Date:   Mon Dec 28 03:19:53 2009 -0500\r
1730 \r
1731     [disk_dev_ctl] Split MaximumTransferLength logic for disk class\r
1732     \r
1733     The MaximumTransferLength we return for an IOCTL_STORAGE_QUERY_PROPERTY\r
1734     is now returned from a disk class-specific function: The max_xfer_len\r
1735     function pointer member of the disk type structure.\r
1736     \r
1737     AoE and RAM disk modules now implement their own max_xfer_len() func.\r
1738 \r
1739 commit 694552819802c2630d2f2f0fe12634bef7ab265d\r
1740 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1741 Date:   Mon Dec 28 02:36:37 2009 -0500\r
1742 \r
1743     [disk] Split disk IO into AoE and RAM disk modules\r
1744     \r
1745     The disk structure now includes a function pointer member to\r
1746     represent the appropriate I/O routine for the different disk\r
1747     classes.  These classes are currently AoE and RAM, but could\r
1748     include others in the future, such as file-backed disks.\r
1749     \r
1750     disk__io() is a function which calls the appropriate routine\r
1751     for a given disk (via the device extension space for now).\r
1752     \r
1753     The AoE module no longer has any knowledge of RAM disks.  Yay.\r
1754 \r
1755 commit 52b637363104e038ddc72551ce54ba6b0f2489f5\r
1756 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1757 Date:   Sun Dec 27 17:27:30 2009 -0500\r
1758 \r
1759     [disk] aoedisk module becomes disk module\r
1760     \r
1761     aoedisk.c was hardly AoE-specific anymore, so it is renamed\r
1762     to disk.c.  Details from aoedisk.h and ramdisk.h have been\r
1763     temporarily merged into disk.h.  These details should be moved\r
1764     out at some point, perhaps.\r
1765 \r
1766 commit 8053cfc88458ff4298d2f8fad57609c3b382c711\r
1767 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1768 Date:   Sun Dec 27 15:27:34 2009 -0500\r
1769 \r
1770     [aoe] Implement fast_copy for RAM disks\r
1771     \r
1772     According to karyonix (developer of FiraDisk), the Windows\r
1773     compiler intrinsics __movsd and __movsq are faster than\r
1774     RtlCopyMemory() for RAM disk I/O.  We implement fast_copy()\r
1775     in aoe.c to accomplish this.\r
1776     \r
1777     Of course, once AoE and RAM disks have been properly split,\r
1778     this should end up with just the RAM disks.\r
1779 \r
1780 commit 2b62f3796fe30b03d63436c85d9256c8298ef9ac\r
1781 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1782 Date:   Thu Dec 24 17:52:24 2009 -0500\r
1783 \r
1784     [driver] OsLoadOptions support needed for Recovery Console\r
1785     \r
1786     We now make a note of the OsLoadOptions during registry checking\r
1787     and implement get_opt() in the driver module for finding a\r
1788     specific WinVBlock option.  WinVBlock options should appear in\r
1789     BOOT.INI or TXTSETUP.SIF as a switch like this:\r
1790     \r
1791     /WINVBLOCK=option1=value1,option2=value2\r
1792     \r
1793     Recovery Console requires our disks to be discovered before the\r
1794     driver re-initialization routine.  Using the above feature, we\r
1795     will now execute the re-initialization routine early if the user\r
1796     requests, since this routine will create a bus object.  The user\r
1797     requests this with an OsLoadOption like this:\r
1798     \r
1799     /WINVBLOCK=BUS=1\r
1800 \r
1801 commit c874b072859250c816a72aa5ed5d6eb16661d073\r
1802 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1803 Date:   Tue Dec 22 10:52:04 2009 -0500\r
1804 \r
1805     [doc] Update ReadMe.txt and changelog.txt\r
1806     \r
1807     Quick note in ReadMe.txt to introduce WinVBlock.\r
1808     \r
1809     Changes are now tracked in CHANGES.log.  changelog.txt from WinAoE\r
1810     says as much.  CHANGES.log is simply the git commit log.\r
1811 \r
1812 commit a8a50995e33657e06d23e07115d5c9bc69e4dd41\r
1813 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1814 Date:   Tue Dec 22 10:34:55 2009 -0500\r
1815 \r
1816     [driver] Use pre-installed bus if possible\r
1817     \r
1818     To ensure that we function, we've historically forced the creation\r
1819     of the bus device.  The documentation suggests that users use the\r
1820     Add New Hardware Wizard to add the driver.  This resulted in two bus\r
1821     devices: The proper one known as a SCSI adapter, and a boot-up\r
1822     unknown device which was annoying.  For PE environments where our\r
1823     driver is very simply injected through TXTSETUP.SIF entries, the\r
1824     boot-up unknown device bus will still be generated.\r
1825 \r
1826 commit 06190549903b808c26dd973e694c6cb3687af8ff\r
1827 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1828 Date:   Mon Dec 21 10:48:39 2009 -0500\r
1829 \r
1830     [fixups] Clean compilation\r
1831     \r
1832     Notably:\r
1833     \r
1834     Commit f92581dcd0d3e80f5a4b26959a3a5621d8378c83 should not have\r
1835     changed ULONG_PTR to winvblock__uint32_ptr.  ULONG_PTR is not\r
1836     an unsigned long *, but an unsigned long which pointers are\r
1837     sometimes cast to and from.\r
1838     \r
1839     ExAllocatePool() is deprecated and so has been wrapped with a\r
1840     macro which instead calls ExAllocatePoolWithTag() with the tag\r
1841     'klBV' ("VBlk").\r
1842     \r
1843     NdisQueryBuffer -> NdisQueryBufferSafe\r
1844     NdisBufferVirtualAddress -> MmGetSystemAddressForMdlSafe\r
1845     \r
1846     Some cast fix-ups.\r
1847     \r
1848     Cleanly compiled under a variety of build environments:\r
1849     2000 x86\r
1850     XP x86\r
1851     2003 x86\r
1852     2003 x64/IA-64\r
1853     Vista x86\r
1854 \r
1855 commit 22540b2f23508a3dad32cb935c11ca2643df1ebd\r
1856 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1857 Date:   Mon Dec 21 03:47:01 2009 -0500\r
1858 \r
1859     [disk] Fix booting Windows 2003 PE .ISO\r
1860     \r
1861     Several changes made hither and thither to pay closer attention\r
1862     to fixed versus removable media responses to queries.  Windows\r
1863     Server 2003 appeared to be trying to probe for a FAT filesystem\r
1864     on the emulated ODD.  That's fixed now.\r
1865     \r
1866     Also fixed MEMDISK probing to correctly set the heads, cylinders\r
1867     and sectors-per-track.\r
1868     \r
1869     A lot of the responses we provide to queries could be simpler\r
1870     copies of structures built at device creation time.  These could\r
1871     go into the device extension space.  Another ToDo.\r
1872 \r
1873 commit eb1a53bbdc153fad5464d515864030aff5e3ee24\r
1874 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1875 Date:   Sun Dec 20 02:19:26 2009 -0500\r
1876 \r
1877     [aoedisk,disk] Split aoedisk into dev_ctl, pnp, scsi portions\r
1878     \r
1879     Major code shuffling.  The mini IRP stack handling is used in\r
1880     aoedisk now.  The handling has been split into disk_dev_ctl,\r
1881     disk_pnp and disk_scsi modules.\r
1882     \r
1883     "aoedisk" should eventually simply become "disk", where RAM\r
1884     disk versus AoE disk specifics are moved into appropriate\r
1885     modules.\r
1886 \r
1887 commit 4029e9c48e87aef0b1346b97dc45c821da6d71e4\r
1888 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1889 Date:   Wed Dec 16 10:39:10 2009 -0500\r
1890 \r
1891     [bus] Move remaining IRP handling to mini stack\r
1892     \r
1893     In this module only.  Things are getting cleaner.\r
1894 \r
1895 commit 32a95716eaf7264c16186383534a0884b84aecde\r
1896 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1897 Date:   Wed Dec 16 10:21:42 2009 -0500\r
1898 \r
1899     [bus] Remove Bus_DispatchDeviceControl from header\r
1900     \r
1901     Forgot to remove this extern declaration earlier.\r
1902 \r
1903 commit f92581dcd0d3e80f5a4b26959a3a5621d8378c83\r
1904 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1905 Date:   Wed Dec 16 09:28:20 2009 -0500\r
1906 \r
1907     [headers] ULONG renamed to winvblock__uint32\r
1908     \r
1909     Includes PULONG and ULONG_PTR renamed to winvblock__uint32_ptr.\r
1910 \r
1911 commit ea9184821df8d03d08b4061fd00b995d72775492\r
1912 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1913 Date:   Wed Dec 16 00:54:10 2009 -0500\r
1914 \r
1915     [bus_dev_ctl] Move bus device control IRP handling into bus_dev_ctl\r
1916     \r
1917     Put in own file.  Should eventually mimic the mini IRP handling.\r
1918 \r
1919 commit b0acc0bca47ce711036865e71c70751c1b909f67\r
1920 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1921 Date:   Tue Dec 15 23:12:50 2009 -0500\r
1922 \r
1923     [bus_pnp] Move bus PnP IRP handling into bus_pnp\r
1924     \r
1925     Changed functions to use mini IRP handling.  Put in own file.\r
1926 \r
1927 commit a4273d6327afefd4e5d0fce27d87be1fb5f7d78a\r
1928 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1929 Date:   Tue Dec 15 20:51:45 2009 -0500\r
1930 \r
1931     [bus] Initial test for mini IRP handling\r
1932     \r
1933     Implemented handling_table[] in the bus module.  The bus module has\r
1934     also been updated to copy this table into a new bus device.\r
1935     \r
1936     The picture of a bus device's mini IRP handling stack now goes:\r
1937     IRP_MJ_PNP && IRP_MN_QUERY_DEVICE_RELATIONS ? bus foo()\r
1938     IRP_MJ_PNP && IRP_MN_START_DEVICE ? bus pnp_start_dev()\r
1939     IRP_MJ_CREATE ? driver create_close()\r
1940     IRP_MJ_CLOSE ? driver create_close()\r
1941     driver old_strategy()\r
1942     driver all_irps()\r
1943     \r
1944     Where lower handlings are only pursued if\r
1945     the completion boolean is not set.\r
1946     \r
1947     A simple foo() which catches IRP_MJ_PNP with\r
1948     IRP_MN_QUERY_DEVICE_RELATIONS just for testing.\r
1949     foo() should be removed soon.\r
1950     \r
1951     IRP_MJ_PNP, IRP_MN_START_DEVICE moved to pnp_start_dev()\r
1952 \r
1953 commit 18a8cef7c3294ff6b403bae607ac2385e536a4ac\r
1954 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1955 Date:   Tue Dec 15 19:45:22 2009 -0500\r
1956 \r
1957     [driver] First test with new mini IRP handling strategy\r
1958     \r
1959     The driver IRP dispatch routine now scans through the DeviceObject's\r
1960     DeviceExtension's irp_handler_stack(_ptr) looking for IRP major and\r
1961     minor function matches.  An appropriate handler function is called,\r
1962     if available.\r
1963     \r
1964     The IRP_MJ_CREATE and IRP_MJ_CLOSE have their own create_close()\r
1965     IRP handler function now, for example.\r
1966     \r
1967     Now each of the case labels in the IRP function-handling switch\r
1968     statements in all modules can be re-worked to use this system.\r
1969     This means less indentation!\r
1970     \r
1971     Also of note is a change to the bus module to copy the default\r
1972     mini-stack of IRP handlings from the driver module to any new device.\r
1973 \r
1974 commit 398a9b8022e79eae713b036153f18c76faab2099\r
1975 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1976 Date:   Tue Dec 15 15:17:45 2009 -0500\r
1977 \r
1978     [irp,driver] Add mini IRP handling stacks\r
1979     \r
1980     An irp__handling structure esentially matches an irp__handler\r
1981     function to the IRP major and minor functions it is intended to\r
1982     handle.  Booleans are used for the case where such a handler handles\r
1983     multiple major and/or minor combinations.\r
1984     \r
1985     In order to facilitate knowledge of when an Irp has been fully\r
1986     handled for the driver module, we implement a boolean completion\r
1987     status parameter.  If an irp__handler wants to prevent the Irp\r
1988     from further processing by the driver Irp dispatch routine, it\r
1989     should set the completion status to TRUE.\r
1990     \r
1991     This miniature IRP handling strategy is sitting doing nothing until\r
1992     routines are ported to use it.\r
1993 \r
1994 commit 829543cf8efd7ef18f99f6a6ef4cfb08246dd661\r
1995 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
1996 Date:   Mon Dec 14 23:21:24 2009 -0500\r
1997 \r
1998     [cosmetics] Remove STDCALL where unneeded\r
1999     \r
2000     STDCALL should not affect 'foo func(void)' functions.  (Functions\r
2001     taking no parameters.)\r
2002 \r
2003 commit aa5b3fc1bef2f8839ab0bc645d4d4c29c11b6e25\r
2004 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2005 Date:   Mon Dec 14 22:46:16 2009 -0500\r
2006 \r
2007     [cosmetics] Fix tab-size\r
2008     \r
2009     All this time the tab-size was set to two spaces.  Wrong.\r
2010     It made things in git look like...  Well, gitweb, that is, looked\r
2011     pretty poor.  Better now, I hope.\r
2012 \r
2013 commit acce82f6d985da6d14cbb2f4e003ba49e30c4b8f\r
2014 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2015 Date:   Mon Dec 14 20:34:34 2009 -0500\r
2016 \r
2017     [bus] Fix AoE unmounting\r
2018     \r
2019     When we invalidate our bus relations, we are queried for them.  Each\r
2020     of the PDOs that were previously known are dereferenced, so we need to\r
2021     balance that by referencing each PDO we report before the report is\r
2022     complete.\r
2023     \r
2024     This is the fix for item 10 in V.'s readme.txt (I believe).\r
2025 \r
2026 commit d34ab875f773f5684555af064f3a61356ad66c9f\r
2027 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2028 Date:   Mon Dec 14 15:18:40 2009 -0500\r
2029 \r
2030     [protocol] Fix AoE startup\r
2031     \r
2032     Use NDIS 4.0.  Check if we registered the protocol properly.\r
2033     Startup AoE upon IOCTL_AOE_SCAN.\r
2034 \r
2035 commit 9fb8a14632ffc0239b590f83deeed3ac1998ed06\r
2036 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2037 Date:   Mon Dec 14 13:38:36 2009 -0500\r
2038 \r
2039     [driver] Remove bus and disk details from the device extension\r
2040     \r
2041     The eventual goal is for each module to know what it needs to know\r
2042     and to delegate module-specific tasks to the appropriate modules.\r
2043     \r
2044     In working towards this goal, the device extension in driver.h no\r
2045     longer contains space for bus or disk structures.  This involved\r
2046     major access changes.  Where modules used to access the bus/disk\r
2047     members of the device extension, they now use helper functions to\r
2048     get a pointer to these structures.\r
2049     \r
2050     The helper functions get_bus_ptr() and get_disk_ptr() are in the bus\r
2051     module.  This isn't really right, since the bus module should\r
2052     eventually know nothing about disks.  It's a temporary measure.\r
2053     \r
2054     The bus module has always been responsible for adding child devices\r
2055     as well as the bus device itself.  When adding a device, the bus\r
2056     module now allocates enough device extension space to include the\r
2057     driver-common structure as well as the appropriate bus- or disk-\r
2058     specific structure.\r
2059     \r
2060     It might be good if other modules inform\r
2061     the bus module of how much device extension space they need in the\r
2062     future.  This commit does not introduce such logic, but it's an\r
2063     idea for later.\r
2064 \r
2065 commit cd5508e2186210eee82fb8bdef4b4120555ed609\r
2066 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2067 Date:   Sun Dec 13 23:49:57 2009 -0500\r
2068 \r
2069     [bus] Do not include bus.h from driver.h\r
2070     \r
2071     bus__bus renamed to bus__type.  bus.h is included by modules\r
2072     before they include driver.h, since driver.h needs to know the size\r
2073     of bus__type.\r
2074 \r
2075 commit 03018f65d2c3bbbb6925a6063201bd73cb3df3bc\r
2076 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2077 Date:   Sun Dec 13 23:38:29 2009 -0500\r
2078 \r
2079     [disk] Do not include disk.h from driver.h\r
2080     \r
2081     DISK_DISK renamed to disk__type.  disk.h is included by modules\r
2082     before they include driver.h, since driver.h needs to know the size\r
2083     of disk__type.\r
2084 \r
2085 commit 8042c6774e7c0e1a444bda0f339b4186af27e3b6\r
2086 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2087 Date:   Sun Dec 13 22:45:31 2009 -0500\r
2088 \r
2089     [irp] Introduce IRP header\r
2090     \r
2091     Moved some IRP specifics out of driver.h.\r
2092     \r
2093     We have an unfortunate circular dependency where several modules\r
2094     need to know the driver__dev_ext structure from driver.h, but that\r
2095     structure also includes structures from irp.h, bus.h, disk.h.  These\r
2096     things need to be shuffled around some more until they're prettier.\r
2097 \r
2098 commit 3d805e4dfcda8b37dc654bcd8a455eb8fa494dcd\r
2099 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2100 Date:   Sun Dec 13 18:44:34 2009 -0500\r
2101 \r
2102     [probe] Minor functions renames\r
2103     \r
2104     Probe_GetSafeHook() renamed to get_safe_hook()\r
2105     Probe_MemDisk_mBFT() renamed to check_mbft()\r
2106 \r
2107 commit 90ae51f139be65a3c96305a9921846a98a7080dd\r
2108 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2109 Date:   Sun Dec 13 18:34:04 2009 -0500\r
2110 \r
2111     [bus,driver,probe] Re-work probe invocation and bus FDO creation\r
2112     \r
2113     Probe routines had a bus FDO parameters.  We only allow for one such\r
2114     global FDO, so this was silly.  The global bus FDO is renamed from\r
2115     Bus_Globals_Self to bus__fdo.  Probe routines simply use it.\r
2116     \r
2117     The driver code was calling each of the probe routines by name.  Now\r
2118     we call a single routine probe__disks() which itself can call each\r
2119     probe routine by name.\r
2120     \r
2121     The bus FDO creation has been modified to work directly with the\r
2122     bus__fdo global instead of the previous middle-man behaviour.\r
2123     Hopefully this does not lead to any race conditions.\r
2124 \r
2125 commit f58636c5745a93ccfcd6e440f65245da87254b6e\r
2126 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2127 Date:   Sun Dec 13 01:37:12 2009 -0500\r
2128 \r
2129     [bus] BUS_BUS renamed to bus__bus\r
2130 \r
2131 commit 2074c5ef64ea242865d53a7a87b5523cdb6e1b47\r
2132 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2133 Date:   Sun Dec 13 01:12:41 2009 -0500\r
2134 \r
2135     [cosmetics] indent_add.sh shell script added\r
2136     \r
2137     This script indents and does 'git add' to specified files.\r
2138 \r
2139 commit 8e74a5afe014742b2f1292713986a49c95416a02\r
2140 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2141 Date:   Sun Dec 13 01:05:26 2009 -0500\r
2142 \r
2143     [probe] Probe_NoInitialize renamed to no_init\r
2144 \r
2145 commit 992e7f40ecb7246d0f00f24306267c43322ba708\r
2146 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2147 Date:   Sun Dec 13 01:01:05 2009 -0500\r
2148 \r
2149     [driver] DRIVER_DEVICEEXTENSION renamed to driver__dev_ext\r
2150 \r
2151 commit 36fd4e324b09f4abbc6cbc6966ae0580a60a217b\r
2152 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2153 Date:   Sun Dec 13 00:38:01 2009 -0500\r
2154 \r
2155     [driver] SEARCHSTATE renamed to driver__search_state\r
2156 \r
2157 commit cc8f98505cd06dd24127685e1f356598334aa6df\r
2158 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2159 Date:   Sun Dec 13 00:18:54 2009 -0500\r
2160 \r
2161     [driver] STATE renamed to driver__state\r
2162 \r
2163 commit 813cb575a88838d9b0a2c3f21f877bbf6dbd61be\r
2164 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2165 Date:   Sun Dec 13 00:03:31 2009 -0500\r
2166 \r
2167     [headers] Add winvblock__def_enum convenience macro\r
2168     \r
2169     Not 100% convenient in avoiding writing the same name twice, but\r
2170     this macro will set up typedefs for an enumerated type that begins\r
2171     with an underscore.\r
2172 \r
2173 commit 137dd083dc01eb5c4613cac454f035d7ffaba0e0\r
2174 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2175 Date:   Fri Dec 11 16:57:05 2009 -0500\r
2176 \r
2177     [headers] BOOLEAN renamed to winvblock__bool\r
2178 \r
2179 commit 909fe8861acdb60a2bbe1b768f811852e22f7232\r
2180 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2181 Date:   Fri Dec 11 16:47:41 2009 -0500\r
2182 \r
2183     [headers] Type definition convenience macro\r
2184 \r
2185 commit d75646fcd37c6beceada9b9418c9620520a4bba2\r
2186 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2187 Date:   Fri Dec 11 16:32:21 2009 -0500\r
2188 \r
2189     [headers] UINT renamed to winvblock__uint32\r
2190     \r
2191     Not including pxe.asm and pxe.c subdirectories.\r
2192 \r
2193 commit aa247bac79faa0cbca73ef09afdd2732a72fc807\r
2194 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2195 Date:   Fri Dec 11 16:21:04 2009 -0500\r
2196 \r
2197     [headers] USHORT and UINT16 renamed to winvblock__uint16\r
2198     \r
2199     Not including pxe.asm and pxe.c subdirectories.\r
2200 \r
2201 commit e6d249b55c73f08f5b93c1f15dbd9e4457ab15de\r
2202 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2203 Date:   Fri Dec 11 16:09:33 2009 -0500\r
2204 \r
2205     [headers] UINT32 renamed to winvblock__uint32\r
2206     \r
2207     Not including pxe.asm and pxe.c subdirectories.\r
2208 \r
2209 commit f19decc39e6cde47721dccd66ab8e77fd17f8f0a\r
2210 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2211 Date:   Fri Dec 11 16:04:48 2009 -0500\r
2212 \r
2213     [headers] UINT64 renamed to winvblock__uint64\r
2214 \r
2215 commit 6ae027d2597049809164362082902366310ff1b9\r
2216 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2217 Date:   Fri Dec 11 12:47:45 2009 -0500\r
2218 \r
2219     [headers] UCHAR and UINT8 renamed to winvblock__uint8\r
2220     \r
2221     Not including pxe.asm and pxe.c subdirectories.\r
2222 \r
2223 commit 8b20087898af6f1919d0bc80d3492f431ff2b5f0\r
2224 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2225 Date:   Fri Dec 11 12:06:12 2009 -0500\r
2226 \r
2227     [probe] PROBE_GRUB4DOSDRIVEMAPSLOT renamed to grub4dos_drive_mapping\r
2228 \r
2229 commit 68522ae5389479bacf6fecad527a8ced2577a7cb\r
2230 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2231 Date:   Fri Dec 11 12:01:28 2009 -0500\r
2232 \r
2233     [probe] PROBE_SAFEMBRHOOK renamed to safe_mbr_hook\r
2234 \r
2235 commit 6ab5e9967660c2a0d5cc93252ff260a891f277aa\r
2236 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2237 Date:   Fri Dec 11 11:55:15 2009 -0500\r
2238 \r
2239     [probe] PROBE_ABFT renamed to abft\r
2240 \r
2241 commit b3c95afb6cdf3a70d3892bd1d8a4148479bed8f8\r
2242 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2243 Date:   Fri Dec 11 11:50:19 2009 -0500\r
2244 \r
2245     [probe] PROBE_INT_VECTOR renamed to int_vector\r
2246 \r
2247 commit ba4956aacd29c7a5c63c8ebca52e9a2e7f705cce\r
2248 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2249 Date:   Fri Dec 11 11:45:59 2009 -0500\r
2250 \r
2251     [headers] Introduce winvblock header for common material\r
2252     \r
2253     winvblock.h will help to facilitate code style and abstraction.\r
2254     Currently, it provides a means to define and typedef structures in code.\r
2255 \r
2256 commit bfddbfd379ee4e489bbae577b25384a1af925457\r
2257 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2258 Date:   Fri Dec 11 10:39:18 2009 -0500\r
2259 \r
2260     [project] Ignore wxDev-Cpp layout file\r
2261 \r
2262 commit c7ef5ca173a4cd4b67d261dd1a6e0078047d8deb\r
2263 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2264 Date:   Fri Dec 11 01:13:39 2009 -0500\r
2265 \r
2266     [probe] Fix GRUB4DOS sector-size detection\r
2267     \r
2268     GRUB4DOS was just broken by the recent sector-size detection.  Fixed.\r
2269 \r
2270 commit 53f704ff3d61687483577c3dcc9c522d65c7e29c\r
2271 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2272 Date:   Thu Dec 10 23:31:52 2009 -0500\r
2273 \r
2274     [version] Version is now 0.0.0.7\r
2275 \r
2276 commit c25005e9befa3ee28e5f3185eeab3c4e3d654c14\r
2277 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2278 Date:   Thu Dec 10 23:27:31 2009 -0500\r
2279 \r
2280     [disk] Use the appropriate sector-size\r
2281     \r
2282     ODDs get a sector-size of 2048 bytes.  Others get 512.\r
2283 \r
2284 commit 52ca021bb4699d406e42e86966c5db7ca2a35275\r
2285 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2286 Date:   Thu Dec 10 01:22:15 2009 -0500\r
2287 \r
2288     [aoedisk] Support optical disc emulation\r
2289     \r
2290     We should be able to pick up MEMDISK and GRUB4DOS ODDs now.\r
2291     Floppies are unfortunately detected as removable-storage disks, but\r
2292     not specifically as floppies.\r
2293 \r
2294 commit 0b73f801b5dd3d550f2ac1604b19f0c3e2feb2fb\r
2295 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2296 Date:   Wed Dec 9 18:06:23 2009 -0500\r
2297 \r
2298     [probe] Support multiple GRUB4DOS mappings\r
2299     \r
2300     Walk the "safe hook" chain and for each instance of GRUB4DOS found,\r
2301     check all 8 possible slots for RAM drive mappings.\r
2302 \r
2303 commit eae22a729452f2157c161476dbdfccaaf45edcca\r
2304 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2305 Date:   Wed Dec 9 03:23:38 2009 -0500\r
2306 \r
2307     [aoedisk] Support multiple RAM disk instances\r
2308     \r
2309     Give each RAM disk a PnP devnode name based on its physical address.\r
2310     \r
2311     TODO: Move each disk type's code out of aoedisk.c; A RAM disk is not\r
2312     an AoE disk.\r
2313 \r
2314 commit 8f4fe393425e3db016a44c3eb3753dbfe074ffc6\r
2315 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2316 Date:   Wed Dec 9 02:10:01 2009 -0500\r
2317 \r
2318     [probe] Support MEMDISK mBFT and safe hook\r
2319     \r
2320     The recent mBFT and "safe hook" additions to MEMDISK were added to\r
2321     facilitate OS drivers being able to find and use MEMDISK instances.\r
2322     WinVBlock now supports this.\r
2323     \r
2324     Duplicate PnP devnode names will have to be worked out.\r
2325 \r
2326 commit e35a82dec9d414f37fad82c63a2a49ed4b24792b\r
2327 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2328 Date:   Sun Sep 6 23:27:26 2009 -0400\r
2329 \r
2330     [version] Up version to 0.0.0.2\r
2331 \r
2332 commit 6cac6ca193404385f6db9bc12ae39e75866398c9\r
2333 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2334 Date:   Sun Sep 6 23:25:40 2009 -0400\r
2335 \r
2336     [registry] Added Michael Brown's registry routines from sanbootconf\r
2337     \r
2338     Michael Brown's registry manipulation functions in his "sanbootconf"\r
2339     package for helping MS iSCSI drivers to work with gPXE (especially\r
2340     for Windows XP, where you need a static IP address) are really quite\r
2341     handy.  This patch adds them, and starts to make use of them.\r
2342     \r
2343     Unfortunately, I forgot to release a previous bug-fix for a fairly\r
2344     serious bug, so this commit is functional, but not the end of changes\r
2345     to registry.c.  After upping the version and releasing, changes to\r
2346     registry.c will continue.\r
2347 \r
2348 commit b62596c9cb83c1732e26cc04b3852fc55771f1a7\r
2349 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2350 Date:   Wed Sep 2 18:23:25 2009 -0400\r
2351 \r
2352     [driver] Add check for DriverEntry() re-entry\r
2353     \r
2354     We do not really wish to execute DriverEntry() code more than once.\r
2355 \r
2356 commit 9f874666d3c746d1a09e8374a6b92e6acc4fe18a\r
2357 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2358 Date:   Tue Sep 1 23:58:26 2009 -0400\r
2359 \r
2360     [bus] Bus_Stop() now nullifies global pointer to bus object\r
2361     \r
2362     Even though we are typically about to unload the driver anyway.\r
2363 \r
2364 commit 6b729bd6bdcee65841468ff8b3d86346cf0013f5\r
2365 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2366 Date:   Tue Sep 1 23:22:57 2009 -0400\r
2367 \r
2368     [aoe] Fix BSoD where we stop AoE when not started\r
2369     \r
2370     Added a missing check in AoE_Stop() to only stop if started.\r
2371 \r
2372 commit d9dcd1f82147981306ee99fd0c4a419672ed29ae\r
2373 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2374 Date:   Mon Aug 31 19:40:34 2009 -0400\r
2375 \r
2376     [diskio,probe] Map memory on each I/O request\r
2377     \r
2378     Probing code no longer attempts to map the physical memory for the\r
2379     RAM disk to virtual memory for the driver's access all at once.\r
2380     Instead, each I/O request will map memory, and only for the size of\r
2381     the I/O buffer.\r
2382     \r
2383     Users were running into trouble mapping 1.2 GB images, so I am\r
2384     hopeful that this helps that situation.\r
2385 \r
2386 commit fc04c59d64dea6b819717f1068488cd96d5c8ee2\r
2387 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2388 Date:   Mon Aug 31 19:00:01 2009 -0400\r
2389 \r
2390     [project] Project is now officially forked as WinVBlock\r
2391     \r
2392     Information pertaining to WinAoE is still present in various places.\r
2393 \r
2394 commit 6bd5336986d2849160bae96b4ec5713a4894b7c4\r
2395 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2396 Date:   Thu Aug 27 17:39:42 2009 -0400\r
2397 \r
2398     [grub4dos] Initial GRUB4DOS memory-mapped drive support\r
2399     \r
2400     A little more abstraction, as well as initial support for a single\r
2401     GRUB4DOS memory-mapped disk.\r
2402 \r
2403 commit caa59920704bb4e4def990b8991ae21085c78cd7\r
2404 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2405 Date:   Wed Aug 26 01:01:23 2009 -0400\r
2406 \r
2407     [abstraction] Rework IRP handlers, move boot-disk probing code\r
2408     \r
2409     - Changed my mind about IRP handlers; we use an IRPHandler function\r
2410       type now\r
2411     - We used to probe for a MEMDISK and/or an AoE target (via aBFT)\r
2412       in the bus code; we call these functions in probe.c from\r
2413       DriverEntry() now\r
2414     - driver.c handles device creation and closing now, and passes on\r
2415       any other IRPs to the device's particular Dispatch() function.\r
2416       Currently, there is only a Bus and Disk device type, where Disk\r
2417       should really be abstracted some more to split AoE from MEMDISK\r
2418     \r
2419     All of the 'include's are looking really messy right now, but we\r
2420     _should_ be on our way to being cleaner, where modules should not\r
2421     need to know so much about other modules.\r
2422 \r
2423 commit 6ecd190a09a6969dc46a032cc7cfb7fcf7a8cf1b\r
2424 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2425 Date:   Mon Aug 24 19:18:51 2009 -0400\r
2426 \r
2427     [abstraction] Several things -- see commit message\r
2428     \r
2429     - Renamed DEVICEEXTENSION to DRIVER_DEVICEEXTENSION\r
2430     - Began abstraction of IRP MajorFunction dispatching\r
2431     - Split away AoE disk parameters from RAM disk parameters\r
2432     - Removed a couple of compiler warnings\r
2433 \r
2434 commit 269c92ae9aa903fc18551edb4ee877b5ad50c9d1\r
2435 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2436 Date:   Sun Aug 23 05:19:30 2009 -0400\r
2437 \r
2438     [memdisk] Changes to support MEMDISK as the boot disk\r
2439     \r
2440     We only do Protocol_Start() now when we add an actual AoE device to the\r
2441     bus.  The bus itself is forced as a reported device.  Just tested with\r
2442     a Windows XP SP2 PE HDD image.  Still need some serious abstraction.\r
2443 \r
2444 commit 0db12888cc482225e2096cfc5f6bef37d155cf8c\r
2445 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2446 Date:   Fri Aug 21 21:28:20 2009 -0400\r
2447 \r
2448     [cosmetics] Make mdi.h consistent with previous commit\r
2449 \r
2450 commit 14bc2e7465a6b35a2be9a3d136fa5ec430cd973d\r
2451 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2452 Date:   Fri Aug 21 20:29:58 2009 -0400\r
2453 \r
2454     [cosmetics] Global, function, typedef naming convention\r
2455     \r
2456     Minor cosmetic changes to globals', functions' and typedefs' names so\r
2457     that I can more easily identify where things come from.  Looks somewhat OO,\r
2458     but with an underscore instead of :: or . or ->\r
2459     \r
2460     Module_Globals_SomeGlobal\r
2461     MODULE_SOMESTRUCT\r
2462     Module_Function\r
2463     \r
2464     Most things without a module prefix are going to be locally-scoped vars or\r
2465     external WinDDK functions and types.\r
2466 \r
2467 commit c8df06125ac45f90219d63c0f26f8cc237dc485f\r
2468 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2469 Date:   Thu Aug 20 09:43:47 2009 -0400\r
2470 \r
2471     [devel] Minor changes for development convenience\r
2472     \r
2473     Made a wxDev-Cpp project file and changed a batch file to point to the WinDDK.\r
2474 \r
2475 commit f8f571404724191bff041d1736f28ffb9b18dc38\r
2476 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2477 Date:   Thu Aug 20 09:40:46 2009 -0400\r
2478 \r
2479     [feature] MEMDISK support\r
2480     \r
2481     The code is extremely hacky, but MEMDISKs can be discovered and used\r
2482     at boot time now.  We check the old real-mode INT 0x13 hook, follow some\r
2483     bread crumbs to find MEMDISK 3.82, then note the MEMDISK's geometry and\r
2484     details.\r
2485     \r
2486     We hack AoERequest() to simply copy memory for the MEMDISK case.\r
2487     \r
2488     Neither the wacky globals/statics, nor the MEMDISK installation check,\r
2489     nor the AoE I/O hijacking check are really the right strategy, but reworking\r
2490     WinAoE has been slow going thus far.  The ToDos are becoming more obvious.\r
2491     \r
2492     It would likely be best to implement classes for an AoE disk and a MEMDISK,\r
2493     and to split out (abstract) knowledge of AoE specifics from things like\r
2494     the bus and disk code.  This will take time, but would allow for other\r
2495     classes to eventually be implemented...  Things like:\r
2496     \r
2497     Software RAID\r
2498     File-backed disks\r
2499     User-mode back-ends\r
2500     HTTPDisk (already exists, but reworked to sit on our bus)\r
2501     \r
2502     Also, regardless of the disk's interface, we should support floppy, HDD,\r
2503     and ODD (optical disc drive) emulation.\r
2504 \r
2505 commit 18458560588bc70f702fe9c24183a61afd88cd72\r
2506 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2507 Date:   Mon Aug 17 19:23:58 2009 -0400\r
2508 \r
2509     [cosmetics] Changed my mind about indent again\r
2510     \r
2511     Re-indented all files using the options documented in indent.txt.  There is\r
2512     also a shell script called indent.sh now.  Goto labels seem ugly.\r
2513 \r
2514 commit 8a31df0ae86d3d78f5f7733f28efd21fe5025592\r
2515 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2516 Date:   Mon Aug 17 18:03:51 2009 -0400\r
2517 \r
2518     [repository] Insert void into empty arguments in function declarations\r
2519 \r
2520 commit 7f7673d675262e9ee8f9fc7e08d0f57df05e29db\r
2521 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2522 Date:   Mon Aug 10 17:08:03 2009 -0400\r
2523 \r
2524     [cosmetics] Added static and extern qualifiers for variables\r
2525     \r
2526     As well as static for __divdi3() function.\r
2527 \r
2528 commit f1ea7943943edbc859153e594ea3d53df3e096f3\r
2529 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2530 Date:   Mon Aug 10 16:35:05 2009 -0400\r
2531 \r
2532     [cosmetics] Added static and extern qualifiers for functions\r
2533 \r
2534 commit fea74bed91d61dad9d5c4ec5acb4f7df52b5ffb9\r
2535 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2536 Date:   Mon Aug 10 15:33:38 2009 -0400\r
2537 \r
2538     [cosmetics] Cosmetic changes, C-style comments, copyright text\r
2539     \r
2540     Also moved some things into headers.\r
2541 \r
2542 commit f89e426271c0dc01732b54e194479d2b5f765d6e\r
2543 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2544 Date:   Thu Jul 9 21:07:39 2009 -0400\r
2545 \r
2546     [driver] Added a commented-out fun test for driver messages\r
2547     \r
2548     The fun test prints to the Windows boot screen forever.\r
2549 \r
2550 commit d39d5964902a6909c9ef521741964c73afce1a77\r
2551 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2552 Date:   Tue Jul 7 23:31:08 2009 -0400\r
2553 \r
2554     [debug] Improve DBG() macro\r
2555     \r
2556     DBG() is a hook which calls xDbgPrint() and then DbgPrint().  The macro\r
2557     uses the ternary operator to accomplish the hook, and produces a code\r
2558     path which can never yield false.  The compiler should optimize the\r
2559     resulting code, thus saving any additional cost in space.  The hook is\r
2560     thus accomplished for free.  It's a hook in the sense that args from DBG()\r
2561     are passed through to DbgPrint(), but not before we inject another\r
2562     function call with unrelated and position-dependent args.\r
2563 \r
2564 commit 0c7e3ede7b92bd166a23d019d2f4b20be70e27cd\r
2565 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2566 Date:   Mon Jul 6 23:10:51 2009 -0400\r
2567 \r
2568     [aoe] Add missing return path for error condition\r
2569     \r
2570     We had a code path which freed memory but then used it right afterwards.\r
2571 \r
2572 commit 265c7ab518b8f6d761640180866d5a97e96bb6b7\r
2573 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2574 Date:   Sun Jul 5 22:25:50 2009 -0400\r
2575 \r
2576     [debugging] Add missing #include for bus.c, disk.c, driver.c, protocol.c\r
2577 \r
2578 commit c6620e7b077960470a015cdc1b36cd07b71b87cf\r
2579 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2580 Date:   Sun Jul 5 22:23:46 2009 -0400\r
2581 \r
2582     [registry] Use new debugging message system\r
2583 \r
2584 commit 7ba83526dde7431ea3827709dd4db5ca1e8ea7f8\r
2585 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2586 Date:   Sun Jul 5 22:13:13 2009 -0400\r
2587 \r
2588     [protocol] Use new debugging message system\r
2589 \r
2590 commit 64f3723552f75794a62bbb6acbabaea7f4e5b6e3\r
2591 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2592 Date:   Sun Jul 5 22:05:07 2009 -0400\r
2593 \r
2594     [driver] Use new debugging message system\r
2595 \r
2596 commit 8cbf46fce3876c6eaf62c10aa5f21daaff4fb686\r
2597 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2598 Date:   Sun Jul 5 22:02:36 2009 -0400\r
2599 \r
2600     [disk] Use new debugging message system\r
2601 \r
2602 commit 22a8b105ad498b027555bbf443df01c841341ea6\r
2603 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2604 Date:   Sun Jul 5 21:55:18 2009 -0400\r
2605 \r
2606     [bus] Use new debugging message system\r
2607 \r
2608 commit eac001200cd866dbf769c588a9dcf231501af1d4\r
2609 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2610 Date:   Sun Jul 5 21:42:46 2009 -0400\r
2611 \r
2612     [debug] Fix debugging message system to actually work\r
2613     \r
2614     That's right.\r
2615 \r
2616 commit b5973d4d097db0595e52574b0af2bed99f977bce\r
2617 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2618 Date:   Sun Jul 5 18:20:12 2009 -0400\r
2619 \r
2620     [disk] FIXME: Hack to allow compilation with WinDDK 6001.18001\r
2621     \r
2622     _EIGHT_BYTE and _READ_CAPACITY_DATA_EX are already available in the\r
2623     WinDDK 6001.18001 Windows 2000 build environment. This is not likely a\r
2624     permanent solution.\r
2625 \r
2626 commit 3ecaa9d20a0e5157841fb4a05570afc7f128ed46\r
2627 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2628 Date:   Sun Jul 5 17:24:45 2009 -0400\r
2629 \r
2630     [aoe] Use new debugging message system\r
2631     \r
2632     aoe.c now uses the new DBG() macro to output debugging messages.  File,\r
2633     function and line number are automatically output.\r
2634 \r
2635 commit effa6f8bd1502d5bb553a18e71d0d39d959729ce\r
2636 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2637 Date:   Sun Jul 5 14:11:25 2009 -0400\r
2638 \r
2639     [debug] Add DBG() and xDbgPrint() debugging message system\r
2640     \r
2641     Debug messages can now use DBG() instead of DbgPrint(). File, function and\r
2642     line number will be automatically included in the debugging output message.\r
2643 \r
2644 commit 6f71dacaaae987cde04aeb4bcb4e2cbdbca1fe1b\r
2645 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2646 Date:   Fri Jul 3 09:18:02 2009 -0400\r
2647 \r
2648     [aoe] Modify debugging output\r
2649     \r
2650     Debugging messages in aoe.c now clearly indicate which file and function they\r
2651     belong to.\r
2652     \r
2653     TODO: Change the debugging message system throughout the driver to avoid\r
2654     redundancy, but to indicate file and function.\r
2655 \r
2656 commit 3130251291c717e85c850e043bfba03eadc015a9\r
2657 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2658 Date:   Fri Jul 3 08:12:57 2009 -0400\r
2659 \r
2660     [make_system] DOS2UNIX the main Makefile\r
2661 \r
2662 commit e468d897e28e1ad695e3fb92e58525de5684cf40\r
2663 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2664 Date:   Fri Jul 3 08:06:14 2009 -0400\r
2665 \r
2666     [aoe] Add some initial comments\r
2667 \r
2668 commit ff084677ad196d5e903dc5b96399e6025789c107\r
2669 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2670 Date:   Wed Jul 1 13:23:24 2009 -0400\r
2671 \r
2672     [repository] Another spacing style change for C files\r
2673     \r
2674     Used 'indent -prs -pcs -kr -l79 -ncs' this time.\r
2675 \r
2676 commit 77196ff29a013b8c68bc0ea09e5a2a1277807195\r
2677 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2678 Date:   Wed Jul 1 12:56:14 2009 -0400\r
2679 \r
2680     [repository] Spacing style change to *.h and *.c files\r
2681     \r
2682     'indent -prs -pcs -kr -i8 -l80 -ncs' command used on all C files.\r
2683     Command suggested by Joshua Oreman ("rwcr").\r
2684 \r
2685 commit 4214182001cf76de6331e661ac2484d0030c1460\r
2686 Author: Shao Miller <shao.miller@yrdsb.edu.on.ca>\r
2687 Date:   Wed Jul 1 12:49:49 2009 -0400\r
2688 \r
2689     [repository] DOS2UNIX all *.h and *.c files\r
2690 \r
2691 commit 517fe954c7e9c06c3d85caf42b41536f86e290de\r
2692 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2693 Date:   Mon Jun 29 19:20:47 2009 -0400\r
2694 \r
2695     [repository] Add .gitignore file to ignore built items\r
2696     \r
2697     Built items should not be noticed by git\r
2698 \r
2699 commit c7274a30a2abc49ef2469347dcc9f254998c4305\r
2700 Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>\r
2701 Date:   Mon Jun 29 18:48:21 2009 -0400\r
2702 \r
2703     [repository] Initial population of WinAoE into git repository\r
2704     \r
2705     Build environment: MSYS (MingW)\r
2706     Git environment:   Cygwin\r