fix free space calculation on devices with reserved blocks
This commit is contained in:
parent
9e86abf745
commit
afd9900397
1 changed files with 1 additions and 5 deletions
6
data.cpp
6
data.cpp
|
@ -284,7 +284,6 @@ void get_available_space(std::vector<Space> &space) {
|
||||||
std::vector<std::string> mounts;
|
std::vector<std::string> mounts;
|
||||||
struct statfs stats;
|
struct statfs stats;
|
||||||
std::string fullname, name, mountpoint;
|
std::string fullname, name, mountpoint;
|
||||||
uint64_t free_blocks, total_blocks;
|
|
||||||
int ptr, len;
|
int ptr, len;
|
||||||
size_t str_pos;
|
size_t str_pos;
|
||||||
bool OK;
|
bool OK;
|
||||||
|
@ -304,7 +303,6 @@ void get_available_space(std::vector<Space> &space) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mountpoint = get_column(mounts[i], 1);
|
mountpoint = get_column(mounts[i], 1);
|
||||||
|
|
||||||
// handle spaces in mount point names - /proc/mounts uses a 4-byte '\\040' sequence to signify a space
|
// handle spaces in mount point names - /proc/mounts uses a 4-byte '\\040' sequence to signify a space
|
||||||
|
@ -349,11 +347,9 @@ void get_available_space(std::vector<Space> &space) {
|
||||||
|
|
||||||
// figure out free and total space
|
// figure out free and total space
|
||||||
statfs(mountpoint.c_str(), &stats);
|
statfs(mountpoint.c_str(), &stats);
|
||||||
free_blocks = stats.f_bfree;
|
|
||||||
total_blocks = stats.f_blocks;
|
|
||||||
|
|
||||||
// pass it on
|
// pass it on
|
||||||
space.push_back(Space(name.c_str(), free_blocks * stats.f_bsize, total_blocks * stats.f_bsize));
|
space.push_back(Space(name.c_str(), stats.f_bavail * stats.f_bsize, stats.f_blocks * stats.f_bsize));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue