forked from Imagelibrary/rtems
For PR 2162 - RFS File System - statvfs reports 1 block free
This is for the RFS file system. The statvfs call reports 1 block free when the file system is full because it does not account for the superblock in its calculation of free blocks. This is a simple fix that adjusts the number of blocks reported to account for the superblock. We may want to wait for a more complete solution such as locating the superblock in each group.
This commit is contained in:
committed by
Chris Johns
parent
e60b7b1b4f
commit
9b48dc67ed
@@ -753,7 +753,7 @@ rtems_rfs_rtems_statvfs (
|
||||
sb->f_bsize = rtems_rfs_fs_block_size (fs);
|
||||
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
|
||||
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
|
||||
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks;
|
||||
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks - 1; /* do not count the superblock */
|
||||
sb->f_bavail = sb->f_bfree;
|
||||
sb->f_files = rtems_rfs_fs_inodes (fs);
|
||||
sb->f_ffree = rtems_rfs_fs_inodes (fs) - inodes;
|
||||
|
||||
@@ -149,7 +149,7 @@ rtems_rfs_shell_data (rtems_rfs_file_system* fs, int argc, char *argv[])
|
||||
|
||||
rtems_rfs_shell_unlock_rfs (fs);
|
||||
|
||||
bpcent = (blocks * 1000) / rtems_rfs_fs_blocks (fs);
|
||||
bpcent = (blocks * 1000) / (rtems_rfs_fs_blocks (fs) - 1);
|
||||
ipcent = (inodes * 1000) / rtems_rfs_fs_inodes (fs);
|
||||
|
||||
printf (" blocks used: %zd (%d.%d%%)\n",
|
||||
|
||||
Reference in New Issue
Block a user