c211c8d97e
Resolves: bz#1466129 bz#1475779 bz#1523216 bz#1535281 bz#1546941 Resolves: bz#1550315 bz#1550991 bz#1553677 bz#1554291 bz#1559452 Resolves: bz#1560955 bz#1562744 bz#1563692 bz#1565962 bz#1567110 Resolves: bz#1569457 Signed-off-by: Milind Changire <mchangir@redhat.com>
69 lines
2.7 KiB
Diff
69 lines
2.7 KiB
Diff
From 391a6263318dfa674b3cfecbd3725f4b54633bb7 Mon Sep 17 00:00:00 2001
|
|
From: moagrawa <moagrawa@redhat.com>
|
|
Date: Wed, 11 Apr 2018 16:39:47 +0530
|
|
Subject: [PATCH 218/236] posix: reserve option behavior is not correct while
|
|
using fallocate
|
|
|
|
Problem: storage.reserve option is not working correctly while
|
|
disk space is allocate throguh fallocate
|
|
|
|
Solution: In posix_disk_space_check_thread_proc after every 5 sec interval
|
|
it calls posix_disk_space_check to monitor disk space and set the
|
|
flag in posix priv.In 5 sec timestamp user can create big file with
|
|
fallocate that can reach posix reserve limit and no error is shown on
|
|
terminal even limit has reached.
|
|
To resolve the same call posix_disk_space for every fallocate fop
|
|
instead to call by a thread after 5 second
|
|
|
|
> BUG: 1560411
|
|
> Signed-off-by: Mohit Agrawal <moagrawa@redhat.com>
|
|
> (cherry picked from commit 0002c36666c9b043a330ee08533a87fe7fd16491)
|
|
> (Upstream patch link https://review.gluster.org/#/c/19771/)
|
|
|
|
BUG: 1550991
|
|
Change-Id: I6a959dfe38d63ea37f25a431a49f9299fa3ae403
|
|
Signed-off-by: moagrawa <moagrawa@redhat.com>
|
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/135208
|
|
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
|
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
|
---
|
|
xlators/storage/posix/src/posix-handle.h | 3 +++
|
|
xlators/storage/posix/src/posix.c | 9 +++++++++
|
|
2 files changed, 12 insertions(+)
|
|
|
|
diff --git a/xlators/storage/posix/src/posix-handle.h b/xlators/storage/posix/src/posix-handle.h
|
|
index 9af6a7a..a40feb5 100644
|
|
--- a/xlators/storage/posix/src/posix-handle.h
|
|
+++ b/xlators/storage/posix/src/posix-handle.h
|
|
@@ -285,4 +285,7 @@ int posix_create_link_if_gfid_exists (xlator_t *this, uuid_t gfid,
|
|
|
|
int
|
|
posix_handle_trash_init (xlator_t *this);
|
|
+
|
|
+void
|
|
+posix_disk_space_check (xlator_t *this);
|
|
#endif /* !_POSIX_HANDLE_H */
|
|
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
|
|
index 56a2ca9..d1ef8a2 100644
|
|
--- a/xlators/storage/posix/src/posix.c
|
|
+++ b/xlators/storage/posix/src/posix.c
|
|
@@ -792,6 +792,15 @@ posix_do_fallocate (call_frame_t *frame, xlator_t *this, fd_t *fd,
|
|
VALIDATE_OR_GOTO (fd, out);
|
|
|
|
priv = this->private;
|
|
+
|
|
+ /* fallocate case is special so call posix_disk_space_check separately
|
|
+ for every fallocate fop instead of calling posix_disk_space with
|
|
+ thread after every 5 sec sleep to working correctly storage.reserve
|
|
+ option behaviour
|
|
+ */
|
|
+ if (priv->disk_reserve)
|
|
+ posix_disk_space_check (this);
|
|
+
|
|
DISK_SPACE_CHECK_AND_GOTO (frame, priv, xdata, ret, ret, out);
|
|
|
|
ret = posix_fd_ctx_get (fd, this, &pfd, &op_errno);
|
|
--
|
|
1.8.3.1
|
|
|