From patchwork Tue Mar 6 15:18:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artem Blagodarenko X-Patchwork-Id: 882109 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ext4-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Qup0Uf3E"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zwgRQ1kvhz9sl3 for ; Wed, 7 Mar 2018 02:19:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932287AbeCFPTM (ORCPT ); Tue, 6 Mar 2018 10:19:12 -0500 Received: from mail-lf0-f67.google.com ([209.85.215.67]:42586 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932112AbeCFPSy (ORCPT ); Tue, 6 Mar 2018 10:18:54 -0500 Received: by mail-lf0-f67.google.com with SMTP id t204so28973222lff.9 for ; Tue, 06 Mar 2018 07:18:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zgwoUbcjdJePYrOCkWfRg7ON2CAgybUC0Uda9dfX+d0=; b=Qup0Uf3EqT3RnfA3Y8xz1dl9xsA6SJmthnWieN8Te+pW8k6amNVhqLcpKP3ib1Lfah d4rUqHxNIbihHJQ3F2kNjKff/LXhXpUNOEIKY6GtFGoENtZIkG6nZxAqqSh+kc0o17PE sadMZCbn5X4EjGEcMqEpF8u/cUp2fsCFeM6JX6/hZFZ3k50EdZ0tP0Oso9razE5mCLFa lLJF4ic0W4AJA4BAXUrmAETg0tBp2kY8zGEnAtyFAg1ej2v+9ttSpeq0uPuDlMWQg64Z JzqY+G+t10dpikFE7Fz3W+l1Z3otaJZyv4XI6Kfw4m4M4qkQfPxxfD3HhbnhWdWiI7YW k9Pw== 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=zgwoUbcjdJePYrOCkWfRg7ON2CAgybUC0Uda9dfX+d0=; b=rXxfkEi/E8kXagm5bNZv2wzab1jrDUgbUvc7CXAzVL4r0XU+Qj/Z054ezTPhlYW7WV UWA6YIZw0qVEeWgr7+h55Hsjt1pL4o0mYAxf6rZAy/UZAaKAMPuWDw9ibyUd+F9T1DzH wV5+nklwW+Mz93x9+U++IjtYs3k+P3pibGzSNPkChhtovGE6A0po+XxHBk0GBGUtO6R8 lzEUEa1Fx2YfTxaFdnquRBx/3N1kBio6/RSKNBHfMqiPJI2yIYRupJmSkwh9Fr6ItlSE gihdA0bG5LCYfZMF9NDC1uH/LpRrGB3n/LpVcfWLPMHO5/WBY+wBKtxGmrrkGg/bbUQB B/ZQ== X-Gm-Message-State: AElRT7Ekjds64UByM6SI4xTkT7MnpaM8Bg16No8QyShoe5fumx+PmchQ l0odI7uuMZlVN3BOZwjpN8B4tA== X-Google-Smtp-Source: AG47ELs/Cha0w2jeqMDhSL44PjNfAK3J92T8bS3TR8wsZGv2TJ3dadLsfutXuG53nkaGqjD+yPbgGw== X-Received: by 10.46.89.213 with SMTP id g82mr13456187ljf.105.1520349532745; Tue, 06 Mar 2018 07:18:52 -0800 (PST) Received: from C02TN4C6HTD6.lan ([80.72.234.202]) by smtp.gmail.com with ESMTPSA id m1sm3187259lje.66.2018.03.06.07.18.51 (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 06 Mar 2018 07:18:52 -0800 (PST) From: Artem Blagodarenko To: linux-ext4@vger.kernel.org Cc: adilger.kernel@dilger.ca Subject: [PATCH v3 6/7] e2fsck: INODE64 high part is more important then LUFID Date: Tue, 6 Mar 2018 18:18:34 +0300 Message-Id: <20180306151835.4842-7-artem.blagodarenko@gmail.com> X-Mailer: git-send-email 2.14.3 (Apple Git-98) In-Reply-To: <20180306151835.4842-1-artem.blagodarenko@gmail.com> References: <20180306151835.4842-1-artem.blagodarenko@gmail.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Keep the INO64 field over LUFID, since it is both smaller, and more important. Lustre-bug: https://jira.hpdd.intel.com/browse/LU-9309 Signed-off-by: Artem Blagodarenko --- e2fsck/pass2.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c index 9ed1c193..e5c1504c 100644 --- a/e2fsck/pass2.c +++ b/e2fsck/pass2.c @@ -372,10 +372,14 @@ void ext2_fix_dirent_dirdata(struct ext2_dir_entry *de) __u8 de_flags = (de->name_len >> 8) & ~EXT2_FT_MASK; __u8 name_len = de->name_len & EXT2_NAME_LEN; __u8 new_flag = 0; + char *startp = de->name + (de->name_len & EXT2_NAME_LEN) + 1 /* NUL */; + char *lenp = startp; + char *inop = NULL; int i; for (i = 0; i < 4; i++) { - __u8 flags = new_flag | (1 << i) << 4; + __u8 current_flag = (1 << i) << 4; + __u8 flags = new_flag | current_flag; /* new_flag is accumulating flags that are set in de_flags * and still fit inside rec_len. ext2_get_dirent_dirdata_size() @@ -387,6 +391,11 @@ void ext2_fix_dirent_dirdata(struct ext2_dir_entry *de) flags); int rlen = __EXT2_DIR_REC_LEN(name_len + dirdatalen); + if (current_flag == EXT2_DIRENT_INODE) + inop = lenp; + + lenp += *lenp; + if (rlen > de->rec_len) break; @@ -394,6 +403,17 @@ void ext2_fix_dirent_dirdata(struct ext2_dir_entry *de) } } + /* Keep the INO64 field over LUFID, since it is both smaller, + * and more important. + */ + if (inop && (ext2_get_dirdata_field_size(de, new_flag) >= 5) && + !(new_flag & EXT2_DIRENT_INODE)) { + new_flag &= ~EXT2_DIRENT_LUFID; + new_flag |= EXT2_DIRENT_INODE; + memmove(startp, inop, + ext2_get_dirdata_field_size(de, new_flag)); + } + de->name_len = name_len | file_type | (new_flag << 8); }