diff options
author | Chris Johns <chrisj@rtems.org> | 2010-02-26 05:54:59 +0000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2010-02-26 05:54:59 +0000 |
commit | 3cfa6368c3211eed83df08850f0af26481f161f6 (patch) | |
tree | 822cfa7d031cb1d644172cff41ab8f952c038a34 /cpukit/libfs/src/rfs/rtems-rfs-inode.c | |
parent | combine all checks for missing MAC address (diff) | |
download | rtems-3cfa6368c3211eed83df08850f0af26481f161f6.tar.bz2 |
010-02-26 Chris Johns <chrisj@rtems.org>
* libfs/src/rfs/rtems-rfs-block.c: Reset a buffer handle after
moving down an indirection level.
* libfs/src/rfs/rtems-rfs-dir.c: Move directory entry validation
into a macro and use the macro. Fix the range check on the ino so
all inodes can be used.
* libfs/src/rfs/rtems-rfs-file-system.c,
libfs/src/rfs/rtems-rfs-file-system.h:: Add a version number to
the superblock. Use RTEMS_RFS_INODE_SIZE.
* libfs/src/rfs/rtems-rfs-file.c: Fix the size offset on partial
block lengths. Set the size in the file handle on a truncate to
0.
* libfs/src/rfs/rtems-rfs-format.c: Add a version number to
the superblock. Use RTEMS_RFS_INODE_SIZE. A better set of defaults
for small disks.
* libfs/src/rfs/rtems-rfs-inode.c: Use RTEMS_RFS_INODE_SIZE. Free
the allocated inode if it cannot be opened.
* libfs/src/rfs/rtems-rfs-inode.h: Add RTEMS_RFS_INODE_SIZE.
* libfs/src/rfs/rtems-rfs-rtems-file.c: Move some of the iop
acceses inside the fs lock.
* libfs/src/rfs/rtems-rfs-shell.c: Use RTEMS_RFS_INODE_SIZE.
Diffstat (limited to 'cpukit/libfs/src/rfs/rtems-rfs-inode.c')
-rw-r--r-- | cpukit/libfs/src/rfs/rtems-rfs-inode.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-inode.c b/cpukit/libfs/src/rfs/rtems-rfs-inode.c index b23f09994d..7dbb3a805e 100644 --- a/cpukit/libfs/src/rfs/rtems-rfs-inode.c +++ b/cpukit/libfs/src/rfs/rtems-rfs-inode.c @@ -211,8 +211,11 @@ rtems_rfs_inode_create (rtems_rfs_file_system* fs, rc = rtems_rfs_inode_open (fs, *ino, &inode, true); if (rc > 0) + { + rtems_rfs_inode_free (fs, *ino); return rc; - + } + rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid); if (rc > 0) { @@ -223,6 +226,8 @@ rtems_rfs_inode_create (rtems_rfs_file_system* fs, /* * Only handle the specifics of a directory. Let caller handle the others. + * + * The inode delete will free the inode. */ if (RTEMS_RFS_S_ISDIR (mode)) { @@ -307,7 +312,7 @@ rtems_rfs_inode_delete (rtems_rfs_file_system* fs, rc = rtems_rfs_block_map_close (fs, &map); if (rc > 0) rrc = rc; - memset (handle->node, 0xff, sizeof (rtems_rfs_inode)); + memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE); rtems_rfs_buffer_mark_dirty (&handle->buffer); /* * Do the release here to avoid the ctime field being set on a |