summaryrefslogtreecommitdiff
path: root/ChangeLog
blob: 8aa4197da38dbebab75ea60988d7185bf3bdb46b (plain)
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
2013-07-05   Cyril Roelandt  <tipecaml@gmail.com>

	* tarfs.c (tarfs_parse_opts): Gracefully handle the errors using
	argp_error instead of error.

2006-03-08  Ben Asselstine  <benasselstine@gmail.com>

	* tar.c (tar_header2stat): Correctly setting `st_blocks' of ST.


2006-03-07  Ben Asselstine  <benasselstine@gmail.com>

	* store-gzip.c (read_next): remove static from nested
	  function declaration.
	* tarfs.c (sync_archive): Likewise.
	(read_archive): Likewise.
	* zipstores.c (do_write): Likewise.
	* tar.c (read_header): Correctly handle archive names and
	archive link names when they are exactly NAMSIZ characters long.
	* tarfs.c (add_header): Likewise.
	* TODO: Removed `ustar-all-quickest.tar' which passes now.


2002-12-04

	* tarlist.c (tar_put_item): Fixed a bug in placing "foo/bar".
	* tar.c (tar_make_header): Add a trailing '/' to the name if it's
	  a directory.
	* fs.c (fs_make_node): Duplicate NAME.
	  (fs_unlink_node): Don't free () anything.
	  (fs_free_node): New function.
	  (_make_node): Always set st_fstype to FSTYPE_TAR.
	* tarfs.c (tarfs_unlink_node): Free NODE only once it has been
	  successfully unlinked.
	* netfs.c (netfs_S_file_syncfs): New stub that doesn't lock
	  the node passed by the user.

2002-12-03

	* tarfs.c (tarfs_add_header): In case of "inconsistent tar archive",
	  call tarfs_create_node () to create the missing node.
	* netfs.c (fs_unlink_node): Lock netfs_node_refcnt_lock before
	  accessing node->references.
	  (fs_unlink_node): Don't call netfs_nput ().

2002-11-26

	* tarfs.c (tarfs_sync_fs::tar_write): Check whether we need to
	  call open_store () before actually calling store_write ().
	* netfs.c (netfs_attempt_mkdir): Don't lock & ref the newly created
	  directory; don't unlock DIR.
	* cache.c (__cache_set_size): New function.
	  (__cache_synced): New function.
	  (cache_cache): Call __cache_set_size () if necessary.
	  (cache_write): Use __cache_set_size () and __cache_synced ().

2002-11-19

	* tarfs.c (tarfs_set_options): Initialize err.
	* fs.c (fs_make_node): Return EEXIST if the node already exists.
	  (_make_node): Check whether M denotes a directory.
	* netfs.c (netfs_attempt_chmod): Fixed typo.
	  (netfs_attempt_lookup): Lock node on success.

2002-11-13

	* fs.c (fs_link_node, fs_link_node_path): Update nn_translated so
	  that lookups of symlink gets redirected to their target
	  (ie. "cat link" shows link's target contents, *not* link's target
	  path).
	* zipstores.c (ZIP (open)): Do not read gzip header if the file
	  is empty.
	  (ZIP (stream_read)): Do nothing if the file is empty.
	  (ZIP (read)): Initialize err to 0.
	* store-gzip.c (gzip_write_header): New function.
	* cache.c (cache_read): Before accessing blocks[block], make sure
	  BLOCK is not larger that BLOCKS_SIZE.
	* zipstore.c (ZIP (read)): Likewise.
	* tarfs.c (tarfs_init): Don't forget to call cache_init ().

2002-11-09

	* tarfs.c (tarfs_set_options): Close and reopen file when mode
	  has changed.
	* cache.c (fetch_block): Use "orig_size" instead of the current node
	  size when calculating the amount of data to be read.
	* zipstores.c (fetch_block): Likewise.
	* cache.c (cache_write): Don't fetch_block() if beyond last available
	  block on disk.
	  (cache_set_size): Check whether SIZE is 0.
	  (cache_write): Fixed the computation of WRITE.
	* zipstores.c (ZIP (write)): Likewise.

2002-11-06

	* cache.c (cache_set_size): Don't allocate blocks here.
	  (alloc_block): New function.
	  (cache_init): New function.
	* tarfs.c (read_from_file): New function.
	  (__tar_file_lock): New variable used throughout the thing.
	* netfs.c (netfs_S_io_map): New function.

2002-11-05

	* netfs.c (netfs_attempt_chmod): Don't remove the FMT bits.
	* fs.c (fs_make_node): Make sure the FMT bits are set.

2002-11-04

	* tarfs.c (tarfs_create_node): Call cache_create ().
	* cache.c (cache_write): Call cache_set_size () if the node has been
	  synced.
	  (cache_write): Allocate new blocks here.

2002-10-24

	* zipstores.c (ZIP (set_size)): Do not allocate new blocks here.
	  (ZIP (write)): Allocate new blocks here.
	  (struct ZIP (object)): zip_orig_blocks_size: New field.
	  (ZIP (traverse)): Renamed to "traverse".
	* fs.c (_find_node): Look for '.' and '..'.
	* tarfs.c (tarfs_add_header): Complain if a node already exists.
	* cache.c: Changed cache_read/cache_write prototypes to make them
	  similar to those of store_read/store_write.

2002-10-22

	* fs.c (fs_dir_first_entry, fs_dir_next_entry): New functions.
	* tarlist.c: New file.
	* tarfs.c: Moved the tar list mgmt functions to tarlist.c.
	* tarfs.h: Added tarlist.c prototypes.
	* cache.c: Added locks.

2002-10-21

	* zipstores.c: Moved gzip-specific code to store-gzip.c (CRC, etc.).
	* store-gzip.c (gzip_write_suffix): New function.
	* testfs.sh: New file.

2002-10-20

	* zipstores.c (struct stream_state): Added a lock.
	  (struct ZIP (object)): Added a lock for the cache.
	  (ZIP (set_size)): Also set store->end and store->wrap_src and
	  runs[0].length.

2002-10-19

	* zipstores.c (ZIP (stream_write)): Increment write's file_offs
	  *only* after having actually written things.
	* libstore.diff: Use size_t instead of off_t/store_offset_t for
	  the NEWSIZE parameter.

2002-10-17

	* zipstores.c (enum status): STATUS_IDLE: New value.
	  (ZIP (stream_*_init)): Close non-idle streams.
	  (ZIP (sync)): Rewrite file if size has changed.
	  (struct ZIP (store)): Renamed to ZIP (object).
	  (struct ZIP (object)): zip_orig_size: New field.

2002-10-15

	* zipstores.c (struct stream_state): New structure
	  (struct ZIP (store)): Added the `read' and `write' fields.
	  (stream_read): Killed a bug (assignment of *len).
	  (store_simple_write): New function.

2002-10-13

	* zipstores.c: Implemented a copy-on-write page cache, mostly copied
	  from cache.c, rather than trying to adapt cache.c and integrate it.
	  This is mostly because (1) cache.c already make asumptions that we
	  are reading from nodes and (2) zipstores.c may exist in the future
	  as a stand-alone file, outside of tarfs.
	  ZIP (stream_write): New function.
	  ZIP (sync): New function.
	  STORE_ZIP (class): Use ZIP (sync) () as a cleanup function.
	  fetch_block: New function.
	* tarfs.c (tarfs_sync_fs): Call store_free () when it's done.

2002-10-09

	* tarfs.c (tarfs_set_options): Support for runtime option settings.
	* store-gzip.c (gzip_verify_crc): New function.
	* zipstores.c (ZIP (stream_read)): Added support for CRC check
	  (only used by the gzip store).

2002-10-07

	* Makefile (DEBUG_ZIP): New flag.

2002-10-06

	* zipstores.c: New file.
	* zip-stores.h: Renamed to zipstores.h.
	* store-gzip.c: Include zipstores.c.
	* store-bzip2.c: New file.

2002-10-04

	* debug.c: New file.
	* tarfs.c (tarfs_parse_opts): 'D': New option.

2002-10-03

	* debug.h: New file.
	* store-gzip.c: Crashes at EOF.

2002-10-01

	* tarfs.c (tar_put_item): New function.
	  (tarfs_create_node): Moved some code to tar_put_item ().
	  (tarfs_link_node): Use tar_put_item ().

2002-09-25

	* zip-stores.h: New file.
	* store-gzip.c: New files.

2002-09-23

	* tarfs.c (debug): New macro.

2002-09-22

	* tarfs.c: New --create and --volatile options.

2002-09-17

	* fs.c (fs_link_node_path): New function.
	* fs.c: Include fs.h to make sure that it's consistent.
	  (fs_unlink_node): *Do* call netfs_nput ().
	* backend.h (struct fs_backend): symlink_node, link_node, mkdev_node:
	  New fields.
	* tarfs.c: tarfs_symlink_node, tarfs_mkdev_node, tarfs_link_node:
	  New functions.
	* tarfs.c (tarfs_get_next_entry): Skip anonymous nodes.
	  (tarfs_skip_entries): Likewise.
	  (tarfs_set_cd): Likewise.
	  (tarfs_create_node): Allow anonymous (nameless) nodes.
	  (tarfs_lookup_node): Likewise.
	* fs.c (_find_node): Do nothing for nameless nodes.

2002-09-16

	* netfs.c (netfs_attempt_create_file): Lock node and add a ref
	  to it on success.
	* fs.c (fs_unlink_node): Don't call netfs_nput ().

2002-09-14

	* Makefile (CFLAGS): Added -D_FILE_OFFSET_BITS=64 so that it can
	  work well (otherwise, struct dirent are wrong and the first 4
	  bytes of filenames would just disappear...)
	* tarfs.c (tarfs_sync_fs): Write a zero record at the end so that
	  tar parsing doesn't get messed up.
	  tar_write: New subfunction.

2002-09-13 (Friday!)

	* netfs.c: Moved off_t into loff_t to work with 0.3 interfaces.
	* tarfs.c (netfs_server_name): New netfs variable.
	  (netfs_server_version): Likewise.
	* netfs.c: Changed struct stat into io_statbuf_t and
	  struct statfs into fsys_statfsbuf_t.
	* backend.h (change_stat): Likewise.
	* tarfs.c (tarfs_change_stat): Likewise.
	* netfs.c (_make_node): Likewise + set nn_translated to st_mode.
	  (fs_hard_link_node): Likewise.
	* backend.h (init): Pass an iouser to init.
	* main.c (main): Likewise.

2002-09-09

	* zio.h, zio-file.c, zio-gzip.c, zio-bzip2.c: New files.
	* tarfs.c: Replaced store_* with zio_*.
	* tar.c: Likewise.
	* cache.c: Likewise.
	* tarfs.c (tarfs_sync_fs): Truncate file size if necessary.
	* tarfs.c (tarfs_sync_fs): Don't call cache_ahead() if we are
	  at least one block behind.

2002-09-07

	* fsutils.[ch]: Renamed to fs.[ch] (looks better).
	* fs.[ch]: New files.
	* tarfs_defs.h: Renamed to tarfs.h (also looks better).
	* tarfs.h: New file.
	* tarfs.h (struct tar_item): Removed field 'header' which is useless.
	* fs.c: Set DEBUG_FS to enable fs.c's debugging output.
	* tarfs.c (tarfs_get_args): Handle options.
	* backend.h (struct netnode): Added the `hardlink' field.
	* fs.c (fs_hard_link_node): Use the `hardlink' field of netnode.
	* cache.c (cache_read): Likewise.
	* tarfs.c (tarfs_write_node): Likewise.
	* tarfs.c (tarfs_change_stat): Likewise.
	* names.c (uid_to_uname, gid_to_uname): New functions from GNU tar.
	* tarfs.c (tarfs_create_node): Return ENAMETOOLONG when relevant.
	* fs.c (fs_hard_link_node): Increase TARGET's st_nlink.
	* fs.c (fs_unlink_node): Check NODE's st_nlink.
	* fs.c: get_path_(from|to)_root renamed to fs_get...
	* netfs.c (netfs_attempt_syncfs): Only call go_away () which in turn
	  should call sync_fs ().
	* fs.c (fs_unlink_node): Call netfs_nput ().

2002-09-05

	* cache.c (cache_set_size): Fixed typo in the block allocation.
	* tarfs.c (cache_ahead): New function.
	* tarfs.c (tarfs_create_node): New nodes are inserted in an optimal
	  way.
	* current status: Syncing works when adding a file. :)

2002-09-04

	* tar.c (tar_make_header): New function (FIXME: Bad chksum).
	* tarfs.c (tarfs_sync_fs): Cache *all* following nodes if necessary.

2002-09-03

	* tarfs.c (read_archive): Open it read-write when relevant.
	* tarfs.c (tarfs_sync_fs): Ends up in an indefinite loop when
	  writing contents.

2002-09-02

	* tarfs.c (tar_make_item): Args changed.
	* cache.c (cache_synced): New function to replace the contents_changed field.
	* cache.c (cache_sync): New function.
	* tarfs.c (tarfs_sync_fs): Almost complete (never tried ;).

2002-09-01

	* tarfs.c (tar_insert_item): Fixed some flaws.

2002-08-31

	* fsutils.c (fs_make_node): Fixed typo in newnode->prevp assignment.
	* fsutils.c (fs_unlink_node): Returns error_t.

2002-08-27

	* cache.c (cache_read): Make sure that node is available on disk
	  before calling read_from_file ().
	* cache.c (cache_write): Likewise.

2002-08-26

	* cache.c (cache_set_size): New function.
	* fsutils.c (fs_unlink_node): New function.

2002-08-24

	* cache.c (cache_write): Writing to a file with copy-on-write works.
	* fsutils.c (_make_node): Set st_blocksize to 1024, better than 1.
	* fsutils.c: A bit more GNU Coding Std compliant. ;)
	* backend.h (struct fs_backend): New callbacks.

2002-08-23

	* cache.c, cache.h: New files: node's cache management.
	* cache.c (cache_read): Reading directly from the file (i.e.
	  store_read ()) works.

2002-08-20

	* netfs.c (OWNERSHIP): New macro to check whether a user owns a node.
	* netfs.c (HIDE_FILES_NOT_OWNED): New compilation flag.
	* tarfs_defs.h: New data structures to support writing:
	  struct tar_item, struct status and struct ccache;
	  struct tarfs_info also changed.
	* backend.h (struct fs_backend): New fields to support writing.
	* tarfs.c: New functions to manage a linked list of tar items,
	  new functions to support writing (do nothing so far).
	* tar.c: fill_stat_from_header renamed to tar_header2stat.
	-> this is an unstable version!

2002-08-19

	* netfs.c: Uses EROFS instead of EOPNOTSUPP
	  (netfs_attempt_create_file): Set *NP to NULL before returning
	  (netfs_attempt_lookup): When lookup'ing "." and "..", first make
	  sure that DIR is a directory (thus, it is not possible to cd to
	  a file).
	* tarfs.c (tarfs_init): Retrieve permissions from the tar file and
	  set them to the root node.
	* version.h: File removed since tarfs is not part of the Hurd tree...

2002-08-12

	* tarfs.c (tarfs_add_header): changed so that it can handle hard links
	* fsutils.c (fs_hard_link_node): new function
	* fsutils.c (fs_find_node_path): new function
	* fsutils.c (fs_make_node_path): uses above-mentioned function
	* tarfs.c: susbstituted error () to fprintf ()
	* tarfs.c (tarfs_new_dirent): renamed to _new_dirent ()
	* tarfs.c (_new_dirent): replaced vm_allocate () by mmap ()

2002-08-03

	* tar.c (skip_n_records): removed useless calls to get_next_record()
	* tarfs.c (tarfs_get_args): appends filename to the arglist

2002-08-02	Ludovic Courtès <ludo@type-z.org>

	* tarfs.c: set st_fstype to FSTYPE_TAR
	* tarfs.c: tarfs_add_header (): creates nodes even if one of its subdir
	  does not exist in the current tree (eg.: creates "/foo/bar" even
	  if "/foo" does not exist, just create "/foo" before)
	* Makefile: added an install rule :)