From patchwork Mon Sep 4 03:43:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qu Wenruo X-Patchwork-Id: 9936689 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 52A5260237 for ; Mon, 4 Sep 2017 03:43:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3A232204BD for ; Mon, 4 Sep 2017 03:43:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2EC201FF2D; Mon, 4 Sep 2017 03:43:51 +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=-6.4 required=2.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI,RCVD_IN_SORBS_SPAM 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 A00D61FF2D for ; Mon, 4 Sep 2017 03:43:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753233AbdIDDn3 (ORCPT ); Sun, 3 Sep 2017 23:43:29 -0400 Received: from mout.gmx.net ([212.227.17.21]:59507 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753198AbdIDDn3 (ORCPT ); Sun, 3 Sep 2017 23:43:29 -0400 Received: from localhost.localdomain ([45.32.39.184]) by mail.gmx.com (mrgmx102 [212.227.17.174]) with ESMTPSA (Nemesis) id 0LwXCt-1dQ4pv2D3X-018IWe; Mon, 04 Sep 2017 05:43:25 +0200 From: Qu Wenruo To: linux-btrfs@vger.kernel.org Cc: dsterba@suse.cz Subject: [PATCH 1/2] btrfs-progs: mkfs: Fix wrong file type for dir items and indexes when specifying root directory Date: Mon, 4 Sep 2017 12:43:19 +0900 Message-Id: <20170904034320.25744-1-quwenruo.btrfs@gmx.com> X-Mailer: git-send-email 2.13.3 X-Provags-ID: V03:K0:g8ye3Jrx8oJ64QMlkPmy4qoo6ZC6lSqIucfcfOjXws645aLUYQM YSPBdK2GivmUILZIDDrimkEu7fRiRUVp1qBI2xy9HEHxF+GyEhTtoPL1zHPKQNNpFtU9ADf GorJ/ES4xbqYLSOwNnQUUS1spYKiaXaaLIHlkpL7Xbq0UzQ75vJqTXI0XTxLsGEDAwJsTTW HDlV6ud+I0BUfaTQb+f7w== X-UI-Out-Filterresults: notjunk:1; V01:K0:Sf5P8Z3q5ow=:k0xidtl2Gpn55aGsPmnAqi whV7qfCgQGt3ttk20UZ/HevpBYsD6HVP+g+B9iaqPhps8KYopVB4ZH3Zx4Z0awmxpDP2OsVj2 QpUssvHth8VuCWkFjs6WEzFmNF587uNQ+756aJrsm0w7Ch4VqdMl13GdnhCocs3M2rlt8tnys rpNG/Ybc85vDICshD3thAL5VZ4wCD4TI6UWNyK3RY240/25Bpfk20nQvRzt3ag7Wnn/xjqmhX B31BivXVmVUlxZZCaESX/DZS6D+gArpd/p0S73871aL8+eLYjsiyrYw4CgPWWAteXHz7YmyMs qhL6H3DseCsePVsaS4Iut79y3d0125Y7JVFnjD88Wx24bndB0bd5+K4rwaYad/PDgy/h0lU+T hPKCrq+I4skezNlP1tMjgvUC/TnJHjwB/hG7U4QKiC4hYxk9GckW/B8fUaCQnZkcMjlBsE9vA BszlyGn3im2AlesRVXfgu+vWO/iWn9YpVp2o9ucn0XuiACduAwhRLX5V6hn/YQsRk5aF1K7Jb hTkjFEFHXZgE21KvQ5+T+qsWgB4h1kjJO4uGrIh6Cc6LGLjxacctCbxYMRG5mEWxze94+pI7i EBPVPtJoudp0LyZU8yMb4MLQQY0q5Ia3wfveNuwKLZ8h8DKYJQ6JugeB4nnLScuqgjwxl3Cep nKsXKaLCUIxKZPqv+cDQWRiqPjkaMcfSXTDJ+tU/Qr9WVXSGODEe+FHpMGmoiMeaVSotRciXG 6fDSeaH3tLnL4Z/8tngi6iyPldGkCFm4eBUC8zlHCg1x1fAw7bT03tO6FF1CJ1keQT2v7NWZv ZdWsTcahHQPw2w2+xOvHxvjoFHxCg== Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP [Bug] If using mkfs.btrfs with "-r" parameter and specified direct has fifo/socket/char/block special file, then created btrfs can't pass fsck: ------ checking fs roots unresolved ref dir 241158 index 3 namelen 9 name S.dirmngr filetype 0 errors 80, filetype mismatch ERROR: errors found in fs roots ------ [Reason] Btrfs dir items/indexes records inode type, while "-r" only handles directors, regular files and soft link, it makes such special files type to be regular file and caused the problem. [Fix] Add missing types for add_directory_items(), so that result of "mkfs.btrfs -r" can pass mkfs. Signed-off-by: Qu Wenruo --- mkfs/main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mkfs/main.c b/mkfs/main.c index afd68bc5..84ff300b 100644 --- a/mkfs/main.c +++ b/mkfs/main.c @@ -435,6 +435,14 @@ static int add_directory_items(struct btrfs_trans_handle *trans, filetype = BTRFS_FT_REG_FILE; if (S_ISLNK(st->st_mode)) filetype = BTRFS_FT_SYMLINK; + if (S_ISSOCK(st->st_mode)) + filetype = BTRFS_FT_SOCK; + if (S_ISCHR(st->st_mode)) + filetype = BTRFS_FT_CHRDEV; + if (S_ISBLK(st->st_mode)) + filetype = BTRFS_FT_BLKDEV; + if (S_ISFIFO(st->st_mode)) + filetype = BTRFS_FT_FIFO; ret = btrfs_insert_dir_item(trans, root, name, name_len, parent_inum, &location,