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
|
2005-07-12 Marcus Brinkmann <marcus@gnu.org>
* pager.c (diskfs_get_filemap): Initialize upi->max_prot to PROT.
2003-08-09 Marcus Brinkmann <marcus@gnu.org>
* fat.h: Include <byteswap.h>.
(read_dword) [BYTE_ORDER == BIG_ENDIAN]: Use bswap_32 to swap bytes.
(write_dword) [BYTE_ORDER == BIG_ENDIAN]: Likewise.
(read_word) [BYTE_ORDER == BIG_ENDIAN]: Use bswap_16 to swap bytes.
(write_word) [BYTE_ORDER == BIG_ENDIAN]: Likewise.
2003-08-03 Marco Gerards <metgerards@student.han.nl>
* fatfs.h (struct disknode): New member DIRNODE.
* inode.c (read_node): Added assertion to be sure the directory
can always be found. Add directory dependancy to node by
initializing DIRNODE and holding a reference.
(diskfs_node_norefs): Release reference to DIRNODE.
(write_node): Don't use diskfs_cached_lookup to lookup the
directory, use DIRNODE instead and lock DP. Don't use diskfs_nput,
use mutex_unlock instead.
(diskfs_alloc_node): Add directory dependancy to node by
initializing DIRNODE and holding a reference.
2003-08-05 Marcus Brinkmann <marcus@gnu.org>
* fat.c (fat_read_sblock): Catch error from store_read.
2003-08-03 Marco Gerards <metgerards@student.han.nl>
* inode.c (read_node): Fix typo.
2003-08-01 Marco Gerards <metgerards@student.han.nl>
* node-create.c: New file.
* Makefile (SRCS): Added node-created.c.
* dir.c: Include <hurd/fsys.h>.
(diskfs_direnter_hard): Initialize a new block with zeros. Enter
direntry and setup the virtual inode. Also handle directories
correctly.
(diskfs_rewrite_hard): Function rewritten.
(diskfs_dirempty): Change logic to test if a file was deleted.
* fat.c (fat_extend_chain): Unlock spin_lock when returning from
function. Set dn->last to 0 when deallocating the complete
file. Update dn->last when not deallocating the complete file. Set
dn->first to zero when the complete file was deallocated. Also
update dn->length_of_chain to the new amount of clusters in the
chain.
* main.c (diskfs_hard_readonly): Remove global variable.
2003-07-29 Jeff Bailey <jbailey@nisa.net>
* fatfs.h (LOG2_BLOCKS_PER_CLUSTER): Fix typo.
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.
|