-
Notifications
You must be signed in to change notification settings - Fork 26
/
CHANGES.log
2706 lines (1881 loc) · 96.7 KB
/
CHANGES.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue Jun 1 03:19:42 2010 -0400
[version] Up version to 0.0.1.8
This release introduces initial support for GRUB4DOS
sector-mapped disks. Currently, only HDD images with MBRs
are supported.
Please note that this is an early stage in supporting this
scenario, so you might find quirks. Also be aware of the
limitations:
- If your booted-from disk image file gets _moved_ while you
are booted from it, expect terrible things to happen. Try
to avoid such things as defragmenting the filesystem with
the disk image on it!
- There isn't really a good way to know which Windows disk a
GRUB4DOS backing disk corresponds to! Not enough information
is available to make the right decision. BIOS drive numbers
have no relevance in Windows, so we cannot exactly identify
which backing disk is correct for a disk image
- WinVBlock is not capable of magic; your booted disk image
_must_ have drivers and device ID associations so that the
_real_ disks are found at boot time!
commit 528bc2fd78dc16ab0eb491d16d7c9754cedf2baf
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue Jun 1 03:09:12 2010 -0400
[filedisk] Add MBR check for GRUB4DOS disks
We lack any good means of finding the correct backing disk for
a boot-time file-backed disk. Here is a really cheap check
which will test for an MBR where we would expect on on the
backing disk. This doesn't support CD/DVD, obviously.
commit 4e975c0c27e20785862311a2cdb26195fe7c4f9d
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue Jun 1 02:28:04 2010 -0400
[disk] Move MBR structure def. and CHS macros into header
commit 0ae2ca7a78e9cf27f22a316dcb05803c62db80b9
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue Jun 1 00:43:43 2010 -0400
[filedisk] Increase timeout for threaded disk processing
If there's nothing to do but a possible device__free(),
just sleep for up to a whole second before checking.
commit 011dab2d9d092b18e4b33ac6c4f9cef704bc76ef
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue Jun 1 00:04:06 2010 -0400
[filedisk] Initial support for booting a filedisk from GRUB4DOS
Whee. We scan memory for GRUB4DOS sector-mapped disks, create
filedisks for them, then hook them so that the first time they
are used, we try to find the appropriate backing disk for each.
The limitations of the current implementation are:
- We assume the first disk is the right backing disk (very naive)
- We don't check to make sure we don't open our own disk
- It's pretty slow for some reason that needs investigation
- There is not really a good way to associate GRUB4DOS mappings
to Windows disks; not enough information is passed!
- If the image file for a filedisk gets moved while we are using
it, expect terrible things to happen!
commit c4ecc3c834c3cc134c57a6ff6111c5bf304518e5
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 31 22:36:38 2010 -0400
[filedisk] Move filedisk__get_ptr macro into header
Same as other such *__get_ptr() macros used by multiple
C source files.
commit 66a679f8bbd572030568f71a4230e8be13add7d6
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 31 21:41:18 2010 -0400
[filedisk] Implement threaded filedisk creation function
filedisk__create_threaded() should return a pointer to a
threaded, file-backed disk.
commit 98538ada95a51016053f6697554de76cf19f9d33
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 31 21:21:16 2010 -0400
[filedisk] Add support for threaded filedisks
We now have a disk__io routine which enqueues a request for
later processing. We implement a device__free routine to
support such asynchronous filedisks. We have a thread
function per threaded filedisk which processes the queue
of requests.
commit 9e1d1812362fc789b8fb9c2c0f742000335fa3f9
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 31 15:29:26 2010 -0400
[filedisk] Allow for a file offset
It's useful to have a base offset into a file from which
the virtual disk's sectors will be considered to start.
commit 351f5f0aa0b3b3b08d38d8cb4618cf01ca10d71c
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 30 02:16:19 2010 -0400
[filedisk] Add GRUB4DOS module
Distinguish between the case of GRUB4DOS RAM disks and
GRUB4DOS sector-mapped (file-backed) disks. A new probe
routine is added (which currently does nothing).
commit d496bbd8a09700f1f9eff5699f5b4e1e84c13c16
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 30 02:01:01 2010 -0400
[filedisk] Put in own subdir and change to library
There is a plan to support GRUB4DOS sector-mapped disks,
so we will need another probe routine, suggesting that
there should be a GRUB4DOS source file in a filedisk/
directory, as there is a GRUB4DOS source file in the
ramdisk/ directory.
commit 7851226757d4ef03b7fdc7fe8341fbcc755ddbd5
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 30 01:27:48 2010 -0400
[disk] Allow for asynchronous IRP completion
After much debugging, it was revealed that in order to use
ZwReadFile() for a file-backed disk during boot, one needs
to return STATUS_PENDING to the caller and start a worker
thread who will use ZwReadFile() and then complete the IRP.
commit c3bbae2932391febefafa00590744e3b648455e1
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 23 13:36:53 2010 -0400
[irp,bus] Send and handle IRP completion properly for detach
The disk detach handler was not completing the IRP and the
IRP processor was not checking for completion in an outer
while() loop. Both fixed.
commit cdb9742c4666551053e24693814a0112d097eefc
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 23 12:47:02 2010 -0400
[aoe] Fix get_ptr macro and uses
How I missed this, I really have no idea...
commit 85a5a7a469f6e8fc509999e4eca7c7ecf246ce30
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 23 11:46:31 2010 -0400
[bus] Fix NULL pointer dereference when disk walking
For 'winvblk detach' and 'winvblk umount' commands.
commit 9ae27babccf48d38a7908891dec8ed48e23b1a56
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 23 11:45:17 2010 -0400
[aoe] Fix NULL pointer dereferencing in disk walking
For the 'winvblk show' command... Which, by the way,
should be untied from the AoE module at some point.
commit dafb0c3962355ada36b71501e890eb96dba873f5
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 23 05:18:22 2010 -0400
[major] Re-work device structures and creation
This rather large commit affects a majority of the AoE and
WinVBlock modules. It is unfortunately large in order to
ensure that after the series of changes were made, that a
system was still bootable from a WinVBlock disk.
What was involved:
A DEVICE_OBJECT's DeviceExtension member no longer points to
one of our device types. All of our device types were
previously structures which included the structures they
derived functionality from as their first members. So you
had something like a RAM disk with a disk as its first
member, a disk having a device as its first member. So to
access any one of the structures, you could quite simply
cast a pointer.
Now a DeviceExtension points to a pointer to a device__type.
A device__type has an ext member which is a pointer to the
instance of the next-higher structure type, such as a
disk__type. A disk__type also has an ext member, so that
AoE, RAM, and file-backed disks can extend it.
Each device class provides a global creation routine, which
tracks the device instance in a list of created devices for
that type. The device class' creation routine should set
default parameters. The creation routine can override the
device routines used by callers calling the routines of the
"base class" (the device type). As an example, when you
create a RAM disk, you:
- create a disk
- which creates a device
- which hook's a device routine for the device
- hook some of the disk's routines
- add the RAM disk to the global list
When deleting the RAM disk, you:
- call the deletion routine you hooked for the disk
- which calls the deletion rout. it hooked for the dev.
- remove the RAM disk from the global list
Some copy'n'pasted comments were corrected.
Some code expecting the base-class-as-first-member-of-
derived-class was exposed and modified appropriately.
get_ptr() macros were changed.
DEVICE_OBJECT deletion paths were tied to device__free()
calls.
Some TODOs are left: More error-checking when calling
module initialization functions, watching NULL pointer
dereferences when walking sibling pointers.
commit ee22e3f47b5745cbbd82bd4dbe61ae079b690082
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri May 21 15:33:32 2010 -0400
[bus] Use new bus creation strategy
When creating the boot bus or when a user manually installs
a bus device, the bus module will use the new device creation
scheme.
When the bus module initializes, it creates the boot bus,
which is a root-enumerated device via IoReportDetectedDevice().
Using this kernel function means that the PnpManager owns the
PDO. If a user manually installs a bus device, PnpManager also
owns the PDO. So the create_pdo() routine for a bus doesn't
make a lot of sense, except for indirectly for the case of the
boot bus only.
Also, when the IoReportDetectedDevice() is used, we must
manually call our attach_fdo() function to create the
DEVICE_OBJECT which we own and which we will associate with
the driver-internal bus & device details.
There is a really big nasty TODO left over in this commit
which should be removed as soon as possible. In shifting to
the new device classing scheme, we are part-way through,
where some devices use a DEVICE_OBJECT's DeviceExtension as
a device__type_ptr, and the bus uses it as a device__type_ptr*.
So for now, we have the mini IRP handling system sense if it
should compensate for this.
The next steps will be to move all of the various disk types
to use counterpart strategies for device classing. But hey,
it still boots.
commit 09743972d1ed6483a9ac1be0a6011f991390b9b5
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri May 21 00:07:53 2010 -0400
[cosmetics] Fix some typos due to copy and paste
commit b21520d56202027a0e01212f4e7fe746ac4d669c
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Thu May 20 23:48:15 2010 -0400
[bus] bus__add_child once more takes a bus param
Trying to move away from the "one bus" model.
commit 7b4b51eecd6904c2aaf7fc3bff1ccc84a07d02b3
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Thu May 20 23:12:12 2010 -0400
[device,bus] Further develop device routines
Much of it unused for now, but eventually (seems like it's
always eventually) each device type will create an instance
of a type it would like to derive from, then overrides
whatever operations it wants to. When the device is asked
to perform operations, it should either have sensible, do-
nothing defaults or meaningful device-specific operations.
commit badf22aa21fd2497a395bd8321770e207bdf1310
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Thu May 20 16:19:28 2010 -0400
[bus] Create boot bus here, introduce init function
The bus module is now responsible for creation of bus PDOs,
such as the boot bus which exposes WinVBlock-supported boot
disks. We now have bus__init() and bus__finalize() funcs
which are called by the driver module.
We also mimic the device module by having a bus__create()
function, though it is currently unused, also like the
device__create() function.
commit b99d66372c8ed5a83a76c5fd584ce472f2631d03
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Thu May 20 09:41:29 2010 -0400
[device] Don't use a pointer for device operations
Instead of pointing at some device operations structure,
we actually copy the operations' function pointers for
each device.
commit f0dc2f7cfb53df889524e8de78a1cbe8ba1fa531
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Thu May 20 01:44:59 2010 -0400
[device] Introduce device creation routine
Though currently unused, the idea is to eventually have the
different device type modules as providers of their device
types. The new device-common module will produce a device
structure which has device-common properties. A caller can
then override whichever properties they need to, such as the
device operations.
Also, device creation should track created devices for easy
tear-down later on.
commit 95ccb0ef85ced48b53b4d459d36dd2170603b2fd
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue May 18 16:39:41 2010 -0400
[device] Introduce device header and move details there
Move device specifics out of the driver header and into a
device headers, instead. We are on our way to a form of
device functionality inheritance... Something like:
device
..bus
..disk
....aoe
....ramdisk
....filedisk
"And the rest." - Gilligan's Island
commit ca9d2991567c6ef9d846ccad0eb13c06e8a38d1b
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue May 18 10:42:23 2010 -0400
[winvblock/driver] Rename dev_ext member to device
Just cosmetic. I am trying to hide the details of
Windows DEVICE_OBJECTs with their DeviceExtension.
commit 81ea249b7a177e6ef8ed86d4854c2cb55430d4ab
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue May 18 10:25:47 2010 -0400
[project] Rename dev_ext variables to dev
Just cosmetic. I am trying to hide the details of
Windows DEVICE_OBJECTs with their DeviceExtension.
commit 30cc5dec4305178d39512d8e6fdb67dd91819fa7
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 17 23:02:32 2010 -0400
[winvblock/driver] Rename driver__dev_ext to device__type
This type will be coming out of the driver module soon.
commit 763dec1e3c74a8095fbb43ec0ebff5acd0660ff5
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 17 20:59:12 2010 -0400
[winvblock/probe] Move disk probe routine into bus
It makes some sense that we can delay our RAM disk probing
until the bus is actually queried for children. This means
that the DriverEntry() returns sooner.
commit 68b99504849b45911ea5ada3ad2c8aa2245c1256
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 17 20:27:37 2010 -0400
[disk] Add missing extern specifier for export
commit e749b9e42922aa04ab246bc53da31c2f3b75b358
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 17 00:12:05 2010 -0400
[build] Re-visit build system and directory structure
Thanks to OSR's ntdev mailing-list and Tim Roberts' response,
we now have a directory layout with some hierarchical
organization. Very nice.
commit 18e2cbd719c6974a5334b7b773e8a28f83fde31b
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 16 17:23:51 2010 -0400
[version] Up version to 0.0.1.7
This version sees a couple of changes:
- AoE has been split off as a separate driver that depends
on the WinVBlock bus driver. This removes the bus driver's
dependency on NDIS.SYS. You can boot from an AoE disk still,
but pay attention to the service load order; you want NDIS to
load first, then your NIC's driver, then WinVBlock, then AoE.
- Geometry detection has been added for file-backed disks, so
you can hopefully do:
winvblk attach c:\foo.hdd h 0 0 0
and get the right geometry.
- We now always create a root-enumerated bus device. There's
no longer a need to add the /WINVBLOCK=BUS=1 option to the
BOOT.INI or TXTSETUP.SIF files.
commit 908b420c949dc11e0a9318fd7643ee7a5c649227
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 16 17:19:37 2010 -0400
[aoe] Add files to support 64-bit compilation
As in, AMD64/x64... Not Itanium/IA-64.
commit e1b6cf336cdb93323302fe1afcdae1782a36bfe5
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 16 17:17:45 2010 -0400
[project] Add to git ignore file
Ignore warning, error, log files. Ignore object
directories.
commit 5200bee416645443b0ee672263d9bc30fa0ed365
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 16 15:18:38 2010 -0400
[bus/disk,bus/filedisk] Add geometry detection
Now you can specify something like:
winvblk attach c:\foo.hdd h 0 0 0
and geometry detection will be attempted when the first
sector of the disk is accessed. We use some of the logic
from H. Peter Anvin's MEMDISK to look at FAT and MBR
params.
commit 2549ed2921c3d63e38a609da89acb16101fdd0c9
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 23:41:12 2010 -0400
[httpdisk] Apply WinVBlock-as-usual indentation
commit c108b940d666d462e0cbb30356fbe25f63ee1f36
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 23:38:24 2010 -0400
[httpdisk] Dos2Unix source files
commit 1fb699648a5bc32fc40de044ce70fb427cb8eddc
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 23:32:34 2010 -0400
[httpdisk] Support compilation under DDK 6001.18001
A couple of changes so that HTTPDisk and its mounting
utility compile under the Windows Driver Development Kit
version 6001.18001, which is what I've been using for
WinVBlock.
commit 6d26bad9697bd83101172cbb525d26ddb40a905c
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 22:54:49 2010 -0400
[httpdisk] Initial population into WinVBlock repository
The extremely nice work of Bo Brantén found at:
http://www.acc.umu.se/~bosse/
includes HTTPDisk, a read-only HTTP SAN driver, of sorts.
He has very kindly provided permission for its incorporation
into WinVBlock. It will be developed to be a "feature
driver", just as AoE is a "feature driver".
Please note that HTTPDisk is GPLv2 or any later version.
commit 1037e1e1bf67392404c63f535ab22dc267499025
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 22:05:58 2010 -0400
[project] Split AoE off, part 3
At last, the unfortunately monolithic AoE module can be
separated from the bus, RAM disk and file-backed disk
code. This is the final part of the estimated 3 commits.
Now that AoE is its own driver, but dependent on WinVBlock,
we have to consider the service load order in a booted-from
scenario.
I've re-ordered HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Control\ServiceGroupOrder\ : List : REG_MULTI_SZ as follows:
...
System Bus Extender
* NDIS Wrapper
* NDIS
SCSI miniport
...
Instead of:
...
System Bus Extender
SCSI miniport
...
Streams Drivers
* NDIS Wrapper
COM Infrastructure
...
PNP_TDI
* NDIS
TDI
...
And I use the following Group values for the two drivers:
...\Services\WinVBlock : Group : REG_SZ : SCSI miniport
...\Services\AoE : Group : REG_SZ : SCSI Class
And of course as usual, you will want your NIC driver set
to boot-start. Loading should thus be ordered as follows:
NDIS
NIC driver
WinVBlock
AoE
commit 0e3582a09583afc01260f7d1ddaf3ee6d22050d1
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 21:40:43 2010 -0400
[project] Split AoE off, part 2
At last, the unfortunately monolithic AoE module can be
separated from the bus, RAM disk and file-backed disk
code. This is part 2 of an estimated 3 commits. Do not
expect AoE to work until the third commit.
commit 3df7614b527e16a04b54907812c8aca7344bb42d
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 21:33:11 2010 -0400
[project] Split AoE off, part 1
At last, the unfortunately monolithic AoE module can be
separated from the bus, RAM disk and file-backed disk
code. This is part 1 of an estimated 3 commits. Do not
expect AoE to work until the third commit.
commit 171f46360ac507ad261c21006c8ab3af5fa5a0f9
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 20:13:00 2010 -0400
[debug] Export xDbgPrint
Because AoE (and every other module) uses it.
commit 7726ae5bc2d49c992ebd2ade36cd51efb100bd34
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 20:09:34 2010 -0400
[driver] Export Driver_CompletePendingIrp
Because AoE uses it. *sigh* I'm in a hurry to finish this
split so that AoE can be its own driver.
commit 5b532480e2edb02e237242bd044e0bb62e78c5a6
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 15:26:16 2010 -0400
[disk] Export disk device operations
Because AoE uses them.
commit 785957d74fae19dedea8ac37debe383246906f1a
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 15:17:52 2010 -0400
[aoe] Implement a disk close routine
To avoid referencing the disk__default_close() function in
the disk module.
commit 4209907fabccc3e26e7146671f4cf428949fcb42
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 15:11:24 2010 -0400
[driver] Export Error function
Because AoE uses it.
commit 281a67e2a8e75c825aa110982b1592f198e3b850
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 15:02:58 2010 -0400
[bus,aoe,irp] AoE mini IRP handling in AoE module
The bus module pretty well needs to expose the bus device to
other drivers so that they can register their mini IRP
handling tables with it. bus__dev() now yields the FDO.
The un-register function was mis-named in the IRP module.
We are now registering the AoE IOCTL handling twice, but
this is not a big deal. When AoE is finally split off,
the bus module will no longer register anything AoE-related.
commit 356ee317a0a8c9eb0e85fe1edffe9a9853643b99
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 14:13:57 2010 -0400
[project] Change get_XXX_ptr to preprocessor macro
I don't think the inline specifier was working anyway.
commit 7feecadb08d7f09fb745ac1b68090ef3656db8e6
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 13:57:18 2010 -0400
[bus] bus__add_child only uses the single bus
The bus__add_child() function has been modified to simply
use the only bus device we allow, rather than taking an
argument. Also, we invalidate the bus relations instead
of the caller.
commit dc26e3d56f44ae23c8f9d1523b7d9ce9cc853a87
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 13:18:01 2010 -0400
[registry,aoe] Move AoE Registry setup into AoE module
AoE needs to register its protocol with NDIS and also does
some Registry manipulation. This logic has been moved from
the Registry module into the AoE module (which is getting
quite monolithic now). This is still towards splitting AoE
into its own driver.
commit 819355c4ba81c161345489c7c8568e32155a5f2f
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 12:40:32 2010 -0400
[registry] Change Registry_NoteOsLoadOptions function
Renamed to registry__note_os_load_opts(). Now takes an
argument instead of storing directly to a global in the
driver module.
We also free this from the driver module at driver unload
time, as well.
commit 5ffbd67823df15e624c55790e8f5744b6b11832f
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 12:12:53 2010 -0400
[registry] Export handy functions by Michael Brown
AoE will want to do some Registry manipulation once it has
been split from WinVBlock, so we might as well export some
functions it (or other future drivers) could make use of.
commit b05c54be05c1c881d9ae482db41a26780c414230
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 10 11:54:06 2010 -0400
[aoe] Do not truncate fractional end cylinder
Ran into problems with AoE to a disk image with geometry
constrained to QEmu's expectations. We used to truncate
a fractional end cylinder for the disk, but this has been
changed with the hopes that most disk consumers will use
LBA.
We should really address the FIXME and use geometry from
the MBR.
commit 481bdb089027a722eac1f514bbb5c75ea3a7bf15
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sun May 9 18:39:36 2010 -0400
[project] Match Entry messages with Exit messages
Simply output messages when functions return via the
"usual" or expected path, so we can track entry and exit.
commit 0a40d1be143310c2dce11d05f1598457b175267f
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 16:12:55 2010 -0400
[aoe_ioctl] Merge header into AoE header
Also moved a single extern function declaration needed
by the AoE protocol module right into the protocol
module itself, thus avoiding complications for the
user-space "mount" utility having to know about the DDK.
commit 13ed736ced14a4cd339b491a29d8cbb8452aa23c
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:59:59 2010 -0400
[aoe] Make AoE_Start private
Renamed to start(). Only the AoE module uses it.
commit 6701e254d2fc02c1c7850a728f6b9b0ead3843ce
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:56:28 2010 -0400
[aoe] Rename AoE_ResetProbe to aoe__reset_probe
Used by the AoE protocol module, too.
commit b1a3cc9a7fb8de3fce5c6e4887455ac413a926e8
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:54:19 2010 -0400
[aoe] Rename AoE_Reply to aoe__reply
Used by the AoE protocol module, too.
commit 4525af4ffb801aee5895f480b204cebed2fb78ce
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:50:12 2010 -0400
[aoe] Make AoE disk operations private
An amendment to commit
818ebaaf58fcfbad04c7760ca4db1edfb4d146f1
commit 02d2e86e21d7ae3dbf078a18bd511cf30bdf0860
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:46:51 2010 -0400
[aoe] Make aoe__target_list private
An amendment to commit
793f876c1aa0dddff0d9b2f402ed105e0f7a89b5
commit 818ebaaf58fcfbad04c7760ca4db1edfb4d146f1
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:42:59 2010 -0400
[aoe] Make AoE disk operations private
commit 71d0b1eb484ca68804541148f9ca39e34cf1650d
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:40:35 2010 -0400
[aoe] Rename aoe__get_disk_ptr to get_aoe_disk_ptr
Since it's entirely within the AoE module now.
commit 793f876c1aa0dddff0d9b2f402ed105e0f7a89b5
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:38:39 2010 -0400
[aoe] Make aoe__target_list private
Only AoE functions need to know the AoE target_list
type now.
commit 2e84efe9b7747ee0b4f184d5cc575a699936b116
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:30:42 2010 -0400
[aoe] Make AoE search_state private
Only AoE functions need to know about the search_state
enumeration now.
commit 30d11d5b622caa47a6d57470e6964032ed20f611
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 15:27:51 2010 -0400
[aoe] Make aoe__disk_type private
Only AoE functions need to know about this type now.
commit 5110aec0e75bdce0d0f3b3a2100a9ad64cf9244e
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 13:53:05 2010 -0400
[bus/bus_dev_ctl,bus/aoe] Move AoE IOCTLs into AoE module
Still in the process of splitting AoE off, we move AoE-
specific IOCTL handling into the AoE module.
commit bb0cc2d79dfbfbc8ac90f8815653f3e867819ec1
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Sat May 8 12:35:20 2010 -0400
[bus/disk] Fix uninitialized mini IRP handling table chain
Before registering a mini IRP handling table with a device,
we should really make sure the chain of tables is empty.
Oops.
commit 4ce836b52af4afb5bc39e82f108f9e46ba8bd76e
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri May 7 20:37:19 2010 -0400
[mount,aoe] Move AoE IOCTLs into their own file
Starting to split AoE from the rest.
commit 0f090193e606d935165ae8ba4428a52d15939948
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri May 7 17:33:43 2010 -0400
[irp] Use mini IRP handling chain
When an IRP dispatch comes in, we special-case a power
IRP, or pass the IRP along to irp__process().
irp__process() will walk each table of IRP handlings
in the device's chain of registered tables, looking for
an IRP handling that matches the IRP major and minor
codes. This is roughly similar to the PDO stacked
beneath multiple FDOs approach, but just a little less
complex and with perhaps less memory and management
overhead.
A feature (provided by a driver) can register handled
IRP types on a device, then WinVBlock should use that
feature's functions to process the IRP. I hope WinVBlock
can call functions in another driver in this way. :)
So now when a bus or disk device is created, the default
driver IRP handling table is registered as well as the
device-specific handling table (bus or disk). We used
to manually build a large table with these tables copied
into it, but not anymore.
commit c6ca22ad43a0db18c807bb5dcc5e48ccffff3fd2
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri May 7 10:53:21 2010 -0400
[irp] Move mini IRP handling into its own module
We introduce bus/irp.c for the miniature IRP handling logic.
We also introduce code for an IRP handling table chain. The
goal of such a chain is to allow IRP handlings to be
dynamically added and removed for a device. An example use
would be for the AoE system to register IOCTL handling with
the WinVBlock bus device, so that the bus processes the
IOCTLs. If the AoE system is unloaded, it should be able to
un-register the handling of these IOCTLs.
Currently, the IRP handling table chain is not used, but
this will change in a future commit.
commit 5e000d42647f5afb63a2c74061f7199d157c164e
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Thu May 6 19:54:07 2010 -0400
[headers] Introduce generic pointer type
We include winvblock__any_ptr to represent a void *.
commit 2c9dc5bd3ec4e100fe0e583758500e1982e9170f
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Wed May 5 19:15:10 2010 -0400
[bus/bus] Remove STDCALL for argless func
Bus_Stop() takes no arguments, so it doesn't need the
STDCALL specifier.
commit ba1d96bbb2254e9f9a9ff5ee59172e1fff167c98
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Wed May 5 19:12:34 2010 -0400
[bus/driver] Remove reinitialization declaration
Should have been removed in commit
3afe1fddd34f0e0187dca6bb569d9f8353aab07a
commit 32a89e9dd90e58b98b48a124d6e3760ec706440c
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Tue May 4 18:43:14 2010 -0400
[build] Build bus driver to provide exports
Using the helpful information at this web page[1], we
now compile to provide a .LIB so that other drivers
can link against it and use functions that we might
choose to export.
Export functions by beginning with winvblock__lib_func
in the declaration.
[1] http://www.wd-3.com/archive/KernelDlls.htm
Tim Roberts
commit 3f338d2b7296009a8fd5714837da328b4f15bb29
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Mon May 3 14:57:31 2010 -0400
[bus/driver] Always create the root-enumerated bus dev
Instead of requiring the user to specify a BOOT.INI/TXTSETUP.SIF
/WINVBLOCK=BUS=1 option, we will simply always provide a root-
enumerated bus device. It's probably less complicated that way.
commit 4e3103dec6b4e6d753f92bca5c9831fb2040c608
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri Apr 30 19:10:11 2010 -0400
[devel] Update wxDev-C++ project file
Should reflect directory & file shuffling
commit a9408bd55b72c40de677ddc4ee9c3471178b5ccd
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri Apr 30 19:03:07 2010 -0400
[build] Move majority of code into bus subdir
The plan is to split AoE functionality off into its own driver,
to avoid WinVBlock's dependency on NDIS for those users who
do not require or desire the AoE feature.
Similarly, future features with dependencies can have their own
directories and their own .SYS drivers.
For now, all driver code including AoE has been moved into bus/,
but AoE will eventually come out of there.
A strategy needs to be determined to allow for the single bus
device to accept features in a modular fashion, and to route
applicable feature-wide control signals to each feature's driver.
For example, the WinVBlock bus (an "HDD controller" of sorts) can
support certain virtual disk types natively. When an AoE driver
starts, it could look for the bus and register itself as a
feature if the bus is found. Thenceforth, a user-land utility
could request an AoE-attach of the WinVBlock bus, who could forward
that request on to the AoE driver.
commit c07f380b83d69643dbb01a9c68a32dd49e175511
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri Apr 30 17:26:12 2010 -0400
[build] Move userland utility into subdir
commit bdd8c75f0dbe3bcda2fff3a3fad548bad77030e0
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri Apr 30 17:16:05 2010 -0400
[build] Move driver loader into subdir
commit 5143a3b691e6e11c559d32635efddf3002572f38
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Fri Apr 30 16:15:48 2010 -0400
[build] Move PXE NBP sources into nbp subdir
It's time to re-organize the project's directory structure.
commit 41d3e4ac4ae6099115d64f57c4b325a788d977bd
Author: Shao Miller <Shao.Miller@yrdsb.edu.on.ca>
Date: Thu Jan 14 14:19:19 2010 -0500
[version] Up version to 0.0.1.6