summaryrefslogtreecommitdiff
path: root/isofs/inode.c
AgeCommit message (Collapse)Author
2002-08-062002-08-06 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann
* inode.c (use_file_start_id): Use file_start for directories, so the inode of the directory is used for the ".." entries in all sub-directories. Contrary to ChangeLog entry 2001-11-27, this is safe, because the ISO9660 specification mandates that the first entry in every directory must be ".", so a non-file_start using directory record can not be the first one.
2002-06-112002-06-08 Roland McGrath <roland@frob.com>Roland McGrath
* inode.c (diskfs_cached_lookup): Use ino_t for argument.
2001-02-202001-02-20 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann
* inode.c: Include <time.h>. Reported by Arkadi E. Shishlov <arkadi@it.lv>.
2001-01-072000-12-21 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann
* rr.c (rrip_work): Use strdup instead malloc and strcpy. Assert that strdup and malloc (for rr->trans) succeeds. * pager.c: Include <errno.h>. (create_disk_pager): If malloc fails, exit with error. * main.c (read_sblock): Fail if malloc does. * inode.c (diskfs_cached_lookup): When allocating memory for dn or np fails, release spinlock, rrip (and allocated memory) and return ENOMEM. (load_inode): Likewise (but no rrip). Also, if *npp is non-zero, release diskfs_node_refcnt_lock before returning. Reported by Igor Khavkine <i_khavki@alcor.concordia.ca>.
2000-11-272000-11-27 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann
The last two changes introduced two new inode overlaps (file_start was not shifted by store block size, and directories' shifted file_start offset can be the same as the struct dirrect offset of their first directory entry). * inode.c (use_file_start_as_id): New function to determine if to use file_start or struct dirrect * as node id. The directory recognition code comes from read_disknode. (cache_inode): Use use_file_start_as_id instead doing the work ourselve. Shift file_start by store->log2_block_size. (load_inode): Likewise. * lookup.c (diskfs_get_directs): Likewise. Declare use_file_start_id.
2000-11-262000-11-26 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann
Fix hard link handling for non-zero length files. * inode.c: Fix comment about inode numbers. (node_cache): New member ID to store unique identifier. (inode_cache_find): Change RECORD arg into ID and compare it with id member of node_cache. (cache_inode): Swap order of args and add new arg RR (change dr into record along the way). Use RR to find out cache ID. Use id member of node_cache to look for ID. Cache ID. (load_inode): Call inode_cache_find with correct ID, depending on RR and file size. Frob arguments to cache_inode to comply with the new definition. (read_disknode): Set st_ino according depending on RR and file size. * lookup.c: Doc spelling fix. (diskfs_get_directs): Include code again that was removed by last change, but use it only if not symlink or zero length file.
2000-11-262000-11-26 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann
Closes Debian Bug #68417: * rr.c (rrip_work): In helper function add_comp set targused to zero after malloc, and loop over realloc in case doubling is not enough. After finalizing the link, set VALID_SL valid flag. * inode.c (read_disknode): For links use rl->target instead rl->name. Closes Debian Bug #69281: Don't use file_start as inode numbers, but the offset of the directory record in disk_image. This is what Linux 2.4 does. * isofs.h (struct disknode): New member struct dirrect *dr. * inode.c: Fix comment about inode numbers. (struct node_cache): Fix comment about file_start (it's not unique). In fact, file_start is invalid for symlinks, and only stored here for convenience. Maybe caching file_start can be avoided by rearranging the code. (inode_cache_find): Change first argument from off_t file_start to struct dirrect *dr and fix the doc. Compare cached value of DR with this argument, instead FILE_START. (diskfs_cached_lookup): Set DR member of DN. (load_inode): Call inode_cache_find with RECORD instead FILE_START. Set DR member of DN. (read_disknode): Set inode number to DR - DISK_IMAGE instead FILE_START. * lookup.c (diskfs_get_directs): Remove variable file_start. Don't calculate file_start. Set D_FILENO to EP - DISK_IMAGE instead FILE_START.
1998-12-271998-12-27 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* inode.c (diskfs_set_statfs): Remove __ from struct statfs members. Use bzero first instead of setting individual fields to zero.
1998-12-271998-12-21 Mark Kettenis <kettenis@phys.uva.nl>Roland McGrath
* inode.c (diskfs_set_statfs): Fill in statfs members with sensible values.
1998-11-16*** empty log message ***Thomas Bushnell
1998-11-16Wed Oct 28 22:52:04 1998 Joel N. Weber II <devnull@methedrine.ai.mit.edu>Roland McGrath
* inode.c (read_disknode): Use FSTYPE_ISO9660.
1998-09-041998-09-04 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* lookup.c (diskfs_lookup_hard): Fix defn with `const'. (diskfs_direnter_hard): Likewise. (diskfs_get_directs): Use `const' for local var NAME. * inode.c (diskfs_set_translator): Fix defn with `const'.
1997-09-19(read_disknode):Miles Bader
RR should be RL. Assign 0's type-correctly to NP->dn->translator and ->translen. (diskfs_node_norefs): The translator field is in NP->dn, not NP.
1997-09-16Tue Sep 16 15:34:21 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>Thomas Bushnell
* rr.c (gnuext_live): New variable. (rrip_work): Comprehend AU, TR, MD, and FL, all as GNU extensions. Recognize GNU extension id field when processing ER fields. (release_rrip): Free RR->trans if it's live. * inode.c (read_disknode): Interpret and install the values set by AU, TR, MD, and FL extensions. (diskfs_node_norefs): Free NP->translator if it's set. * isofs.h (struct disknode): New members `translen' and `translator'. * rr.h (struct gn_au, struct gn_tr, struct gn_md, struct gn_fl): New strucures. (GNUEXT_SRC, GNUEXT_DES, GNUEXT_ID, GNUEXT_VERS): New macros. (struct rrip_lookup): New members author, translen, trans, allmode, flags. (VALID_AU, VALID_TR, VALID_MD, VALID_FL): New macros. * Makefile (DIST_FILES): Add, referring to EXTENSIONS. * EXTENSIONS: New file.
1997-08-07Thu Aug 7 16:01:29 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>Thomas Bushnell
* inode.c (read_disknode): Units of st_blocks are 512 byte chunks, not logical_block_size chunks.
1997-07-18Initial versions.Thomas Bushnell