33 lines
1.3 KiB
Diff
33 lines
1.3 KiB
Diff
diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c
|
|
index 43956a9..d97812a 100644
|
|
--- a/xlators/performance/write-behind/src/write-behind.c
|
|
+++ b/xlators/performance/write-behind/src/write-behind.c
|
|
@@ -1667,7 +1667,8 @@ __wb_get_other_requests (list_head_t *list, list_head_t *other_requests)
|
|
int32_t
|
|
wb_stack_unwind (list_head_t *unwinds)
|
|
{
|
|
- struct iatt buf = {0,};
|
|
+ struct iatt prebuf = {0,};
|
|
+ struct iatt postbuf = {0,};
|
|
wb_request_t *request = NULL, *dummy = NULL;
|
|
call_frame_t *frame = NULL;
|
|
wb_local_t *local = NULL;
|
|
@@ -1678,8 +1679,15 @@ wb_stack_unwind (list_head_t *unwinds)
|
|
frame = request->stub->frame;
|
|
local = frame->local;
|
|
|
|
- STACK_UNWIND (frame, local->op_ret, local->op_errno, &buf,
|
|
- &buf);
|
|
+ /*
|
|
+ * There are probably a lot of other problems with returning
|
|
+ * these bogus iatts, but this fix at least gives us enough
|
|
+ * information for features/quota to work (sort of).
|
|
+ */
|
|
+ postbuf.ia_blocks = (request->write_size + 511) / 512;
|
|
+
|
|
+ STACK_UNWIND (frame, local->op_ret, local->op_errno,
|
|
+ &prebuf, &postbuf);
|
|
|
|
ret = wb_request_unref (request);
|
|
if (ret == 0) {
|