linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH e2fsprogs 0/9] Support encoding awareness and casefold
@ 2018-10-15 21:12 Gabriel Krisman Bertazi
  2018-10-15 21:12 ` [PATCH e2fsprogs 1/9] e2fsprogs: Add timestamp extension bits to superblock Gabriel Krisman Bertazi
                   ` (8 more replies)
  0 siblings, 9 replies; 24+ messages in thread
From: Gabriel Krisman Bertazi @ 2018-10-15 21:12 UTC (permalink / raw)
  To: tytso; +Cc: linux-ext4, Gabriel Krisman Bertazi

Hi Ted,

These are the modifications to e2fsprogs in order to support encoding
awareness and case folding.  This patch series is divided in 3 parts:

Patch 1 & 2 work on reserving superblock fields.  Patch 1 is actually
unrelated, just updating the super_block to resynchronize with the
kernel.  Patch 2 reserves the feature bit and superblock fields for this
feature.

Patch 3 through 5 implements the changes the changes to mke2fs and
chattr/lsattr to enable the encoding feature at mkfs time and flipping
the casefold flag on demand for specific directories.

Patch 6 through 9 is where things get a bit ugly.  fsck needs to become
encoding aware, in order to calculate directory hashes correctly and
verify/fix inconsistencies.  This requires a tiny bit of plumbing to
pass the encoding information up to the point where we calculate the
hash, as well as implementing a simple nls-like interface in e2fsprogs
to do normalization/casefolding.  You'll see that in this series I've
actually dropped the utf8 part because that patch is huge and I'd rather
discuss it separately.  I did it in a hacky way now, where we import the
utf8n code from linux.  I thought about using libunistring but it
doesn't seem to support versioning and we risk being incompatible with
the kernel hashes.  I think we could follow the kernel approach and make
ucd files available in e2fsprogs and generate the data at
compilation. What do you think?

If you want to see a full utf8 capable version of this series, please
clone from:

https://gitlab.collabora.com/krisman/e2fsprogs -b encoding-feature-merge

If you don't object to patch 1 & 2, can we get them merged before the
rest of the series is ready, so I can reserve the bits in the super
block for this feature (patch 2) and avoid more rebasing on my side?

Thanks,

Gabriel Krisman Bertazi (9):
  e2fsprogs: Add timestamp extension bits to superblock
  e2fsprogs: Reserve feature bit and SB field bit for filename encoding
  libe2p: Helpers for configuring the encoding superblock fields
  mke2fs: Configure encoding during superblock initialization
  chattr/lsattr: Support casefold attribute
  lib/ext2fs: Implement NLS support
  lib/ext2fs: Support encoding when calculating dx hashes
  debugfs/htree: Support encoding when printing the file hash
  tune2fs: Prevent enabling encryption flag on encoding-aware fs

 debugfs/htree.c         | 27 +++++++++++----
 e2fsck/dx_dirinfo.c     |  4 ++-
 e2fsck/e2fsck.h         |  4 ++-
 e2fsck/pass1.c          | 11 ++++--
 e2fsck/pass2.c          |  7 +++-
 e2fsck/rehash.c         | 12 ++++---
 lib/e2p/Makefile.in     |  8 +++--
 lib/e2p/e2p.h           |  4 +++
 lib/e2p/encoding.c      | 76 +++++++++++++++++++++++++++++++++++++++++
 lib/e2p/feature.c       |  2 ++
 lib/e2p/pf.c            |  1 +
 lib/ext2fs/Makefile.in  | 10 ++++--
 lib/ext2fs/dirhash.c    | 49 +++++++++++++++++++++++---
 lib/ext2fs/ext2_fs.h    | 31 +++++++++++++++--
 lib/ext2fs/ext2fs.h     |  6 +++-
 lib/ext2fs/initialize.c |  4 +++
 lib/ext2fs/nls.h        | 65 +++++++++++++++++++++++++++++++++++
 lib/ext2fs/nls_ascii.c  | 48 ++++++++++++++++++++++++++
 misc/chattr.c           |  3 +-
 misc/mke2fs.c           | 43 +++++++++++++++++++++++
 misc/tune2fs.c          |  6 ++++
 21 files changed, 393 insertions(+), 28 deletions(-)
 create mode 100644 lib/e2p/encoding.c
 create mode 100644 lib/ext2fs/nls.h
 create mode 100644 lib/ext2fs/nls_ascii.c

-- 
2.19.1

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2018-11-22  6:21 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-15 21:12 [PATCH e2fsprogs 0/9] Support encoding awareness and casefold Gabriel Krisman Bertazi
2018-10-15 21:12 ` [PATCH e2fsprogs 1/9] e2fsprogs: Add timestamp extension bits to superblock Gabriel Krisman Bertazi
2018-11-19  3:35   ` Theodore Y. Ts'o
2018-10-15 21:12 ` [PATCH e2fsprogs 2/9] e2fsprogs: Reserve feature bit and SB field bit for filename encoding Gabriel Krisman Bertazi
2018-11-19  4:15   ` Theodore Y. Ts'o
2018-10-15 21:12 ` [PATCH e2fsprogs 3/9] libe2p: Helpers for configuring the encoding superblock fields Gabriel Krisman Bertazi
2018-11-19  4:27   ` Theodore Y. Ts'o
2018-11-19 15:28     ` Gabriel Krisman Bertazi
2018-11-21  4:32       ` Theodore Y. Ts'o
2018-11-21 19:33         ` Gabriel Krisman Bertazi
2018-10-15 21:12 ` [PATCH e2fsprogs 4/9] mke2fs: Configure encoding during superblock initialization Gabriel Krisman Bertazi
2018-11-21  4:55   ` Theodore Y. Ts'o
2018-11-21 19:43     ` Gabriel Krisman Bertazi
2018-10-15 21:12 ` [PATCH e2fsprogs 5/9] chattr/lsattr: Support casefold attribute Gabriel Krisman Bertazi
2018-11-21  5:00   ` Theodore Y. Ts'o
2018-10-15 21:12 ` [PATCH e2fsprogs 6/9] lib/ext2fs: Implement NLS support Gabriel Krisman Bertazi
2018-11-21  5:01   ` Theodore Y. Ts'o
2018-11-21 19:44     ` Gabriel Krisman Bertazi
2018-10-15 21:12 ` [PATCH e2fsprogs 7/9] lib/ext2fs: Support encoding when calculating dx hashes Gabriel Krisman Bertazi
2018-11-21  5:10   ` Theodore Y. Ts'o
2018-10-15 21:12 ` [PATCH e2fsprogs 8/9] debugfs/htree: Support encoding when printing the file hash Gabriel Krisman Bertazi
2018-10-15 21:12 ` [PATCH e2fsprogs 9/9] tune2fs: Prevent enabling encryption flag on encoding-aware fs Gabriel Krisman Bertazi
2018-11-21  5:03   ` Theodore Y. Ts'o
2018-11-21 19:46     ` Gabriel Krisman Bertazi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).