Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2487753imm; Mon, 28 May 2018 09:02:10 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqX2RgWM4J3c+t0AOwbiYQoGyn1ftOdBrR922+xwtWia9JjHAjsjK4IV3axNozM1BNlHt4q X-Received: by 2002:a62:1656:: with SMTP id 83-v6mr13952510pfw.61.1527523330014; Mon, 28 May 2018 09:02:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527523329; cv=none; d=google.com; s=arc-20160816; b=VbCBsyUzAmhksqJMYhszhCrKb9fs5eZIxi2bSHpQMguwMzasVY39s+GxCb9YLqFAkB c8VwPF4Zp1Z9JWH7Ie7fyUZqFrX4PhGhBdRLiu2kfCIkzPld83Cj49rvZZJph3O2LvcI p/GPqqA9vHybrXr3qVOqnYTQRlBg6dArHiyY3WnP/b8jnQ/1m/aVtJakgM6o1nYMYkZZ uVpXiiwxQrpPxpu9mkWvfj23FpDCUqzfUdhRxV/L01EVi6JFU/yGynFFyROuarBn204i 9oDZxdWlxncbQ+BWQ/eY52aUwuXgSgL2uaDC6WLBTRmTOB2aA6bSUP7Siv6nNgnpB7l5 DO6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=akpdBYHrZNH4icXrsncFcA0a9bXuZGUt4CLRV6ZS0C8=; b=PJwWqVnLS8zy03UAX13BUOKUvoV8c73+tmC/GHYQN78oDUgt/XfFKjA1FlYaFKhhnq q3oY5+AyYW6fOyA2rJXrhVEict4yW12tPuULqVflGMG3Fy5llKnT8FMsYEDVbJRQOtL9 S/Pi4uNucqlEADA6Jzmt8t675FiLGUTsMcGcIYEoHJ+QwnMg7wVeqRaqZDkGBN7HpzNn fNkpdiG9S4Rs/KDZO9o57YtjSl3DVlNhBEh5JQuiTS7tPJ+QMoheSy1/yvDZglcPOz6x 0zheVnsav3pWSRtlWme+Dw2EPRqEB3RjgAvQNZpiVG1QNHcw7DHKuwwLTLz/tQeepsKa q1rw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=1+r3aWTY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w15-v6si32140940plp.7.2018.05.28.09.01.55; Mon, 28 May 2018 09:02:09 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=1+r3aWTY; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966819AbeE1KPn (ORCPT + 99 others); Mon, 28 May 2018 06:15:43 -0400 Received: from mail.kernel.org ([198.145.29.99]:35798 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966783AbeE1KPi (ORCPT ); Mon, 28 May 2018 06:15:38 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2C36B2086D; Mon, 28 May 2018 10:15:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527502537; bh=eq8vpm0ATfPrFAx1Yec/64RrK7HRQL8ZreoPwtpNyOs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1+r3aWTYGxBfgyWpO0xvMB9/NSvkLsZeL2ssoWqhHHLqrh6hRxq8fud6Fx5wCa+gR 7GYJx27asTo0Iz+4oXgPBheK2WSyZFElTNCFtjM6BEgS/HKlRoLt9ze4AKqA55Pr3k RukHeseaMfCD4zLpraK05NetdxzB8oxfYLKH997g= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Liu Bo , David Sterba , Sasha Levin Subject: [PATCH 4.4 036/268] Btrfs: set plug for fsync Date: Mon, 28 May 2018 12:00:10 +0200 Message-Id: <20180528100206.138233214@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100202.045206534@linuxfoundation.org> References: <20180528100202.045206534@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Liu Bo [ Upstream commit 343e4fc1c60971b0734de26dbbd475d433950982 ] Setting plug can merge adjacent IOs before dispatching IOs to the disk driver. Without plug, it'd not be a problem for single disk usecases, but for multiple disks using raid profile, a large IO can be split to several IOs of stripe length, and plug can be helpful to bring them together for each disk so that we can save several disk access. Moreover, fsync issues synchronous writes, so plug can really take effect. Signed-off-by: Liu Bo Reviewed-by: David Sterba Signed-off-by: David Sterba Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/file.c | 9 +++++++++ 1 file changed, 9 insertions(+) --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1861,10 +1861,19 @@ int btrfs_release_file(struct inode *ino static int start_ordered_ops(struct inode *inode, loff_t start, loff_t end) { int ret; + struct blk_plug plug; + /* + * This is only called in fsync, which would do synchronous writes, so + * a plug can merge adjacent IOs as much as possible. Esp. in case of + * multiple disks using raid profile, a large IO can be split to + * several segments of stripe length (currently 64K). + */ + blk_start_plug(&plug); atomic_inc(&BTRFS_I(inode)->sync_writers); ret = btrfs_fdatawrite_range(inode, start, end); atomic_dec(&BTRFS_I(inode)->sync_writers); + blk_finish_plug(&plug); return ret; }