summaryrefslogtreecommitdiffstats
path: root/xlators/storage/posix/src/posix-inode-fd-ops.c
diff options
context:
space:
mode:
authorSheetal Pamecha <sheetal.pamecha08@gmail.com>2018-11-19 22:15:25 +0530
committerAmar Tumballi <amarts@redhat.com>2019-06-03 02:59:17 +0000
commit950726dfc8e3171bef625b563c0c6dbba1ec2928 (patch)
tree9f29ddeaa3d93984ffcc0f6620779e0ee8418512 /xlators/storage/posix/src/posix-inode-fd-ops.c
parent6fd8281ac9af58609979f660ece58c2ed1100e72 (diff)
posix: add storage.reserve-size option
storage.reserve-size option will take size as input instead of percentage. If set, priority will be given to storage.reserve-size over storage.reserve. Default value of this option is 0. fixes: bz#1651445 Change-Id: I7a7342c68e436e8bf65bd39c567512ee04abbcea Signed-off-by: Sheetal Pamecha <sheetal.pamecha08@gmail.com>
Diffstat (limited to 'xlators/storage/posix/src/posix-inode-fd-ops.c')
-rw-r--r--xlators/storage/posix/src/posix-inode-fd-ops.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/xlators/storage/posix/src/posix-inode-fd-ops.c b/xlators/storage/posix/src/posix-inode-fd-ops.c
index c12856d4764..16f175c21b8 100644
--- a/xlators/storage/posix/src/posix-inode-fd-ops.c
+++ b/xlators/storage/posix/src/posix-inode-fd-ops.c
@@ -725,7 +725,7 @@ posix_do_fallocate(call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t flags,
thread after every 5 sec sleep to working correctly storage.reserve
option behaviour
*/
- if (priv->disk_reserve)
+ if (priv->disk_reserve_size || priv->disk_reserve_percent)
posix_disk_space_check(this);
DISK_SPACE_CHECK_AND_GOTO(frame, priv, xdata, ret, ret, out);
@@ -2345,8 +2345,12 @@ posix_statfs(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)
goto out;
}
- percent = priv->disk_reserve;
- reserved_blocks = (buf.f_blocks * percent) / 100;
+ if (priv->disk_reserve_size) {
+ reserved_blocks = priv->disk_reserve_size / buf.f_bsize;
+ } else {
+ percent = priv->disk_reserve_percent;
+ reserved_blocks = (buf.f_blocks * percent) / 100;
+ }
if (buf.f_bfree > reserved_blocks) {
buf.f_bfree = (buf.f_bfree - reserved_blocks);