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
|
1999-07-03 Thomas Bushnell, BSG <tb@mit.edu>
* dir.c (diskfs_lookup_hard): Use munmap instead of vm_deallocate.
(diskfs_direnter_hard): Likewise.
(diskfs_dirremove_hard): Likewise.
(diskfs_dirrewrite_hard): Likewise.
(diskfs_dirempty): Likewise.
(diskfs_drop_dirstat): Likewise.
(diskfs_get_directs): Likewise.
* hyper.c (allocate_mod_map): Likewise.
(get_hypermetadata): Likewise.
* pager.c (free_page_buf): Likewise.
* truncate.c (poke_pages): Likewise.
1999-06-29 Thomas Bushnell, BSG <tb@mit.edu>
* hyper.c (diskfs_readonly_changed): Adjust whether the store
should permit writes too.
1999-06-19 Roland McGrath <roland@baalperazim.frob.com>
* pager.c (free_page_buf): Fix type cast.
Tue Jun 15 21:51:58 1999 Thomas Bushnell, BSG <tb@mit.edu>
* pager.c: Clamp the number of free pages we keep around to some
reasonably small value. Patch from Mark Kettenis
<kettenis@wins.uva.nl>.
1999-06-15 Thomas Bushnell, BSG <tb@mit.edu>
* inode.c (diskfs_validate_flags_change): Invert sense of test wrt
bits that haven't yet been defined. Reported by Kalle Olavi
Niemitalo <tosi@ees2.oulu.fi>.
1999-05-23 Roland McGrath <roland@baalperazim.frob.com>
* ialloc.c (diskfs_alloc_node): Frob printf format to suppress warning.
* getblk.c (ext2_getblk): Likewise.
* balloc.c (ext2_free_blocks): Likewise.
* hyper.c (get_hypermetadata): Likewise.
* ialloc.c (diskfs_alloc_node): If creator_os is not EXT2_OS_HURD,
suppress warnings about stale nonzero st_blocks or st_size.
1999-05-19 Roland McGrath <roland@baalperazim.frob.com>
* ext2fs.c (main): Include store size in panic msg when it's too small.
1999-01-23 Roland McGrath <roland@baalperazim.frob.com>
* ext2fs.c (main): Use diskfs_init_main.
1998-12-27 Roland McGrath <roland@baalperazim.frob.com>
* inode.c (diskfs_set_statfs): Remove __ from struct members.
1998-12-21 Mark Kettenis <kettenis@phys.uva.nl>
* inode.c (diskfs_set_statfs): Fill in statfs members that are
used to implement statvfs.
1998-12-27 Roland McGrath <roland@baalperazim.frob.com>
* ext2fs.c (main): Pass ARGP_IN_ORDER flag to argp_parse because
diskfs options need it.
1998-12-20 Roland McGrath <roland@baalperazim.frob.com>
* inode.c (diskfs_write_disknode): Add braces to silence warning.
* pager.c (file_pager_read_page): Likewise.
* storeinfo.c: Don't include <netinet/in.h>.
1998-09-04 Roland McGrath <roland@baalperazim.frob.com>
* dir.c (dirscanblock): Fix defn with `const'.
(diskfs_direnter_hard): Likewise.
* inode.c (diskfs_create_symlink_hook): Likewise.
(write_symlink): Likewise.
* pager.c: strings.h -> string.h; gets strerror decl.
* ext2fs.c (main): Fix return type to int.
* dir.c (diskfs_lookup_hard): Fix defn with `const'.
* inode.c (diskfs_set_translator): Likewise.
Wed Aug 20 14:28:00 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* dir.c (diskfs_lookup_hard): Cope with error return from
diskfs_get_filemap.
(diskfs_dirempty): Cope (poorly) with error return from
diskfs_get_filemap.
* truncate.c (force_delayed_copies): Likewise.
* pager.c (diskfs_get_filemap): If pager_create fails, return
error to caller.
Mon Jun 30 17:34:27 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* ext2fs.c (diskfs_readonly): Delete variable definition.
(main): If the store cannot be made writable, then set
diskfs_hard_readonly and diskfs_readonly.
1997-06-20 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (disk_pager_read_page): Initialize READ to 0 to force
store_read to allocate a buffer.
1997-06-18 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Get rid of device-block-size-is-power-of-2 check.
Tue Jun 3 17:18:35 1997 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (read_node): Don't assert that st_blocks is zero for
non-dir/file/long-symlink inodes.
Tue Nov 19 18:30:37 1996 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (read_node): If SBLOCK->s_creator_os != EXT2_OS_HURD,
set NP->author_tracks_uid to true.
Mon Nov 18 17:14:31 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ialloc.c (diskfs_alloc_node): Clear S_IPTRANS bit in ST->st_mode
instead of NP->istranslated.
* inode.c (read_node): Set S_IPTRANS bit in ST->st_mode (and clear
S_ITRANS) rather than NP->istranslated.
(write_node): Don't write S_IPTRANS to disk.
(diskfs_set_translator): Frob S_IPTRANS bit rather than
istranslated field.
Sat Nov 16 17:26:20 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): diskfs_isuid ->
idvec_contains.
Tue Nov 12 17:53:08 1996 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (diskfs_validate_flags_change): New function.
(write_node): Convert generic flags in ST->st_flags to ext2-
specific flags in DI->i_flags.
(read_node): Renamed from read_disknode; all callers changed.
Convert ext2-specific flags on disk to generic flags in ST.
[!UF_APPEND] (UF_APPEND): New macro (temporary).
[!UF_NODUMP] (UF_NODUMP): New macro (temporary).
[!UF_IMMUTABLE] (UF_IMMUTABLE): New macro (temporary).
<sys/stat.h>: New include.
Thu Oct 24 16:24:05 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (startup_children, runtime_children): New variables.
(startup_parents, runtime_parents): Variables removed.
(startup_argp, runtime_argp): Use new *_CHILDREN variables instead of
corresponding *_PARENT ones.
Wed Oct 9 13:30:15 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Return ports with
MACH_MSG_TYPE_COPY_SEND, not MACH_MSG_TYPE_MAKE_SEND.
Tue Oct 8 23:25:53 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): If st_size
indicates a lower value for NUM_FS_BLOCK, use it instead of the
value derived from st_blocks.
Mon Oct 7 15:48:49 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Typo.
Fri Oct 4 23:51:05 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Add security
check, and deactivate FILE_STORE if necessary.
Mon Sep 30 15:40:53 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Set *PORTS_TYPE.
Thu Sep 19 17:57:07 1996 Miles Bader <miles@gnu.ai.mit.edu>
* Makefile (HURDLIBS): Add store.
Wed Sep 18 15:28:32 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Remove CLASSES argument to store_parsed_open.
Use STORE_PARAMS variable to get result from parsing STORE_ARGP.
(diskfs_extra_version): Put `GNU Hurd' in here.
Fri Sep 13 00:15:56 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (diskfs_append_args): Renamed from diskfs_get_options.
Don't initialize *ARGZ & *ARGZ_LEN anymore, or deallocate on errors.
Append store args too.
* pager.c (file_pager_read_page:do_pending_reads, pager_unlock_page,
pending_blocks_write, diskfs_grow, find_block): Use filesystem blocks,
not device blocks, in block<->offset/size conversions.
* Makefile (ext2fs ext2fs.static): Add ../libstore/libstore.a.
1996-09-12 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (diskfs_disk_name): Renamed from STORE_NAME.
Wed Sep 11 12:59:28 1996 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (create_disk_pager): Create PAGER_BUCKET. Pass in new
args to diskfs_pager_setup (renamed from disk_pager_setup).
(disk_image): New variable.
(service_paging_request): Function removed.
(diskfs_shutdown_pager): Use DISKFS_DISK_PAGER instead of DISK_PAGER.
* ext2fs.h (disk_image): New declaration.
(sync_global_ptr): Use DISKFS_DISK_PAGER instead of DISK_PAGER.
* ext2fs.c (main, diskfs_reload_global_state): Use
DISKFS_DISK_PAGER instead of DISK_PAGER.
* ext2fs.c (main): Change store_parsed_get_name to store_parsed_name.
* storeinfo.c (diskfs_S_file_get_storage_info): Clone STORE before
remapping it.
Tue Sep 10 17:12:16 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Rewritten to use
store functions.
Mon Sep 9 11:10:11 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Use store fields instead of diskfs variables.
(store, store_parsed, store_name): New variables.
(free_page_bufs, free_page_bufs_lock): Variables removed.
(get_page_buf, free_page_buf): Functions removed.
<argp.h>, <hurd/store.h>: New includes.
* ext2fs.h (store_parsed, store_name): New declarations.
(get_page_buf, free_page_buf): Declarations removed.
* hyper.c <hurd/store.h>: New include.
* pager.c <hurd/store.h>: New include.
(file_pager_write_pager): Make BUF void *.
(file_pager_read_page): Make BUF void **, NEW_BUF void *, and
LENGTH size_t. Pass &LENGTH to store_read, not LENGTH.
(pending_blocks_write): Make PAGE_BUF void *, and LENGTH size_t.
Check amount written, and return EIO if it's wrong.
(disk_pager_read_page): Make BUF void **, and LENGTH size_t.
Check amount read, and return EIO if it's wrong.
(disk_pager_write_page): Make BUF void *, and LENGTH size_t.
Check amount written, and return EIO if it's wrong.
(pager_read_page, pager_read_page): Convert BUF to a pointer when
calling work functions.
(struct pending_blocks): Make BUF void *.
(free_page_bufs, free_page_bufs_lock): New variables.
(get_page_buf, free_page_buf): New functions.
Sun Sep 8 18:47:10 1996 Miles Bader <miles@gnu.ai.mit.edu>
* hyper.c (diskfs_readonly_changed): Use STORE->size.
(get_hypermetadata): Use STORE->size & STORE->block_size.
* pager.c (file_pager_read_page, pending_blocks_write,
disk_pager_read_page, disk_pager_read_page, disk_pager_write_page,
pager_report_extent, find_block, pager_unlock_page, diskfs_grow):
Use store_ operations instead of the old device ones, and some
store fields instead of globals.
* inode.c (read_disknode): Use STORE->log2_block_size instead of
LOG2_BLOCK_SIZE.
* ext2fs.h (store): New declaration.
* ext2fs.c (startup_parents): Use diskfs_store_startup_argp
instead of diskfs_std_device_startup_argp.
(startup_parents, startup_argp, runtime_parents, runtime_argp,
options, parse_opt, diskfs_get_options):
Define always, not just when EXT2FS_DEBUG is defined.
(parse_opt): Propagate our input to the first child argp.
(parse_opt, diskfs_get_options): Guard debug-specific bits with
#ifdef EXT2FS_DEBUG.
Thu Sep 12 16:41:20 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* Makefile (HURDLIBS): New variable.
(ext2fs ext2fs.static): Depend on $(library_deps) instead of
explicit list.
Fri Sep 6 16:03:11 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* ext2fs.c: Include <version.h>.
(diskfs_major_version, diskfs_minor_version, diskfs_edit_version):
Deleted variables.
(diskfs_server_version): New variable.
Thu Aug 29 16:59:51 1996 Miles Bader <miles@gnu.ai.mit.edu>
Changes from ufs/dir.c:
* dir.c (diskfs_lookup_hard): When setting ds->stat to EXTEND, set
ds->idx by looking at the size of the file. After successful
dirscanblock, record index where we finished in DP->dn->dir_idx.
Start searches at that index.
(dirscanblock): Size dirents correctly when mallocing it.
(diskfs_direnter_hard): Be more careful when sizing or resizing
dirents. Correctly set to -1 all the new entries we create after
realloc call.
* ext2fs.h (struct disknode): New member `dir_idx'.
* inode.c (diskfs_cached_lookup): Initialize DN->dir_idx.
* dir.c (diskfs_direnter_hard): Initialize OLDSIZE to quiet gcc.
Sun Aug 18 01:45:42 1996 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (file_pager_read_page): Use get_page_buf to get a free page.
(file_pager_read_page): Use free_page_buf to deallocate pages.
* ext2fs.c (get_page_buf): Return 0 if we can't allocate.
Thu Aug 15 14:55:01 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (diskfs_edit_version): Change to `1'.
(diskfs_version_extra): New variable.
* inode.c (read_disknode): Change assertion to allow non-zero
st_size for anything, but assert that st_blocks == 0 for any case
where we set allocsize to 0.
* truncate.c (diskfs_truncate): Allow any sort of node to have a
size without any blocks (as linux apparently does this sometimes
with devices).
Wed Aug 14 14:03:33 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (diskfs_minor_version): Change to `2'.
Tue Aug 13 15:11:42 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2_fs.h: Update to version from linux-2.0.12.
* ialloc.c (ext2_alloc_inode, diskfs_free_node): Pass SBLOCK as a
parameter to EXT2_FIRST_INO (v2.x change).
* hyper.c (get_hypermetadata): Use EXT2_INODE_SIZE instead of
sizeof (struct ext2_inode).
Deal with various version 2.x features.
* ext2fs.h (dino): Dont recalculate INODES_PER_BLOCK here.
(ext2_debug): redefine macro after including ext2_fs.h.
Mon Aug 12 13:48:17 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (diskfs_minor_version): Changed to `1'.
* inode.c (read_disknode): Don't set allocsize for in-inode symlinks.
(MAX_INODE_SYMLINK): New macro.
(write_symlink, read_symlink): New functions.
(diskfs_create_symlink_hook, diskfs_read_symlink_hook): New variables.
* truncate.c (diskfs_truncate): For in-inode symlinks, just frob
the size.
* ext2fs.h (__u32, __u16, __u8, __s32, __s16, __s8): New types.
* ext2_fs.h (u32, u16, u8, s32, s16, s8): All uses of these types
changed to have a leading `__', and the definitions removed.
* ext2_fs_i.h (u32, u16, u8, s32, s16, s8): All uses of these types
changed to have a leading `__'.
Mon Aug 12 11:18:37 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* hyper.c (diskfs_set_hypermetadata): Return an error code now.
Fri Aug 2 12:10:40 1996 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (diskfs_write_disknode): If WAIT is false, still record
the write for later, using record_global_poke.
Thu Aug 1 16:18:59 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2_fs.h (ext2_debug_flag): New decl.
(ext2_debug): Pay attention to EXT2_DEBUG_FLAG.
* ext2fs.c [EXT2FS_DEBUG] (options, ext2_debug_flag): New variables.
[EXT2FS_DEBUG] (parse_opt, diskfs_get_options): New functions.
[EXT2FS_DEBUG] (startup_parents, startup_argp, runtime_parents,
diskfs_runtime_argp): New variables.
[!EXT2FS_DEBUG] (startup_argp): New macro.
(main): Use STARTUP_ARGP instead of DISKFS_STD_DEVICE_STARTUP_ARGP.
* pager.c (diskfs_grow): Fix ext2_debug format strings.
* truncate.c (trunc_direct): Fix ext2_debug call.
Sat Jul 20 00:58:44 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.h (struct disknode): Remove debugging info.
(RECORD_LAST): Function removed.
(LAST_BUFSZ): Macro removed.
(enum last_act): Type removed.
* inode.c (diskfs_cached_lookup): Don't initialize debugging info.
* pager.c (file_pager_read_page, file_pager_write_page,
pager_unlock_page, diskfs_grow): Don't record debugging info.
* truncate.c (diskfs_truncate): Likewise.
* pager.c (file_pager_read_page): Set
NODE->dn->last_page_partially_writable if we return such a page.
Fri Jul 19 15:02:24 1996 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (diskfs_grow): Rename OLD_END_BLOCK to END_BLOCK.
Correctly determine whether to set DN->last_page_partially_writable
after allocating new blocks.
* pager.c (file_pager_read_page, file_pager_write_page): Pass
NODE->dn, not &NODE->dn to RECORD_LAST.
Mon Jul 15 18:00:26 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.h (struct disknode): Add debugging info.
(RECORD_LAST): New function.
(LAST_BUFSZ): New macro.
(enum last_act): New type.
* pager.c (pager_unlock_page, diskfs_grow, file_pager_read_page,
file_pager_write_page): Record debugging info.
* truncate.c (diskfs_truncate): Likewise.
* inode.c (diskfs_cached_lookup): Initialize debugging info.
* pager.c (file_pager_read_page): Initialize *WRITELOCK to 0.
Tue Jun 25 12:22:21 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.h (sync_global): Renamed from sync_global_data. Add WAIT
flag. Don't call diskfs_set_hypermetadata.
(alloc_sync): Call diskfs_set_hypermetadata instead of sync_global_data.
(sync_super_block): Function removed.
* hyper.c (diskfs_readonly_changed): No longer clear the clean bit.
(diskfs_set_hypermetadata): Work correctly.
* truncate.c (diskfs_truncate): Add call diskfs_check_readonly to
clear clean bit.
* inode.c (diskfs_cached_lookup): Use diskfs_check_readonly
instead of diskfs_readonly.
* dir.c (diskfs_lookup_hard, diskfs_dirempty): Likewise.
* pager.c (diskfs_shutdown_pager): Don't shutdown the disk pager,
just sync it.
(diskfs_sync_everything): Call sync_global instead of pokel_sync.
(final_sblock): Variable removed.
(diskfs_grow): Add call diskfs_check_readonly to clear clean bit.
Mon Jun 24 17:14:25 1996 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (check_high_bits, diskfs_validate_owner_change,
diskfs_validate_group_change, diskfs_validate_mode_change,
diskfs_validate_author_change): New functions.
(write_node): For non-hurd filesystems, assert that no hurd
extensions should be used.
Thu Jun 20 22:36:23 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Rename diskfs_device_startup_argp to
diskfs_std_device_startup_argp.
Sat Jun 15 15:56:01 1996 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (read_disknode, write_inode): Use hurd-specific fields
only on a hurd filesystem.
Fri May 10 09:32:43 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
* inode.c (diskfs_set_statfs): Fix one reference to old name of ST
member.
Thu May 9 11:52:20 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
* inode.c (diskfs_set_statfs): Expect and fill in new format
statfs buffer.
* Makefile (ext2fs ext2fs.static): s/ioserver/iohelp/g.
* ext2fs.h: ioserver.h -> iohelp.h.
Tue May 7 16:22:56 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Rewrite for new
interface.
Tue Apr 30 12:51:09 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
* Makefile (targets): Renamed from `target'.
Fri Apr 26 16:10:19 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
* Makefile (makemode): Now `servers'.
(targets): Renamed from `target'; now include ext2fs.static.
(ext2fs.static-LDFLAGS): Renamed from `LDFLAGS'.
(ext2fs.static): Depend on same things as `ext2fs'.
(include ../Makeconf): Must come before dependency information.
Wed Apr 17 13:30:49 1996 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (diskfs_write_disknode): Only sync DI if WAIT.
* dir.c (diskfs_lookup_hard): Set atime appropriately, and sync
the new atime if we are running synchronously (!).
(diskfs_dirempty): Likewise.
(diskfs_direnter_hard): Set mtime appropriately.
(diskfs_dirremove_hard): Likewise.
(diskfs_dirrewrite_hard): Likewise.
Thu Apr 4 18:51:19 1996 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (diskfs_cached_lookup): Renamed from iget; all uses updated.
Initialize the CACHE_ID field in the new node.
* ext2fs.h (struct disknode): Get rid of NUMBER field; all references
replaced by references to the CACHE_ID field in the corresponding node.
Fri Mar 29 11:03:58 1996 Miles Bader <miles@gnu.ai.mit.edu>
* dir.c (diskfs_null_dirstat): New function.
(diskfs_lookup_hard, diskfs_direnter, diskfs_dirremove_hard,
diskfs_dirrewrite_hard): Renamed from versions without `_hard' suffix.
Get rid of stuff now done by diskfs.
* ext2fs.c (main): Pass new argument to argp_parse.
Tue Mar 19 17:52:04 1996 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (pager_unlock_page, diskfs_grow): Try to make the logic
a bit simpler and more robust.
Fri Feb 16 17:05:01 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Check error return from diskfs_init_diskfs.
Tue Feb 6 14:49:40 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.h (ext2_warning): Make a declaration, not a macro.
* msg.c (ext2_warning): Rename from _ext2_warning; don't take (or
print) a function argument any more.
* dir.c (diskfs_get_directs): When BUFSIZ is 0, allocate enough
extra space over the directory size to account for the worst case
difference between the ext2 and canonical formats.
Sat Feb 3 11:27:07 1996 Miles Bader <miles@gnu.ai.mit.edu>
* hyper.c (get_hypermetadata, diskfs_readonly_changed): Use
ext2_warning to print warnings instead of error().
* msg.c (_ext2_warning): Include `warning:' in message.
Sat Feb 3 06:10:43 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* hyper.c: Fixed handling of the filesystem `clean bit'.
(ext2fs_clean): New boolean variable.
(get_hypermetadata): Set it iff the clean bit is set on entry.
If not clean, complain and force read-only.
(diskfs_set_hypermetadata): Set clean bit only if ext2fs_clean is set.
(diskfs_readonly_changed): Complain if going writable and clean
bit clear.
* ext2fs.c: Include string.h for strerror decl.
Tue Jan 30 22:25:19 1996 Miles Bader <miles@gnu.ai.mit.edu>
* hyper.c (get_hypermetadata): Don't return any error value, just
panic if we can't read the superblock.
* ext2fs.c (main): Move warp_inode() inline. Make sure root inode
is really there. Don't check return value from get_hypermetadata.
(warp_inode): Function removed.
* ext2fs.h (get_hypermetadata): Returns void now.
Tue Jan 30 17:04:41 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* pager.c (file_pager_read_page, file_pager_write_page): Check for
a page offset beyond the allocsize and return EIO.
Wed Jan 17 15:11:55 1996 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Calculate the
right value for *RUNS_LEN.
Tue Jan 16 17:37:00 1996 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (diskfs_file_update): Ext2fs doesn't require that the
last block in the file always be allocated, so don't.
(diskfs_grow, pager_unlock_page): Don't set last_block_allocated.
* ext2fs.h (struct disknode): Get rid of last_block_allocated field.
* inode.c (read_disknode): Don't set last_block_allocated.
* truncate.c (diskfs_truncate): Likewise.
* Makefile (LDFLAGS): Add -static.
Mon Jan 15 10:25:19 1996 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (pager_unlock_page, diskfs_grow): Leave things in a
slightly more consistent state when block allocation errors happen.
* dir.c (diskfs_direnter): Don't include the terminating '\0' in
on-disk directory entry names.
* inode.c (diskfs_node_norefs): When losing our in-core copy of an
inode, remember which indirect blocks still have to be written.
* pokel.c (pokel_inherit, pokel_finalize): New functions.
* ext2fs.h (pokel_inherit, pokel_finalize): New declarations.
* dir.c (diskfs_lookup): Patch from ufs/dir.c: If we are returning
an error, then set the dirstat to be ignored by drop_dirstat.
Sun Jan 14 13:17:33 1996 Miles Bader <miles@gnu.ai.mit.edu>
* ialloc.c (diskfs_alloc_node): Set NP->istranslated to 0.
* inode.c (write_node): If NP isn't translated, force
DI->i_translator to 0.
* getblk.c (inode_getblk, block_getblk): Set dn_set_mtime too.
Sat Jan 6 11:57:26 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* pager.c (pager_bucket): Made global.
(create_disk_pager): Pass MAY_CACHE to disk_pager_setup.
* ext2fs.c (main): Don't map in disk image here; create_disk_pager
now does it.
Fri Jan 5 16:57:54 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* ext2fs.h: Declare create_disk_pager.
Thu Jan 4 18:46:40 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* ext2fs.h (disk_pager, disk_pager_port, disk_image,
create_disk_pager): Decls removed.
Include hurd/diskfs-pager.h instead.
* pager.c (create_disk_pager): Use disk_pager_setup.
Tue Nov 14 14:59:32 1995 Miles Bader <miles@gnu.ai.mit.edu>
* dir.c (dirscanblock): Apply mib's changes to ufs/dir.c.
Sat Nov 4 20:01:01 1995 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Add FLAGS argument.
Wed Nov 1 20:09:59 1995 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Add FLAGS arg to diskfs_startup_diskfs call.
Mon Oct 23 17:49:16 1995 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (diskfs_get_translator, diskfs_set_translator): Only
support these if the filesystem's creator-os is `hurd'.
(read_disknode): Only check the i_translator field if the
filesystem's creator-os is `hurd'.
Fri Oct 20 19:18:16 1995 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.h (MS_RDONLY, MS_NOSUID, MS_NODEV, MS_NOEXEC,
MS_SYNCHRONOUS, MS_REMOUNT, S_APPEND, S_IMMUTABLE, IS_APPEND,
IS_IMMUTABLE): Macros deleted.
Thu Oct 19 19:15:15 1995 Miles Bader <miles@gnu.ai.mit.edu>
* pager.c (create_disk_pager, diskfs_get_filemap,
pager_clear_user_data): Don't use the p field in a upi.
(diskfs_get_filemap): Update/initialize the max_prot field.
Add the prot arg.
* ext2fs.h (struct user_pager_info): Add max_prot field, remove p.
* pager.c (drop_pager_softrefs): Declare PAGER, not UPI.
(enable_caching): The disk node is upi->node, not upi->np.
(diskfs_enable_pagers): Function removed.
* inode.c (read_disknode): Add DN and OFFSET variables. Use
log2_block_size to mask instead of doing a modulo with block_size.
* hyper.c (diskfs_readonly_changed): Typo.
(allocate_mod_map): Declare ERR; OLD_MOD_MAP_SIZE --> MOD_MAP_SIZE.
* dir.c (diskfs_lookup, diskfs_dirempty): Give diskfs_get_filemap
a protection arg.
* truncate.c (force_delayed_copies): Ditto.
Wed Oct 18 21:00:28 1995 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.h (struct disknode): Replace fileinfo field with pager.
* inode.c (diskfs_node_norefs, iget): Use pager field, not fileinfo.
* pager.c (diskfs_get_filemap_pager_struct, flush_node_pager,
diskfs_file_update, pager_clear_user_data, drop_pager_softrefs): Ditto.
* truncate.c (enable_delayed_copies, force_delayed_copies): Ditto.
* ext2fs.c (main): Always include VM_PROT_WRITE in max prot.
* hyper.c (diskfs_readonly_changed): Change the protection of
DISK_IMAGE to reflect the new state.
* pager.c (diskfs_enable_pagers): New function.
Tue Oct 17 21:16:04 1995 Miles Bader <miles@gnu.ai.mit.edu>
* pokel.c (_pokel_exec, pokel_flush): New functions.
(pokel_sync): Use _pokel_exec to do the work.
* pager.c (flush_node_pager): New function.
* ext2fs.h (pokel_flush, flush_node_pager): New declarations.
* hyper.c (allocate_mod_map): New function (from get_hypermetadata).
(zeroblock, modified_global_blocks): Define (were common).
(get_hypermetadata): Deallocate ZEROBLOCK if necessary. Use
allocate_mod_map to allocate MODIFIED_GLOBAL_BLOCKS.
(diskfs_readonly_changed): New function.
* main.c (main): Move stuff into get_hypermetadata.
Writable init code moved to diskfs_readonly_changed.
* inode.c (diskfs_node_reload): New function.
(iget, read_disknode): Code to set allocsize and the last_* fields
moved from iget to read_disknode.
* ext2fs.h (disk_pager): Type changed to struct pager.
(sync_global_ptr): Use DISK_PAGER, not DISK_PAGER->p.
* pager.c (create_disk_pager): Store the actual pager into DISK_PAGER.
* ext2fs.c (main): Use DISK_PAGER directly, not ->p.
* inode.c (iget): Ditto.
* pager.c (diskfs_shutdown_pager, diskfs_sync_everything): Ditto.
Mon Oct 16 15:23:25 1995 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (diskfs_lost_hardrefs): #ifdef'd out contents removed.
Fri Oct 13 17:50:23 1995 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Use argp for parsing.
(usage, USAGE, SHORT_OPTS, long_opts, console_stdio): Removed
Thu Oct 12 18:16:00 1995 Miles Bader <miles@gnu.ai.mit.edu>
* hyper.c (get_hypermetadata): Use diskfs device functions &
variables instead of our own.
* ext2fs.h (device_arg, device_name, device_port, device_start,
device_size, device_block_size): Declarations removed.
* ext2fs.c (printf, _ext2_error, _ext2_panic, _ext2_warning):
Functions moved to msg.c
* msg.c: New file.
(printf, _ext2_error, _ext2_panic, _ext2_warning): Funcs from ext2fs.c.
* Makefile (SRCS): Remove devio.c, add msg.c.
Sat Oct 7 20:47:19 1995 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): run_elem_t --> off_t.
* ext2fs.c (diskfs_init_completed): Func deleted (now in libdiskfs).
Fri Oct 6 17:24:57 1995 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): Change type of
ADDRESSES to off_t **, and add BLOCK_SIZE parameter.
Wed Oct 4 20:02:34 1995 Miles Bader <miles@gnu.ai.mit.edu>
* inode.c (diskfs_set_statfs): fsys_stb_bsize -> fsys_stb_iosize.
fsys_stb_fsize -> fsys_stb_bsize.
Wed Sep 27 20:07:53 1995 Miles Bader <miles@gnu.ai.mit.edu>
* ext2fs.c (main): Use diskfs routines to open the device.
Support both file and mach devices. Move the parse function here.
(parse_opt): Move into main (as a nested function).
* ext2fs.h (device_arg, device_start): New declarations.
* devio.c (dev_read_sync, dev_write_sync): Offset the address to
which we're doing i/o with DEVICE_START.
Tue Sep 26 18:39:58 1995 Miles Bader <miles@gnu.ai.mit.edu>
* storeinfo.c (diskfs_S_file_get_storage_info): New function.
* Makefile (SRCS): Add storeinfo.c.
Fri Sep 15 14:21:18 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* truncate.c (trunc_indirect): Only record an indirect block as
being modified when it actually is.
* truncate.c (diskfs_truncate): Use the new truncate functions.
(poke_pages): Gratuitous cosmetic changes.
(trunc_direct): Rewritten, new args.
(trunc_indirect): Rewritten, new args, now more general to support
all the various indirection levels.
(trunc_triple_indirect, trunc_double_indirect,
trunc_single_indirect): New functions.
(struct free_block_run): New structure.
(free_block_run_finish, free_block_run_free_ptr,
free_block_run_add, free_block_run_init, _free_block_run_flush):
New functions.
(trunc_dindirect, trunc_tindirect): Functions deleted.
(DIRECT_BLOCK, INDIRECT_BLOCK, DINDIRECT_BLOCK, TINDIRECT_BLOCK):
Macros deleted.
* getblk.c (block_getblk, ext2_getblk): u32 --> block_t.
* balloc.c (ext2_new_block): Ditto.
* hyper.c (get_hypermetadata): Ditto.
* pager.c (file_pager_write_page): Ditto.
Wed Sep 13 12:30:23 1995 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
* dir.c (diskfs_lookup): Don't attempt to lock NP if NPP is not
set. Don't even set NP if NPP is not set; use INUM as "lookup
succeeded flag" instead. Lookups for REMOVE and RENAME now *must*
set NPP.
Tue Sep 12 11:03:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* pokel.c (pokel_init): Initialize the free_pokes field.
(pokel_add): Assert that this malloc should succeed.
(pokel_sync): Don't hold POKEL's spin lock while syncing.
* ialloc.c (diskfs_alloc_node): Check for a non-zero ALLOCSIZE.
Tue Sep 5 16:59:40 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* pager.c (diskfs_pager_users): Ignore the disk pager when seeing
if there are any active pagers.
(diskfs_shutdown_pager): shutdown_one gets passed a pager, not a upi.
(diskfs_sync_everything): sync_one gets passed a pager, not a upi.
Sun Sep 3 17:28:13 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* ext2fs.c (thread_cancel): Removed.
Fri Aug 25 14:37:32 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* Makefile (ext2fs): Put libports in the right place in the
linking order.
Thu Aug 24 10:34:15 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* Makefile (ext2fs): Put all dependencies here.
(HURDLIBS): Removed.
Tue Aug 22 19:39:06 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* Makefile (HURDLIBS): Add libshouldbeinlibc.
Remove rules for error.o.
Fri Jul 21 17:51:33 1995 Michael I Bushnell <mib@geech.gnu.ai.mit.edu>
* pager.c (diskfs_get_filemap): Free initial reference created by
pager_create.
* pager.c (diskfs_get_filemap): Avoid race with simultaneous
termination by looping until we win.
(pager_clear_user_data): Only clear UPI->np->dn->fileinfo if it
still points to us.
Thu Jul 6 15:33:24 1995 Michael I Bushnell <mib@duality.gnu.ai.mit.edu>
* Makefile: Removed dependencies that are now automatically
generated.
Thu Jul 6 13:36:25 1995 Miles Bader <miles@geech.gnu.ai.mit.edu>
* pager.c (diskfs_pager_users): New function.
Tue Jun 27 13:08:33 1995 Michael I Bushnell <mib@duality.gnu.ai.mit.edu>
* pager.c (pager_unlock_page): Declare BLOCK volatile.
Sat Jun 24 17:59:36 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* Makefile (HURDLIBS): Add libihash.
* ext2fs.c (thread_cancel): Dummy function.
* dir.c (diskfs_direnter): Move assignment out of test.
(diskfs_get_directs): Fix print-format types.
* ialloc.c (diskfs_free_node): Fix print-format types.
* pager.c (thread_function): New function.
(create_disk_pager): Make a new thread to service paging requests.
* ext2fs.c (main): Have the initial thread die when it's done, leaving
other thread to do the work.
* pager.c (pager_bucket): New variable.
(pager_list_lock, file_pager_list): Variables deleted.
(create_disk_pager): Create pager_bucket.
(create_disk_pager, diskfs_get_filemap): Pass pager_bucket to
pager_create.
(pager_traverse): Function deleted.
(diskfs_get_filemap, pager_clear_user_data): Don't add/remove UPI
to/from the pager list, as there isn't any.
(diskfs_shutdown_pager, diskfs_sync_everything): Use
ports_bucket_iterate on pager_bucket to go through all the pagers,
instead of pager_traverse.
(diskfs_file_update, pager_traverse, allow_pager_softrefs,
drop_pager_softrefs): Change pager [un]ref calls to use the new ports
ref calls directly instead.
(pager_dropweak): New function (does nothing).
* ext2fs.h (struct user_pager_info): Remove the next & prevp fields.
* truncate.c (force_delayed_copies, enable_delayed_copies): Change
pager [un]ref calls to use the new ports ref calls directly instead.
* inode.c (diskfs_lost_hardrefs): Ditto.
* inode.c (diskfs_node_iterate): New function.
(write_all_disknodes): Re-implemented using diskfs_node_iterate.
Wed Jun 14 16:19:49 1995 Michael I Bushnell <mib@duality.gnu.ai.mit.edu>
* inode.c (diskfs_get_translator): Conform to new memory usage
semantic.
Fri May 19 20:56:51 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* ext2fs.c (main): Use options_parse & diskfs_standard_startup_options
to do command line options parsing.
(long_opts): Was `options'. Most things removed, as
they're now handled by libdiskfs.
(parse_opt): New routine to deal with our few meagre remaining
options in the approved options_parse manner.
Mon May 15 15:55:49 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* ext2fs.c (main, usage, options): Add --writable & --nosync options.
Sat May 13 20:04:55 1995 Miles Bader <miles@duality.gnu.ai.mit.edu>
* inode.c (diskfs_set_statfs): Set st->fsys_stb_bsize, not _fsize,
to the block size.
Sat May 13 05:02:59 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* Makefile (OBJS): Remove exec_server_image.o.
(exec_server_image.o): Rule removed.
Fri May 12 15:23:02 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* ext2fs.c (main): Add an optional argument to the --sync option
that lets the user specify an initial sync interval.
Thu May 11 13:30:06 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* pager.c (pager_unlock_page): Give an explanation of why the file
system will shortly crash.
* balloc.c (ext2_free_blocks, ext2_new_block): Get rid of the
CHECK_STRICT variable, and just always do the tests it controlled.
* ext2fs.h: Get rid of the CHECK_STRICT variable.
* ext2fs.h (ext2_error, ext2_warning, ext2_panic, all callers changed):
Make these into macros that automagically supply the caller's
function name, and rename the original functions (which these
macros call) to have an underline prefix.
* ext2fs.c (ext2_error, ext2_warning, ext2_panic): Rename to add
the underline prefix. Also rearrange a bit to hold the lock
around the use of the global message buffer.
* ext2fs.c (main): Enable the bootstrap code.
* inode.c (read_disknode): Make st_blksize larger: 2 * pagesize.
Wed May 10 14:03:34 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* getblk.c (block_getblk, inode_getblk): Return ENOSPC instead of
EIO when we can't allocate a new block.
* bitmap.c (find_next_zero_bit): Fix stupid typos (present in the
original linux source I copied this function from!) which were
causing occasional garbage results.
Tue May 9 18:08:41 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
* ext2fs.h (DONT_CACHE_MEMORY_OBJECTS): Don't define this any
more, as the bugs we were using it to catch are supposedly gone :-|
|