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
|
2003-07-17 Marcus Brinkmann <marcus@gnu.org>
* pager.c (find_cluster): Round to cluster size rather than adding
cluster size.
2003-07-14 Marco Gerards <metgerards@student.han.nl>
* fat.c (fat_read_sblock): Don't test if the root dir size is a
multiple of sectors_per_cluster. Reported by Barry deFreese
(bddebian@cox.net).
* fatfs.h (LOG2_BLOCKS_PER_CLUSTER): New macro.
(FAT_FIRST_CLUSTER_BLOCK): Likewise.
(fat_first_cluster_byte): Macro removed.
* inode.c (read_node): Correctly setup diskfs_root_node for FAT32
filesystems.
* pager.c (fat_getcluster): Check for reading beyond allocsize
correctly for file systems with a clustersize > vm_page_size.
(file_pager_read_small_page): Don't use byte offsets when
calculating the block.
(file_pager_read_huge_page): Likewise.
(pending_clusters_write): Likewise.
(file_pager_write_small_page): Likewise.
(STAT_INC): Cast to void to suppress warning.
2003-04-26 Marco Gerards <metgerards@student.han.nl>
* dir.c (diskfs_get_directs): Consider ENTRY when adding
"." and ".." for the rootnode.
* inode.c (read_node): Use ifind instead of diskfs_cached_lookup
and do not use diskfs_nput anymore.
* main.c (diskfs_S_fsys_getfile): New function.
2002-10-06 Marcus Brinkmann <marcus@gnu.org>
* main.c (diskfs_server_version): Set to HURD_VERSION.
* dir.c (dirscanblock): Always emulate "." and ".." for the root
dir, even on FAT32.
(diskfs_get_directs): Likewise. New variable DOTDOT. Set EP to
DOT or DOTDOT when approriate. Implement inode number generation
with vi_rlookup.
Submitted by Marco Gerards <mg@friaco.nl>.
* main.c (fetch_root): Implement this for FAT32.
Submitted by Marco Gerards <mg@friaco.nl>.
* fatfs.h: Renamed prototype from fat_next_cluster to
fat_get_next_cluster.
* fat.c (fat_extend_chain): Replace CLUSTERS_PER_CHAIN with
CLUSTERS_PER_TABLE and LOG2_CLUSTERS_PER_CHAIN with
LOG2_CLUSTERS_PER_TABLE.
(fat_getcluster): Likewise.
(fat_truncate_node): Likewise.
Submitted by Marco Gerards <mg@friaco.nl>.
* fat.c (fat_get_freespace): New function.
* fat.h: New prototype for fat_get_freespace.
* inode.c (diskfs_set_statfs): Set ST->f_bfree and ST->f_bavail.
Submitted by Marco Gerards <mg@friaco.nl>.
* fatfs.h: New prototypes for fs_uid and fs_gid.
New prototype for refresh_node_stats.
* inode.c (read_node): Set ST->st_uid to fs_uid and ST->st_gid to
fs_gid.
(refresh_node_stats): New function.
* main.c: New variables default_fs_uid, default_fs_gid, fs_uid, fs_gid.
Include <argz.h>
(options): New variable.
(startup_children): Likewise.
(startup_argp): Likewise.
(runtime_children): Likewise.
(runtime_argp): Likewise.
(diskfs_runtime_argp): Likewise.
(parse_opt): New function.
(main): Set default_fs_uid, default_fs_gid, fs_uid and fs_gid.
Pass startup_argp to diskfs_init_main.
Submitted by Marco Gerards <mg@friaco.nl>.
* main.c (read_sblock): Move to ...
* fat.c (read_sblock): ... here and rename to fat_read_sblock. New
variable READ. Don't use disk_image but access store directly.
(fat_read_sblock): Remove check for large clusters.
* fat.c: Include <time.h>
Submitted by Marco Gerards <mg@friaco.nl>.
* fatfs.h (struct user_pager_info): Rename DISK in enum pager_type
to FAT.
(disk_image): Rename to fat_image and make extern.
(host_name, mounted_on): Remove cruft.
(sblock, dr_root_node): Make extern.
* pager.c (create_disk_pager): Rename to create_fat_pager. Create
the pager with the type FAT and size of the FAT, not the whole
disk. Use fat_image instead disk_image.
(pager_read_page): Replace DISK with FAT and call
fat_pager_read_page instead disk_pager_read_page.
(pager_write_page): Replace DISK with FAT and call
fat_pager_write_page instead disk_pager_write_page.
(pager_report_extent): Replace DISK with FAT and return new size.
(disk_pager_read_page): Rename to fat_pager_read_page. Adjusted
to restrict to new size. Use memset instead bcopy. dev_end
renamed to fat_end. Add beginning of FAT to page.
(disk_pager_write_page): Rename to fat_pager_write_page. Adjusted
to restrict to new size. dev_end renamed to fat_end. Add
beginning to FAT to PAGE.
(file_pager_read_huge_page): Use memcpy instead bcopy.
(pending_clusters_write): Likewise.
* fat.c (fat_write_next_cluster): Don't add the beginning of FAT
to FAT_ENTRY_OFFSET. Reflect renaming of disk_image to fat_image.
(fat_get_next_cluster): Likewise.
* main.c (main): Call fat_read_sblock, not read_block. Call
create_fat_pager instead create_disk_pager, and do this only after
reading the superblock.
* main.c (fetch_root): Use memset, not bzero.
(read_sblock): Use memcpy, not bcopy.
* dir.c (diskfs_get_directs): Replace bcopy with memcpy.
2002-04-15 Marcus Brinkmann <marcus@gnu.org>
* dir.c (diskfs_get_directs): Count the special cased DOT and
DOTDOT directories for root directory nodes in FAT12 and FAT16
file systems.
* dir.c (dirscanblock): Determine the parent inode correctly.
Submitted by Marco Gerards <mg@friaco.nl>.
* inode.c (read_node): Add VK.dir_offset to BUF before doing the
pointer conversion.
(write_node): Likewise.
Submitted by Marco Gerards <mg@friaco.nl>.
* inode.c (write_node): Save the modification time as write time.
Submitted by Marco Gerards <mg@friaco.nl>.
* fat.h: Add prototype for fat_from_epoch().
Submitted by Marco Gerards <mg@friaco.nl>.
* inode.c (read_node): For the root dir of a FAT12/16 file system,
set allocsize to size of the root directory region.
(read_node): For files, round up to a full cluster multiple.
Reported by Marco Gerards <mg@friaco.nl>.
2000-05-05 Marcus Brinkmann <marcus@gnu.org>
* Initial release.
|