Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3471642imm; Tue, 29 May 2018 07:50:18 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqBIXgRLhVapyTx6hnNXNiB/xDypcK/4RAajbsKN/ruKn7AyVCLnHkSD6sLiTpe8UCDN1wa X-Received: by 2002:a65:4549:: with SMTP id x9-v6mr14204302pgr.158.1527605418147; Tue, 29 May 2018 07:50:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527605418; cv=none; d=google.com; s=arc-20160816; b=y+JmJ3s88GE8MOi0cvUxcPFMiwHp+yUMkRwbfC7Kjuv2+BuJPScVYNgou4oAz8B02c bghxNpXAP7nipLIcb8SDpALOhFJWp1hgM8g3UjaO4vhpO80VMzmEwfZ6ofDe7skRADPC wNpO4CVtwHYEFuHYjMCGJ3OHpS2QEZMOS7o3nyIYQ/sUE8JMkf6B3ruEp30CbbO04far Q4btAVGDoonPpGw7dKYX+2nJkV5EFv87aXN4p3eOjHkGj0r43eXPw7KKkCBXzGnhFB9C 88HsS6UJljDTmuy6ZFVtO0RgCUyz3AZtDdxU+RtyfH14Bw1pzBVT9vdrknhqw++ncqD2 LmUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=esBFL3bJJqdjUY4IuWwcTEJ8/TNaqhdkM1KTquCiceA=; b=orzQW9My6bTRfXnRux8JkClkjsxSWspLTGPtOKe0xKXeLyfFpnxhMAJtDicjhaLMy8 39p11/CGs9v7CjJmPFlhlUi6koY7BFJ4YwW/2YnRoyl5YIV8uuezKjDYmXe7JRy4innm 5s5OfsKUWHIDgkVs3WLcYzQ2r7/nfxhqD5OuC8o40+1PNxgAxCTw9D2R68cCX3T+xeu+ COPTKUisupvXztweTLIS5rBWGTjp7nbnGUBZm4qPCWG0xAIGU2xFFKSsruh8OK6rTlqX vU00b4WUOTGDBT5Msk7SOYV3U47gX3mxDqSWfSRi4zfJf0MaIivjgRdM+Wd/jOtLLS7h KLGQ== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v28-v6si8804658pgc.531.2018.05.29.07.50.03; Tue, 29 May 2018 07:50:18 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936767AbeE2Osi (ORCPT + 99 others); Tue, 29 May 2018 10:48:38 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:53707 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S936574AbeE2Oqs (ORCPT ); Tue, 29 May 2018 10:46:48 -0400 Received: by mail-wm0-f67.google.com with SMTP id a67-v6so41219432wmf.3 for ; Tue, 29 May 2018 07:46:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=esBFL3bJJqdjUY4IuWwcTEJ8/TNaqhdkM1KTquCiceA=; b=DYiR8+q44Atv32GC9vNcNuioUvKYi7nhCl5CqiASrdnVppm8olzKPdpvHOD6GEks87 zOehm/Oh5pLpBB2/tHmmGx8eUjcKdpClUdaeJ111wganzy/8cWhXMqccZ5CX9y1JZ2My ef8PO8hcN9Pj4Fx/K6/+3ERPerA2kz+hwlrm6+I4pNBXhx3mXP/mWkLCtL5c7IrHHYPf xOIsTU+PWTZjbJzW1ktKwDMtzGeNF0yyUgi7T4uIHSv2R+C+4+p7coahUkyZqHs6WLy/ iI6G60RDYi9VUjgTKx8NS2sZhcgd6S6QEXM8rKkDq8voviz7lx8+ZABb46rsh9e42vrS mFPg== X-Gm-Message-State: ALKqPwc4zBvVRHDq2rJW/NFLQ680WkbnNzujSaQQxg5U72X0FZc37tsI 6hZu3H61HRghEY3Ax3m6iYIxZA== X-Received: by 2002:a1c:6503:: with SMTP id z3-v6mr10530590wmb.11.1527605207090; Tue, 29 May 2018 07:46:47 -0700 (PDT) Received: from veci.piliscsaba.redhat.com (catv-176-63-54-97.catv.broadband.hu. [176.63.54.97]) by smtp.gmail.com with ESMTPSA id n71-v6sm20942227wmi.14.2018.05.29.07.46.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 29 May 2018 07:46:46 -0700 (PDT) From: Miklos Szeredi To: linux-unionfs@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 26/28] ovl: Do not do metadata only copy-up for truncate operation Date: Tue, 29 May 2018 16:46:10 +0200 Message-Id: <20180529144612.16675-27-mszeredi@redhat.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180529144612.16675-1-mszeredi@redhat.com> References: <20180529144612.16675-1-mszeredi@redhat.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vivek Goyal truncate should copy up full file (and not do metacopy only), otherwise it will be broken. For example, use truncate to increase size of a file so that any read beyong existing size will return null bytes. If we don't copy up full file, then we end up opening lower file and read from it only reads upto the old size (and not new size after truncate). Hence to avoid such situations, copy up data as well when file size changes. So far it was being done by d_real(O_WRONLY) call in truncate() path. Now that patch has been reverted. So force full copy up in ovl_setattr() if size of file is changing. Signed-off-by: Vivek Goyal Reviewed-by: Amir Goldstein Signed-off-by: Miklos Szeredi --- fs/overlayfs/inode.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index ac1d2a581a6e..e31d64206a01 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -19,6 +19,7 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr) { int err; + bool full_copy_up = false; struct dentry *upperdentry; const struct cred *old_cred; @@ -36,9 +37,15 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr) err = -ETXTBSY; if (atomic_read(&realinode->i_writecount) < 0) goto out_drop_write; + + /* Truncate should trigger data copy up as well */ + full_copy_up = true; } - err = ovl_copy_up(dentry); + if (!full_copy_up) + err = ovl_copy_up(dentry); + else + err = ovl_copy_up_with_data(dentry); if (!err) { struct inode *winode = NULL; -- 2.14.3