From patchwork Fri May 4 07:09:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Artem Blagodarenko X-Patchwork-Id: 908554 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="dvF8lXWp"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40cjnp4SjXz9s3G for ; Fri, 4 May 2018 17:10:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751360AbeEDHKF (ORCPT ); Fri, 4 May 2018 03:10:05 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:46381 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751447AbeEDHJr (ORCPT ); Fri, 4 May 2018 03:09:47 -0400 Received: by mail-lf0-f65.google.com with SMTP id v85-v6so29431350lfa.13 for ; Fri, 04 May 2018 00:09:46 -0700 (PDT) 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=B+0eDfZMxf/18rYwxFGMBeFKJZJmcje1wmsvEKsw46s=; b=dvF8lXWpUfdXMms0ayD9JL28rmeDSaTRL4/zqTSMruo531j6De+824Y+IjRwy13JEn 73SVtGifkq8LIMe/YUMNvNqw9uTA4/+zQXAY8cHhOmWFs2sYokrE5OD6Etg++BTkcGbq e0eA8NwhS89tAE+M6ksN+2i5AbOdRkVyW6+NbNXPyLAkKjc1bRecp0bxDh1MWBZAuXE3 PLuxPZfRzbji0ScINHzVoOjhZGGW22aNrw24jxNlk3O1q8PjyhSgW2EGdf8gXIcQGnkQ zq+eh4fHvnm3ynuTJlVmixiniUCLHNdERE1NiafRjFfnTmxurx2tApR6seSIg9WZwule ckFg== 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=B+0eDfZMxf/18rYwxFGMBeFKJZJmcje1wmsvEKsw46s=; b=n7FPaLuvRXhhkiio+bQRk/uMGClD1Le4DZQnT9jxzNYv/vEZqu/cY20oWfTdPhkXRf VFPmJXI7gAJgWWjubTn9r4TCE9npb53E/An+CURyDpsU12b5iI3F7uX3t5AHVxBRIyp9 IgjiMC3et4FbgS2RTfv4eL/RLKDs8XdXRg5SQVCWA1fAC5rw721ApdN+YgQxzbmr8Plb L138AFgMIzKrSBHolXOszeJrQ+lZ3n7pc70VV1TTxPoaH3aNPuVzKmIVobJvaWTMmFBx BuOrGSaLrX+K6I/qBQbV5wE8qaHP2WHW/YwzUeSm9gXHz9uwkrSuxRF7n1AS/YmwO7Qn rVcQ== X-Gm-Message-State: ALQs6tBCU0JrQ4AjwL4tqlb5BgBycGIulNCYSJ+TCKOV43SzkHjKOHJ2 EENL/o2HRTS4x4wMz8rxX/QZew== X-Google-Smtp-Source: AB8JxZrI0i1gagb0QntP78MC+yEOR8T4Pz5ZM8Q5S84/59jiq2x5AjFcS79eMOOfgjR29EDpUCC5mg== X-Received: by 2002:a19:5386:: with SMTP id h6-v6mr14587306lfl.45.1525417786003; Fri, 04 May 2018 00:09:46 -0700 (PDT) Received: from C02TN4C6HTD6.lan ([80.72.234.202]) by smtp.gmail.com with ESMTPSA id f16-v6sm3170296lfh.94.2018.05.04.00.09.44 (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 04 May 2018 00:09:45 -0700 (PDT) From: c17828 X-Google-Original-From: c17828 To: linux-ext4@vger.kernel.org Cc: adilger.kernel@dilger.ca, Artem Blagodarenko Subject: [PATCH v4 7/7] e2fsck: INODE64 high part is more important then LUFID Date: Fri, 4 May 2018 10:09:23 +0300 Message-Id: <20180504070923.45140-8-c17828@cray.com> X-Mailer: git-send-email 2.14.3 (Apple Git-98) In-Reply-To: <20180504070923.45140-1-c17828@cray.com> References: <20180504070923.45140-1-c17828@cray.com> Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org From: Artem Blagodarenko 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 ef0b97c0..21cbcd8e 100644 --- a/e2fsck/pass2.c +++ b/e2fsck/pass2.c @@ -377,10 +377,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() @@ -392,6 +396,11 @@ void ext2_fix_dirent_dirdata(struct ext2_dir_entry *de) flags); int rlen = EXT2_DIR_NAME_LEN(name_len + dirdatalen); + if (current_flag == EXT2_DIRENT_INODE) + inop = lenp; + + lenp += *lenp; + if (rlen > de->rec_len) break; @@ -399,6 +408,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); }