Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755731AbcCWP0Q (ORCPT ); Wed, 23 Mar 2016 11:26:16 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:53043 "EHLO mx0b-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752849AbcCWP0M (ORCPT ); Wed, 23 Mar 2016 11:26:12 -0400 From: Jens Axboe To: , , CC: Jens Axboe Subject: [PATCH 1/8] writeback: propagate the various reasons for writeback Date: Wed, 23 Mar 2016 09:25:43 -0600 Message-ID: <1458746750-9213-2-git-send-email-axboe@fb.com> X-Mailer: git-send-email 2.4.1.168.g1ea28e1 In-Reply-To: <1458746750-9213-1-git-send-email-axboe@fb.com> References: <1458746750-9213-1-git-send-email-axboe@fb.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [192.168.54.13] X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-03-23_08:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1487 Lines: 52 Avoid losing context by propagating the various reason why we initiate writeback. Signed-off-by: Jens Axboe --- fs/fs-writeback.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 5c46ed9f3e14..387610cf4f7f 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -52,6 +52,7 @@ struct wb_writeback_work { unsigned int range_cyclic:1; unsigned int for_background:1; unsigned int for_sync:1; /* sync(2) WB_SYNC_ALL writeback */ + unsigned int for_reclaim:1; /* for mem reclaim */ unsigned int auto_free:1; /* free on completion */ enum wb_reason reason; /* why was writeback initiated? */ @@ -942,6 +943,21 @@ void wb_start_writeback(struct bdi_writeback *wb, long nr_pages, work->reason = reason; work->auto_free = 1; + switch (reason) { + case WB_REASON_BACKGROUND: + case WB_REASON_PERIODIC: + work->for_background = 1; + break; + case WB_REASON_TRY_TO_FREE_PAGES: + case WB_REASON_FREE_MORE_MEM: + work->for_reclaim = 1; + case WB_REASON_SYNC: + work->for_sync = 1; + break; + default: + break; + } + wb_queue_work(wb, work); } @@ -1443,6 +1459,7 @@ static long writeback_sb_inodes(struct super_block *sb, .for_kupdate = work->for_kupdate, .for_background = work->for_background, .for_sync = work->for_sync, + .for_reclaim = work->for_reclaim, .range_cyclic = work->range_cyclic, .range_start = 0, .range_end = LLONG_MAX, -- 2.4.1.168.g1ea28e1