summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/rfs/rtems-rfs-group.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2010-10-11 04:34:48 +0000
committerChris Johns <chrisj@rtems.org>2010-10-11 04:34:48 +0000
commit0a127c5591ec0b3e3c58e84702328e15809605e2 (patch)
tree0715fe1a84cbd8561d0ee2d1dadbe10dc20cdf14 /cpukit/libfs/src/rfs/rtems-rfs-group.c
parent2010-10-11 Chris Johns <chrisj@rtems.org> (diff)
downloadrtems-0a127c5591ec0b3e3c58e84702328e15809605e2.tar.bz2
2010-10-11 Chris Johns <chrisj@rtems.org>
* libfs/src/rfs/rtems-rfs-trace.c, libfs/src/rfs/rtems-rfs-trace.h: Add inode-delete. * libfs/src/rfs/rtems-rfs-shell.c: Fix formatting. * libfs/src/rfs/rtems-rfs-rtems-dir.c: Use ssize_t. Fix spelling. * libfs/src/rfs/rtems-rfs-block.c: Fix rtems_rfs_block_get_bpos to return the position correctly. A bpos does not have any special processing. Do no reset the buffer handle when shrinking indirectly. * libfs/src/rfs/rtems-rfs-inode.c: Add trace. * libfs/src/rfs/rtems-rfs-format.c: Fix comments. * libfs/src/rfs/rtems-rfs-group.c: Limit the inodes to the blocks in a group so the accounting works. * libfs/src/rfs/rtems-rfs-dir.c: PR 1705. Fix handling the offsets when deleting an entry. * libfs/src/rfs/rtems-rfs-buffer.h: Remove rtems_rfs_buffer_handle_reset. It is not needed and dangerous.
Diffstat (limited to '')
-rw-r--r--cpukit/libfs/src/rfs/rtems-rfs-group.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/cpukit/libfs/src/rfs/rtems-rfs-group.c b/cpukit/libfs/src/rfs/rtems-rfs-group.c
index 40901bb1bf..a6c2fce1ba 100644
--- a/cpukit/libfs/src/rfs/rtems-rfs-group.c
+++ b/cpukit/libfs/src/rfs/rtems-rfs-group.c
@@ -46,6 +46,15 @@ rtems_rfs_group_open (rtems_rfs_file_system* fs,
if ((base + size) >= rtems_rfs_fs_blocks (fs))
size = rtems_rfs_fs_blocks (fs) - base;
+
+ /*
+ * Limit the inodes to the same size as the blocks. This is what the
+ * format does and if this is not done the accounting of inodes does
+ * not work. If we are so pushed for inodes that this makes a difference
+ * the format configuration needs reviewing.
+ */
+ if (inodes > size)
+ inodes = size;
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))
printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",