lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200319233433.117144-1-harshadshirwadkar@gmail.com>
Date:   Thu, 19 Mar 2020 16:34:26 -0700
From:   Harshad Shirwadkar <harshadshirwadkar@...il.com>
To:     linux-ext4@...r.kernel.org
Cc:     Harshad Shirwadkar <harshadshirwadkar@...il.com>
Subject: [PATCH 0/7] e2fsck: fast commit recovery path e2fsck changes

This patch series adds e2fsck recovery path changes for fast commits.
Fast commit blocks are laid out in the reserved journal area. Each
block in fast commit region, corresponds to one inode. It contains
a header, a copy of the inode and any of the following tags or no
tags at all.

* EXT4_FC_TAG_ADD_DENTRY: add dentry to a directory
* EXT4_FC_TAG_DEL_DENTRY: remove dentry from a directory
* EXT4_FC_TAG_CREAT_DENTRY: new inode with corresponding dentry
* EXT4_FC_TAG_ADD_RANGE: add extent to inode
* EXT4_FC_TAG_DEL_RANGE: remove logical range from inode

High level new journal replay looks like this.

- For all fast commit blocks, invoke j_fc_replay() handler to handle
  blocks in SCAN phase.
  - In this phase, ext4 replay handler verifies that fast commit
    header is not malformed. If there's an error, it stops replay
    by marking error in replay state.
- Replay phase
  - In replay phase, for every fast commit block, fast commit tags
    are handled in following order.
    - Directory entry updates (Add / Remove / Create)
    - Data updates for inode in question.

Verified that all the tests pass:
367 tests succeeded     0 tests failed

New fast commit recovery test:
j_recover_fast_commit: : ok

Github: https://github.com/harshadjs/e2fsprogs/tree/fast-commit-submit

Harshad Shirwadkar(8):
 ext2fs: add fast_commit test
 e2fsck/jbd2: fast commit recovery changes
 e2fsck: main replay handler
 e2fsck/jbd2: add fast commit feature in jbd2
 ext2fs: make ext2fs_calculate_summary_stats() visible
 e2fsck: allow rewriting extents of a file
 e2fsck: make recovery.c identical with kernel
 e2fsck: fast commit recovery path e2fsck changes

 e2fsck/e2fsck.h                      |  26 ++
 e2fsck/extents.c                     | 160 +++++++-----
 e2fsck/jfs_user.h                    |   9 +
 e2fsck/journal.c                     | 489 ++++++++++++++++++++++++++++++++++-
 e2fsck/recovery.c                    | 113 +++++---
 lib/ext2fs/ext2_fs.h                 |  46 ++++
 lib/ext2fs/ext2fs.h                  |   1 +
 lib/ext2fs/initialize.c              |  58 +++++
 lib/ext2fs/jfs_compat.h              |   9 +
 lib/ext2fs/kernel-jbd.h              |   7 +-
 misc/tune2fs.c                       |  57 ----
 resize/resize2fs.c                   |   6 +-
 tests/j_recover_fast_commit/commands |   5 +
 tests/j_recover_fast_commit/expect   |  23 ++
 tests/j_recover_fast_commit/image.gz | Bin 0 -> 87787 bytes
 tests/j_recover_fast_commit/name     |   1 +
 tests/j_recover_fast_commit/script   |  25 ++
 17 files changed, 875 insertions(+), 160 deletions(-)

Signed-off-by: Harshad Shirwadkar <harshadshirwadkar@...il.com>
-- 
2.25.1.696.g5e7596f4ac-goog

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ