From: Daniel Rosenberg <drosen@google.com>
To: "Theodore Ts'o" <tytso@mit.edu>,
linux-ext4@vger.kernel.org, Jaegeuk Kim <jaegeuk@kernel.org>,
Chao Yu <chao@kernel.org>,
linux-f2fs-devel@lists.sourceforge.net,
Eric Biggers <ebiggers@kernel.org>,
linux-fscrypt@vger.kernel.org,
Alexander Viro <viro@zeniv.linux.org.uk>,
Richard Weinberger <richard@nod.at>
Cc: linux-mtd@lists.infradead.org,
Andreas Dilger <adilger.kernel@dilger.ca>,
Jonathan Corbet <corbet@lwn.net>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org,
Gabriel Krisman Bertazi <krisman@collabora.com>,
kernel-team@android.com, Daniel Rosenberg <drosen@google.com>
Subject: [PATCH v7 2/8] fs: Add standard casefolding support
Date: Fri, 7 Feb 2020 17:35:46 -0800 [thread overview]
Message-ID: <20200208013552.241832-3-drosen@google.com> (raw)
In-Reply-To: <20200208013552.241832-1-drosen@google.com>
This adds general supporting functions for filesystems that use
utf8 casefolding. It provides standard dentry_operations and adds the
necessary structures in struct super_block to allow this standardization.
Ext4 and F2fs are switch to these implementations.
Signed-off-by: Daniel Rosenberg <drosen@google.com>
---
fs/libfs.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++
include/linux/fs.h | 22 +++++++++++++
2 files changed, 99 insertions(+)
diff --git a/fs/libfs.c b/fs/libfs.c
index c686bd9caac67..433c283df3099 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -20,6 +20,9 @@
#include <linux/fs_context.h>
#include <linux/pseudo_fs.h>
#include <linux/fsnotify.h>
+#include <linux/unicode.h>
+#include <linux/fscrypt.h>
+#include <linux/stringhash.h>
#include <linux/uaccess.h>
@@ -1361,3 +1364,77 @@ bool is_empty_dir_inode(struct inode *inode)
return (inode->i_fop == &empty_dir_operations) &&
(inode->i_op == &empty_dir_inode_operations);
}
+
+#ifdef CONFIG_UNICODE
+bool needs_casefold(const struct inode *dir)
+{
+ return IS_CASEFOLDED(dir) && dir->i_sb->s_encoding &&
+ (!IS_ENCRYPTED(dir) || fscrypt_has_encryption_key(dir));
+}
+EXPORT_SYMBOL(needs_casefold);
+
+int generic_ci_d_compare(const struct dentry *dentry, unsigned int len,
+ const char *str, const struct qstr *name)
+{
+ const struct dentry *parent = READ_ONCE(dentry->d_parent);
+ const struct inode *inode = READ_ONCE(parent->d_inode);
+ const struct super_block *sb = dentry->d_sb;
+ const struct unicode_map *um = sb->s_encoding;
+ struct qstr entry = QSTR_INIT(str, len);
+ int ret;
+
+ if (!inode || !needs_casefold(inode))
+ goto fallback;
+
+ ret = utf8_strncasecmp(um, name, &entry);
+ if (ret >= 0)
+ return ret;
+
+ if (sb_has_enc_strict_mode(sb))
+ return -EINVAL;
+fallback:
+ if (len != name->len)
+ return 1;
+ return !!memcmp(str, name->name, len);
+}
+EXPORT_SYMBOL(generic_ci_d_compare);
+
+struct hash_ctx {
+ struct utf8_itr_context ctx;
+ unsigned long hash;
+};
+
+static int do_generic_ci_hash(struct utf8_itr_context *ctx, int byte, int pos)
+{
+ struct hash_ctx *hctx = container_of(ctx, struct hash_ctx, ctx);
+
+ hctx->hash = partial_name_hash((unsigned char)byte, hctx->hash);
+ return 0;
+}
+
+int generic_ci_d_hash(const struct dentry *dentry, struct qstr *str)
+{
+ const struct inode *inode = READ_ONCE(dentry->d_inode);
+ struct super_block *sb = dentry->d_sb;
+ const struct unicode_map *um = sb->s_encoding;
+ int ret = 0;
+ struct hash_ctx hctx;
+
+ if (!inode || !needs_casefold(inode))
+ return 0;
+
+ hctx.hash = init_name_hash(dentry);
+ hctx.ctx.actor = do_generic_ci_hash;
+ ret = utf8_casefold_iter(um, str, &hctx.ctx);
+ if (ret < 0)
+ goto err;
+ str->hash = end_name_hash(hctx.hash);
+
+ return 0;
+err:
+ if (sb_has_enc_strict_mode(sb))
+ ret = -EINVAL;
+ return ret;
+}
+EXPORT_SYMBOL(generic_ci_d_hash);
+#endif
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 6eae91c0668f9..a260afbc06d22 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1382,6 +1382,12 @@ extern int send_sigurg(struct fown_struct *fown);
#define SB_ACTIVE (1<<30)
#define SB_NOUSER (1<<31)
+/* These flags relate to encoding and casefolding */
+#define SB_ENC_STRICT_MODE_FL (1 << 0)
+
+#define sb_has_enc_strict_mode(sb) \
+ (sb->s_encoding_flags & SB_ENC_STRICT_MODE_FL)
+
/*
* Umount options
*/
@@ -1449,6 +1455,10 @@ struct super_block {
#endif
#ifdef CONFIG_FS_VERITY
const struct fsverity_operations *s_vop;
+#endif
+#ifdef CONFIG_UNICODE
+ struct unicode_map *s_encoding;
+ __u16 s_encoding_flags;
#endif
struct hlist_bl_head s_roots; /* alternate root dentries for NFS */
struct list_head s_mounts; /* list of mounts; _not_ for fs use */
@@ -3361,6 +3371,18 @@ extern int generic_file_fsync(struct file *, loff_t, loff_t, int);
extern int generic_check_addressable(unsigned, u64);
+#ifdef CONFIG_UNICODE
+extern int generic_ci_d_hash(const struct dentry *dentry, struct qstr *str);
+extern int generic_ci_d_compare(const struct dentry *dentry, unsigned int len,
+ const char *str, const struct qstr *name);
+extern bool needs_casefold(const struct inode *dir);
+#else
+static inline bool needs_casefold(const struct inode *dir)
+{
+ return 0;
+}
+#endif
+
#ifdef CONFIG_MIGRATION
extern int buffer_migrate_page(struct address_space *,
struct page *, struct page *,
--
2.25.0.341.g760bfbb309-goog
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Rosenberg via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: "Theodore Ts'o" <tytso@mit.edu>,
linux-ext4@vger.kernel.org, Jaegeuk Kim <jaegeuk@kernel.org>,
Chao Yu <chao@kernel.org>,
linux-f2fs-devel@lists.sourceforge.net,
Eric Biggers <ebiggers@kernel.org>,
linux-fscrypt@vger.kernel.org,
Alexander Viro <viro@zeniv.linux.org.uk>,
Richard Weinberger <richard@nod.at>
Cc: Daniel Rosenberg <drosen@google.com>,
linux-doc@vger.kernel.org, kernel-team@android.com,
Jonathan Corbet <corbet@lwn.net>,
linux-kernel@vger.kernel.org,
Andreas Dilger <adilger.kernel@dilger.ca>,
linux-fsdevel@vger.kernel.org, linux-mtd@lists.infradead.org,
Gabriel Krisman Bertazi <krisman@collabora.com>
Subject: [f2fs-dev] [PATCH v7 2/8] fs: Add standard casefolding support
Date: Fri, 7 Feb 2020 17:35:46 -0800 [thread overview]
Message-ID: <20200208013552.241832-3-drosen@google.com> (raw)
In-Reply-To: <20200208013552.241832-1-drosen@google.com>
This adds general supporting functions for filesystems that use
utf8 casefolding. It provides standard dentry_operations and adds the
necessary structures in struct super_block to allow this standardization.
Ext4 and F2fs are switch to these implementations.
Signed-off-by: Daniel Rosenberg <drosen@google.com>
---
fs/libfs.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++
include/linux/fs.h | 22 +++++++++++++
2 files changed, 99 insertions(+)
diff --git a/fs/libfs.c b/fs/libfs.c
index c686bd9caac67..433c283df3099 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -20,6 +20,9 @@
#include <linux/fs_context.h>
#include <linux/pseudo_fs.h>
#include <linux/fsnotify.h>
+#include <linux/unicode.h>
+#include <linux/fscrypt.h>
+#include <linux/stringhash.h>
#include <linux/uaccess.h>
@@ -1361,3 +1364,77 @@ bool is_empty_dir_inode(struct inode *inode)
return (inode->i_fop == &empty_dir_operations) &&
(inode->i_op == &empty_dir_inode_operations);
}
+
+#ifdef CONFIG_UNICODE
+bool needs_casefold(const struct inode *dir)
+{
+ return IS_CASEFOLDED(dir) && dir->i_sb->s_encoding &&
+ (!IS_ENCRYPTED(dir) || fscrypt_has_encryption_key(dir));
+}
+EXPORT_SYMBOL(needs_casefold);
+
+int generic_ci_d_compare(const struct dentry *dentry, unsigned int len,
+ const char *str, const struct qstr *name)
+{
+ const struct dentry *parent = READ_ONCE(dentry->d_parent);
+ const struct inode *inode = READ_ONCE(parent->d_inode);
+ const struct super_block *sb = dentry->d_sb;
+ const struct unicode_map *um = sb->s_encoding;
+ struct qstr entry = QSTR_INIT(str, len);
+ int ret;
+
+ if (!inode || !needs_casefold(inode))
+ goto fallback;
+
+ ret = utf8_strncasecmp(um, name, &entry);
+ if (ret >= 0)
+ return ret;
+
+ if (sb_has_enc_strict_mode(sb))
+ return -EINVAL;
+fallback:
+ if (len != name->len)
+ return 1;
+ return !!memcmp(str, name->name, len);
+}
+EXPORT_SYMBOL(generic_ci_d_compare);
+
+struct hash_ctx {
+ struct utf8_itr_context ctx;
+ unsigned long hash;
+};
+
+static int do_generic_ci_hash(struct utf8_itr_context *ctx, int byte, int pos)
+{
+ struct hash_ctx *hctx = container_of(ctx, struct hash_ctx, ctx);
+
+ hctx->hash = partial_name_hash((unsigned char)byte, hctx->hash);
+ return 0;
+}
+
+int generic_ci_d_hash(const struct dentry *dentry, struct qstr *str)
+{
+ const struct inode *inode = READ_ONCE(dentry->d_inode);
+ struct super_block *sb = dentry->d_sb;
+ const struct unicode_map *um = sb->s_encoding;
+ int ret = 0;
+ struct hash_ctx hctx;
+
+ if (!inode || !needs_casefold(inode))
+ return 0;
+
+ hctx.hash = init_name_hash(dentry);
+ hctx.ctx.actor = do_generic_ci_hash;
+ ret = utf8_casefold_iter(um, str, &hctx.ctx);
+ if (ret < 0)
+ goto err;
+ str->hash = end_name_hash(hctx.hash);
+
+ return 0;
+err:
+ if (sb_has_enc_strict_mode(sb))
+ ret = -EINVAL;
+ return ret;
+}
+EXPORT_SYMBOL(generic_ci_d_hash);
+#endif
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 6eae91c0668f9..a260afbc06d22 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1382,6 +1382,12 @@ extern int send_sigurg(struct fown_struct *fown);
#define SB_ACTIVE (1<<30)
#define SB_NOUSER (1<<31)
+/* These flags relate to encoding and casefolding */
+#define SB_ENC_STRICT_MODE_FL (1 << 0)
+
+#define sb_has_enc_strict_mode(sb) \
+ (sb->s_encoding_flags & SB_ENC_STRICT_MODE_FL)
+
/*
* Umount options
*/
@@ -1449,6 +1455,10 @@ struct super_block {
#endif
#ifdef CONFIG_FS_VERITY
const struct fsverity_operations *s_vop;
+#endif
+#ifdef CONFIG_UNICODE
+ struct unicode_map *s_encoding;
+ __u16 s_encoding_flags;
#endif
struct hlist_bl_head s_roots; /* alternate root dentries for NFS */
struct list_head s_mounts; /* list of mounts; _not_ for fs use */
@@ -3361,6 +3371,18 @@ extern int generic_file_fsync(struct file *, loff_t, loff_t, int);
extern int generic_check_addressable(unsigned, u64);
+#ifdef CONFIG_UNICODE
+extern int generic_ci_d_hash(const struct dentry *dentry, struct qstr *str);
+extern int generic_ci_d_compare(const struct dentry *dentry, unsigned int len,
+ const char *str, const struct qstr *name);
+extern bool needs_casefold(const struct inode *dir);
+#else
+static inline bool needs_casefold(const struct inode *dir)
+{
+ return 0;
+}
+#endif
+
#ifdef CONFIG_MIGRATION
extern int buffer_migrate_page(struct address_space *,
struct page *, struct page *,
--
2.25.0.341.g760bfbb309-goog
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
WARNING: multiple messages have this Message-ID (diff)
From: Daniel Rosenberg <drosen@google.com>
To: "Theodore Ts'o" <tytso@mit.edu>,
linux-ext4@vger.kernel.org, Jaegeuk Kim <jaegeuk@kernel.org>,
Chao Yu <chao@kernel.org>,
linux-f2fs-devel@lists.sourceforge.net,
Eric Biggers <ebiggers@kernel.org>,
linux-fscrypt@vger.kernel.org,
Alexander Viro <viro@zeniv.linux.org.uk>,
Richard Weinberger <richard@nod.at>
Cc: Daniel Rosenberg <drosen@google.com>,
linux-doc@vger.kernel.org, kernel-team@android.com,
Jonathan Corbet <corbet@lwn.net>,
linux-kernel@vger.kernel.org,
Andreas Dilger <adilger.kernel@dilger.ca>,
linux-fsdevel@vger.kernel.org, linux-mtd@lists.infradead.org,
Gabriel Krisman Bertazi <krisman@collabora.com>
Subject: [PATCH v7 2/8] fs: Add standard casefolding support
Date: Fri, 7 Feb 2020 17:35:46 -0800 [thread overview]
Message-ID: <20200208013552.241832-3-drosen@google.com> (raw)
In-Reply-To: <20200208013552.241832-1-drosen@google.com>
This adds general supporting functions for filesystems that use
utf8 casefolding. It provides standard dentry_operations and adds the
necessary structures in struct super_block to allow this standardization.
Ext4 and F2fs are switch to these implementations.
Signed-off-by: Daniel Rosenberg <drosen@google.com>
---
fs/libfs.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++
include/linux/fs.h | 22 +++++++++++++
2 files changed, 99 insertions(+)
diff --git a/fs/libfs.c b/fs/libfs.c
index c686bd9caac67..433c283df3099 100644
--- a/fs/libfs.c
+++ b/fs/libfs.c
@@ -20,6 +20,9 @@
#include <linux/fs_context.h>
#include <linux/pseudo_fs.h>
#include <linux/fsnotify.h>
+#include <linux/unicode.h>
+#include <linux/fscrypt.h>
+#include <linux/stringhash.h>
#include <linux/uaccess.h>
@@ -1361,3 +1364,77 @@ bool is_empty_dir_inode(struct inode *inode)
return (inode->i_fop == &empty_dir_operations) &&
(inode->i_op == &empty_dir_inode_operations);
}
+
+#ifdef CONFIG_UNICODE
+bool needs_casefold(const struct inode *dir)
+{
+ return IS_CASEFOLDED(dir) && dir->i_sb->s_encoding &&
+ (!IS_ENCRYPTED(dir) || fscrypt_has_encryption_key(dir));
+}
+EXPORT_SYMBOL(needs_casefold);
+
+int generic_ci_d_compare(const struct dentry *dentry, unsigned int len,
+ const char *str, const struct qstr *name)
+{
+ const struct dentry *parent = READ_ONCE(dentry->d_parent);
+ const struct inode *inode = READ_ONCE(parent->d_inode);
+ const struct super_block *sb = dentry->d_sb;
+ const struct unicode_map *um = sb->s_encoding;
+ struct qstr entry = QSTR_INIT(str, len);
+ int ret;
+
+ if (!inode || !needs_casefold(inode))
+ goto fallback;
+
+ ret = utf8_strncasecmp(um, name, &entry);
+ if (ret >= 0)
+ return ret;
+
+ if (sb_has_enc_strict_mode(sb))
+ return -EINVAL;
+fallback:
+ if (len != name->len)
+ return 1;
+ return !!memcmp(str, name->name, len);
+}
+EXPORT_SYMBOL(generic_ci_d_compare);
+
+struct hash_ctx {
+ struct utf8_itr_context ctx;
+ unsigned long hash;
+};
+
+static int do_generic_ci_hash(struct utf8_itr_context *ctx, int byte, int pos)
+{
+ struct hash_ctx *hctx = container_of(ctx, struct hash_ctx, ctx);
+
+ hctx->hash = partial_name_hash((unsigned char)byte, hctx->hash);
+ return 0;
+}
+
+int generic_ci_d_hash(const struct dentry *dentry, struct qstr *str)
+{
+ const struct inode *inode = READ_ONCE(dentry->d_inode);
+ struct super_block *sb = dentry->d_sb;
+ const struct unicode_map *um = sb->s_encoding;
+ int ret = 0;
+ struct hash_ctx hctx;
+
+ if (!inode || !needs_casefold(inode))
+ return 0;
+
+ hctx.hash = init_name_hash(dentry);
+ hctx.ctx.actor = do_generic_ci_hash;
+ ret = utf8_casefold_iter(um, str, &hctx.ctx);
+ if (ret < 0)
+ goto err;
+ str->hash = end_name_hash(hctx.hash);
+
+ return 0;
+err:
+ if (sb_has_enc_strict_mode(sb))
+ ret = -EINVAL;
+ return ret;
+}
+EXPORT_SYMBOL(generic_ci_d_hash);
+#endif
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 6eae91c0668f9..a260afbc06d22 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1382,6 +1382,12 @@ extern int send_sigurg(struct fown_struct *fown);
#define SB_ACTIVE (1<<30)
#define SB_NOUSER (1<<31)
+/* These flags relate to encoding and casefolding */
+#define SB_ENC_STRICT_MODE_FL (1 << 0)
+
+#define sb_has_enc_strict_mode(sb) \
+ (sb->s_encoding_flags & SB_ENC_STRICT_MODE_FL)
+
/*
* Umount options
*/
@@ -1449,6 +1455,10 @@ struct super_block {
#endif
#ifdef CONFIG_FS_VERITY
const struct fsverity_operations *s_vop;
+#endif
+#ifdef CONFIG_UNICODE
+ struct unicode_map *s_encoding;
+ __u16 s_encoding_flags;
#endif
struct hlist_bl_head s_roots; /* alternate root dentries for NFS */
struct list_head s_mounts; /* list of mounts; _not_ for fs use */
@@ -3361,6 +3371,18 @@ extern int generic_file_fsync(struct file *, loff_t, loff_t, int);
extern int generic_check_addressable(unsigned, u64);
+#ifdef CONFIG_UNICODE
+extern int generic_ci_d_hash(const struct dentry *dentry, struct qstr *str);
+extern int generic_ci_d_compare(const struct dentry *dentry, unsigned int len,
+ const char *str, const struct qstr *name);
+extern bool needs_casefold(const struct inode *dir);
+#else
+static inline bool needs_casefold(const struct inode *dir)
+{
+ return 0;
+}
+#endif
+
#ifdef CONFIG_MIGRATION
extern int buffer_migrate_page(struct address_space *,
struct page *, struct page *,
--
2.25.0.341.g760bfbb309-goog
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2020-02-08 1:36 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-08 1:35 [PATCH v7 0/8] Support fof Casefolding and Encryption Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-08 1:35 ` [PATCH v7 1/8] unicode: Add utf8_casefold_iter Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-12 3:38 ` Eric Biggers
2020-02-12 3:38 ` Eric Biggers
2020-02-12 3:38 ` [f2fs-dev] " Eric Biggers
2020-02-14 21:47 ` Daniel Rosenberg
2020-02-14 21:47 ` Daniel Rosenberg
2020-02-14 21:47 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-17 19:02 ` Gabriel Krisman Bertazi
2020-02-17 19:02 ` Gabriel Krisman Bertazi
2020-02-17 19:02 ` [f2fs-dev] " Gabriel Krisman Bertazi
2020-02-08 1:35 ` Daniel Rosenberg [this message]
2020-02-08 1:35 ` [PATCH v7 2/8] fs: Add standard casefolding support Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-08 2:12 ` Al Viro
2020-02-08 2:12 ` Al Viro
2020-02-08 2:12 ` [f2fs-dev] " Al Viro
2020-02-10 23:11 ` Daniel Rosenberg
2020-02-10 23:11 ` Daniel Rosenberg
2020-02-10 23:11 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-10 23:42 ` Al Viro
2020-02-10 23:42 ` Al Viro
2020-02-10 23:42 ` [f2fs-dev] " Al Viro
2020-02-12 6:34 ` Eric Biggers
2020-02-12 6:34 ` Eric Biggers
2020-02-12 6:34 ` [f2fs-dev] " Eric Biggers
2020-02-12 6:57 ` Eric Biggers
2020-02-12 6:57 ` Eric Biggers
2020-02-12 6:57 ` [f2fs-dev] " Eric Biggers
2020-02-20 2:27 ` Daniel Rosenberg
2020-02-20 2:27 ` Daniel Rosenberg
2020-02-20 2:27 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-12 3:55 ` Eric Biggers
2020-02-12 3:55 ` Eric Biggers
2020-02-12 3:55 ` [f2fs-dev] " Eric Biggers
2020-02-08 1:35 ` [PATCH v7 3/8] f2fs: Use generic " Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-12 4:05 ` Eric Biggers
2020-02-12 4:05 ` Eric Biggers
2020-02-12 4:05 ` [f2fs-dev] " Eric Biggers
2020-02-08 1:35 ` [PATCH v7 4/8] ext4: " Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-08 1:35 ` [PATCH v7 5/8] fscrypt: Have filesystems handle their d_ops Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-12 4:33 ` Eric Biggers
2020-02-12 4:33 ` Eric Biggers
2020-02-12 4:33 ` [f2fs-dev] " Eric Biggers
2020-02-08 1:35 ` [PATCH v7 6/8] f2fs: Handle casefolding with Encryption Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-12 5:10 ` Eric Biggers
2020-02-12 5:10 ` Eric Biggers
2020-02-12 5:10 ` [f2fs-dev] " Eric Biggers
2020-02-12 5:55 ` Al Viro
2020-02-12 5:55 ` Al Viro
2020-02-12 5:55 ` [f2fs-dev] " Al Viro
2020-02-12 6:06 ` Eric Biggers
2020-02-12 6:06 ` Eric Biggers
2020-02-12 6:06 ` [f2fs-dev] " Eric Biggers
2020-02-12 5:47 ` Eric Biggers
2020-02-12 5:47 ` Eric Biggers
2020-02-12 5:47 ` [f2fs-dev] " Eric Biggers
2020-02-08 1:35 ` [PATCH v7 7/8] ext4: Hande casefolding with encryption Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-12 5:59 ` Eric Biggers
2020-02-12 5:59 ` Eric Biggers
2020-02-12 5:59 ` [f2fs-dev] " Eric Biggers
2020-02-08 1:35 ` [PATCH v7 8/8] ext4: Optimize match for casefolded encrypted dirs Daniel Rosenberg
2020-02-08 1:35 ` Daniel Rosenberg
2020-02-08 1:35 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
2020-02-12 6:12 ` [PATCH v7 0/8] Support fof Casefolding and Encryption Eric Biggers
2020-02-12 6:12 ` Eric Biggers
2020-02-12 6:12 ` [f2fs-dev] " Eric Biggers
2020-02-13 0:01 ` Daniel Rosenberg
2020-02-13 0:01 ` Daniel Rosenberg
2020-02-13 0:01 ` [f2fs-dev] " Daniel Rosenberg via Linux-f2fs-devel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200208013552.241832-3-drosen@google.com \
--to=drosen@google.com \
--cc=adilger.kernel@dilger.ca \
--cc=chao@kernel.org \
--cc=corbet@lwn.net \
--cc=ebiggers@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=kernel-team@android.com \
--cc=krisman@collabora.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fscrypt@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=richard@nod.at \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.