Received: by 2002:a05:6358:e9c4:b0:b2:91dc:71ab with SMTP id hc4csp4590379rwb; Mon, 8 Aug 2022 03:59:15 -0700 (PDT) X-Google-Smtp-Source: AA6agR6liYK72W5OWMdU4EG5HL+1hoqyPUyvZAbk8cJf3RLyHpSteMDM6TcDPnx7+EOiQuo/k9kr X-Received: by 2002:a17:907:60c7:b0:731:148b:c515 with SMTP id hv7-20020a17090760c700b00731148bc515mr8508283ejc.724.1659956355625; Mon, 08 Aug 2022 03:59:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659956355; cv=none; d=google.com; s=arc-20160816; b=CJUa/QiyimCU33wmtj8yoPMoZNkLsUfphw1ySAIAOJbt0UTYt6KvC/Or/ENWvYQC/a kow+hgOMZwiycruArVUB/q0si0nujHG5J1emKneJBOyOnTK2dNHo5kkEXFZCHkNp35vs fgieCZX7yHOWSfatzrAv9GAzNpdIbmjc9/nxGwhI23h3swKeVuV2soLDVBJkUxicsSGt p9VOyMYEpItYAVKeew0s1XFoVUAZ/IG4Mnq+NAbYnAUsy3opvL49A657u+uDqi/NyFVM XW//t3Xzmx4xS0lIHKHsrFLBrCDcBLv+onQaM8LKbgJG4VjgEHz0ZEN6JrTMp0nvzcpK Jj5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=kCrWo6XUDb0KZ7/eVmUJVTWii4kR8xYP0+rvvGgECOw=; b=qnu9wdphoKMMYluX7MHkj9iwT65t4JOE88O+3wag+xVhIkz8Yi/MVBef0kUieaV+lY TQhEsmML6L/K1NJQracgsRTWu8W5ZER2o2uCBjIIjDDWoMCjX+Hm9yjQ5Ts1zsPcxAq/ znEW+/R1D0eMeeipwdJ4LwXslIVsKHIdzA23v1qGB4veFipvjVb4h5Yfqr9/JH74oMIJ vfLxU4oErhP8hCHV6kiNt3DEhB3gCM7fgHv9Dy57GTaS+vDQJrMhEcqzYU0g5USn8D6F Pvw5iCoA8oBjbE79BS4VAHXHE2+Y/VwavUSGxZa0mios8pvQFNQ8MO5xmf4ZQU8K2vgB KbXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synology.com header.s=123 header.b=g6EcVH1Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=synology.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n14-20020a170906840e00b0073114e3a93dsi5418674ejx.592.2022.08.08.03.58.49; Mon, 08 Aug 2022 03:59:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@synology.com header.s=123 header.b=g6EcVH1Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=synology.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242054AbiHHK1q (ORCPT + 99 others); Mon, 8 Aug 2022 06:27:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232740AbiHHK1n (ORCPT ); Mon, 8 Aug 2022 06:27:43 -0400 Received: from synology.com (mail.synology.com [211.23.38.101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88DC12708; Mon, 8 Aug 2022 03:27:42 -0700 (PDT) Received: from localhost.localdomain (unknown [10.17.41.204]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by synology.com (Postfix) with ESMTPSA id E497D2B08A8E2; Mon, 8 Aug 2022 18:27:39 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synology.com; s=123; t=1659954461; bh=TQLRjYrA+Sj8oaFJnOb2CN3R1WbhZr4ErqXj5Q6I/oI=; h=From:To:Cc:Subject:Date; b=g6EcVH1Y39kSynj4mWHGrNbbZKJkQFr5jX7r8oYoQbvO68cQAfiYE23Zpw0p1j6HE CEBsOI6HhbBxMaHs8uQo95ylFH0JKMUEJrrEzbdZRcTg8IoDG8izkggroOAv1c9Rcn nCYdwJoSl9KCRb4Gph87zyv5psTBqLq9kLzcF71M= From: bingjingc To: fdmanana@kernel.org, josef@toxicpanda.com, dsterba@suse.com, clm@fb.com, linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org Cc: bingjingc@synology.com, robbieko@synology.com, bxxxjxxg@gmail.com Subject: [PATCH 0/2] btrfs: send: fix a bug that sending unlink commands for directories Date: Mon, 8 Aug 2022 18:27:33 +0800 Message-Id: <20220808102735.4556-1-bingjingc@synology.com> X-Mailer: git-send-email 2.37.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Synology-MCP-Status: no X-Synology-Spam-Flag: no X-Synology-Spam-Status: score=0, required 6, WHITELIST_FROM_ADDRESS 0 X-Synology-Virus-Status: no X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: BingJing Chang There is a bug sending unlink commands for directories. In commit 46b2f4590aab ("Btrfs: fix send failure when root has deleted files still open")', orphan inode issue was addressed. There're no reference paths for these orphan inodes, so the send operation fails with an ENOENT error. Therefore, in that patch, sctx->ignore_cur_inode was introduced to be set if the current inode has a link count of zero for bypassing some unnecessary steps. And a helper function btrfs_unlink_all_paths() was introduced and called to clean up old reference paths found in the parent snapshot. However, not only regular files but also directories can be orphan inodes. So if it meets an orphan directory, a wrong unlink command for this directory will be issued. Soon the unlink command fails with an EISDIR error. BingJing Chang (2): btrfs: send: refactor get_inode_info() btrfs: send: fix a bug that sending unlink commands for directories fs/btrfs/send.c | 390 +++++++++++++++++++++++------------------------- 1 file changed, 189 insertions(+), 201 deletions(-) -- 2.37.1