From patchwork Mon Dec 10 12:50:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kanchan Joshi X-Patchwork-Id: 10721259 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9D5601751 for ; Mon, 10 Dec 2018 12:53:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8C7262A30A for ; Mon, 10 Dec 2018 12:53:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 897582A32A; Mon, 10 Dec 2018 12:53:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 178F62A30A for ; Mon, 10 Dec 2018 12:53:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727277AbeLJMw6 (ORCPT ); Mon, 10 Dec 2018 07:52:58 -0500 Received: from mailout4.samsung.com ([203.254.224.34]:23631 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726727AbeLJMw6 (ORCPT ); Mon, 10 Dec 2018 07:52:58 -0500 Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout4.samsung.com (KnoxPortal) with ESMTP id 20181210125253epoutp0479774b851c24683d9d64f6af39fef642~u_cs07tqD2137621376epoutp04A; Mon, 10 Dec 2018 12:52:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout4.samsung.com 20181210125253epoutp0479774b851c24683d9d64f6af39fef642~u_cs07tqD2137621376epoutp04A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1544446373; bh=ZZcKUIF8IjEvnUVynzOp/q6rYaHlb5tclTwykLFlvXU=; h=From:To:Cc:Subject:Date:In-reply-to:References:From; b=naC2v1xy94+GLpDgPC/QxKZCYTxFrNzWSa3VvvKGgzWxaBSytS/sWWwYc43VbWAZv 4e1m/vZW9FvlY7rtRwdxJjhEntfoCYBErIReSzXSJzvUhVaFloeJBkrJrpZXGiPcSK R67vjtSYUyJq5jg13mi5RdfsPHYj6fOYcMCPCNQA= Received: from epsmges1p2.samsung.com (unknown [182.195.42.54]) by epcas1p2.samsung.com (KnoxPortal) with ESMTP id 20181210125252epcas1p2685b9b6ab26afb6f5501b33c14f4a941~u_crwYEZF2636526365epcas1p2w; Mon, 10 Dec 2018 12:52:52 +0000 (GMT) Received: from epcas1p2.samsung.com ( [182.195.41.46]) by epsmges1p2.samsung.com (Symantec Messaging Gateway) with SMTP id 5C.4C.04057.4A16E0C5; Mon, 10 Dec 2018 21:52:52 +0900 (KST) Received: from epsmgms2p1new.samsung.com (unknown [182.195.42.142]) by epcas1p3.samsung.com (KnoxPortal) with ESMTP id 20181210125251epcas1p3023db72cc08d6b2f899141d551d53f61~u_cqvnT7y3032130321epcas1p3V; Mon, 10 Dec 2018 12:52:51 +0000 (GMT) X-AuditID: b6c32a36-d19ff70000000fd9-71-5c0e61a46cad Received: from epmmp1.local.host ( [203.254.227.16]) by epsmgms2p1new.samsung.com (Symantec Messaging Gateway) with SMTP id 35.23.03601.2A16E0C5; Mon, 10 Dec 2018 21:52:51 +0900 (KST) Received: from test-PowerEdge-R720.sa.corp.samsungelectronics.net ([107.108.221.212]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0PJI00DVHUFKZF90@mmp1.samsung.com>; Mon, 10 Dec 2018 21:52:50 +0900 (KST) From: Kanchan Joshi To: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org Cc: tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.com, viro@zeniv.linux.org.uk, darrick.wong@oracle.com, axboe@kernel.dk, jrdr.linux@gmail.com, ebiggers@google.com, jooyoung.hwang@samsung.com, chur.lee@samsung.com, prakash.v@samsung.com, Kanchan Joshi Subject: [PATCH 1/2] fs: introduce APIs to enable sending write-hint with buffer-head Date: Mon, 10 Dec 2018 18:20:03 +0530 Message-id: <1544446204-5291-2-git-send-email-joshi.k@samsung.com> X-Mailer: git-send-email 2.7.4 In-reply-to: <1544446204-5291-1-git-send-email-joshi.k@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAAzVRa0hTURzv7D52t5q7bWInNalBHzRcGmo3yIoKuoSW+CVIKYe7qel07TpN wVpitUx6kCRKzqWFoJFrLtvMEKfzQaWufOM0bSKYFpLWDMTcbn37PQ8//odAJNNoIJGRncto shVZMlyItnSGysOfKfySI8r6CGp1RY9Sja77OLU8P4NTrh9vMMrZWIJR8/V1gLqx8hRQjo0l nBoZ1iFUpWESp9re9aHUUHktQt0sW+NTA+s92DE/uqQ5n7ZVufi00aylP3/U0sUfHAi9PDeB 0vcsDYBusgyj9E9zCG12L/EShOeFh5VMVkYeo9l/JEWYvujeQNX1kquzXXZMBwziUiAgIBkF 79pa0VIgJCSkFcBBWyfOkd8AdqwNbxLCl5prjeT0twB6Xph4HKngwS8TVl8IJ0Ph4COt91V/ Mha6Tb8wbwYhDTw4sOzgeQ0peQ4uWYpRL0bJvbDGMIp5uyLyOOw1hXOLQuB4/x3EiwXkCai7 qfcNguRXHFqcLj4XOgkbe4wYh6VwocfC54YGwU+OWE5m4Z9JB8J19QCO6ipRzjgKnW3rvj0I 6Qe/r5ZhXFcE9bckXISGz196/l3lMYATTe34A7DTCLY0gABGzarSGDZSfUDOKlSsNjtNnpqj MgPft4fFWEFtf5wdkASQbRMlFIuSJZgijy1Q2QEkEJm/KPzSpiRSKgoKGU3ORY02i2HtIIhA ZTtE7sDqJAmZpshlMhlGzWj+uzxCEKgDfH28KXWu+uCFsPya/MTbwSa3cmzt29bM3R3E1Dgm DrZZ+p7URR3iTycv6mbiL6d0wYen9pR0F8HtswFT2sSRHPHYtbP8jqHu6N4z6hBP5S5jklQu tCoX/KRVnph15744pvn1FYH4elEhcGiCqttbnG3R5af5loho/H3FK0yGsumKyDBEwyr+AmMT dZjyAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrMLMWRmVeSWpSXmKPExsVy+t9jAd3FiXwxBle+M1t8/dLBYrH6bj+b xcfnD9ks7r7fzmpxcXULq8Xz5YsZLRq/LGS0OPr/LZvFtasNzBYz591hs9iz9ySLxZUpi5gt Wnt+sluc/3uc1YHPo2VzucfOWXfZPRZsKvW4fLbUo+nMUWaPj09vsXj0bVnF6LF+y1UWj8+b 5Dw2PXnLFMAVxWWTkpqTWZZapG+XwJXx5sl/loLlQhWPjhxibWCcx9/FyMEhIWAi8XSXYRcj F4eQwE5GibUPfrNBODOZJB5/PMwEUsQmoClxYXJpFyMnh4iArcSTDd9YQWqYBeYxSRy7u4gd JCEsEC7xdksTC4jNIqAqMX/edVaQXl4BJ4kTG3RBwhICchI3z3Uyg9icAs4SDa0dbCC2EFDJ tK0t7BMYeRYwMqxilEwtKM5Nzy02KjDMSy3XK07MLS7NS9dLzs/dxAgM2m2Htfp2MN5fEn+I UYCDUYmHN6CJN0aINbGsuDL3EKMEB7OSCK9uGlCINyWxsiq1KD++qDQntfgQozQHi5I47+28 Y5FCAumJJanZqakFqUUwWSYOTqkGxtzOWV3+xw6p7NgX+uzN9fMOFzbO3rHkAdOGE30qd+vC KwXk1KVLv9+d+tRJ9rSfDdd2c0Zl5fN65h+3KhYyeGh/f2SySDWiK3TtFn+HAIOUydksuYxX 03rv2dXfPawgvl7d5/9eU6c79p6TnhcvnDN5ecwZoYAj7UtOd51P6tThvnj2ff6k+UosxRmJ hlrMRcWJACnMTmxWAgAA X-CMS-MailID: 20181210125251epcas1p3023db72cc08d6b2f899141d551d53f61 X-Msg-Generator: CA CMS-TYPE: 101P X-CMS-RootMailID: 20181210125251epcas1p3023db72cc08d6b2f899141d551d53f61 References: <1544446204-5291-1-git-send-email-joshi.k@samsung.com> Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP submit_bh and write_dirty_buffer do not take write-hint as parameter. This patch introduces variants which do. Signed-off-by: Kanchan Joshi --- fs/buffer.c | 21 +++++++++++++++++++++ include/linux/buffer_head.h | 3 +++ 2 files changed, 24 insertions(+) diff --git a/fs/buffer.c b/fs/buffer.c index 1286c2b..60c8867 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -3094,6 +3094,13 @@ int submit_bh(int op, int op_flags, struct buffer_head *bh) } EXPORT_SYMBOL(submit_bh); +int submit_bh_write_hint(int op, int op_flags, struct buffer_head *bh, + enum rw_hint hint) +{ + return submit_bh_wbc(op, op_flags, bh, hint, NULL); +} +EXPORT_SYMBOL(submit_bh_write_hint); + /** * ll_rw_block: low-level access to block devices (DEPRECATED) * @op: whether to %READ or %WRITE @@ -3162,6 +3169,20 @@ void write_dirty_buffer(struct buffer_head *bh, int op_flags) } EXPORT_SYMBOL(write_dirty_buffer); +void write_dirty_buffer_write_hint(struct buffer_head *bh, int op_flags, + enum rw_hint hint) +{ + lock_buffer(bh); + if (!test_clear_buffer_dirty(bh)) { + unlock_buffer(bh); + return; + } + bh->b_end_io = end_buffer_write_sync; + get_bh(bh); + submit_bh_wbc(REQ_OP_WRITE, op_flags, bh, hint, NULL); +} +EXPORT_SYMBOL(write_dirty_buffer_write_hint); + /* * For a data-integrity writeout, we need to wait upon any in-progress I/O * and then start new I/O and then wait upon it. The caller must have a ref on diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 7b73ef7..ac9f111 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -200,7 +200,10 @@ void ll_rw_block(int, int, int, struct buffer_head * bh[]); int sync_dirty_buffer(struct buffer_head *bh); int __sync_dirty_buffer(struct buffer_head *bh, int op_flags); void write_dirty_buffer(struct buffer_head *bh, int op_flags); +void write_dirty_buffer_write_hint(struct buffer_head *bh, int op_flags, + enum rw_hint hint); int submit_bh(int, int, struct buffer_head *); +int submit_bh_write_hint(int, int, struct buffer_head *, enum rw_hint hint); void write_boundary_block(struct block_device *bdev, sector_t bblock, unsigned blocksize); int bh_uptodate_or_lock(struct buffer_head *bh);