xfs
[Top] [All Lists]

[PATCH 02/10] xfs: rename XFS_CMP_CASE to XFS_CMP_MATCH

To: linux-fsdevel@xxxxxxxxxxxxxxx
Subject: [PATCH 02/10] xfs: rename XFS_CMP_CASE to XFS_CMP_MATCH
From: Ben Myers <bpm@xxxxxxx>
Date: Thu, 18 Sep 2014 15:09:10 -0500
Cc: xfs@xxxxxxxxxxx, olaf@xxxxxxx, tinguely@xxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20140918195650.GI19952@xxxxxxx>
References: <20140918195650.GI19952@xxxxxxx>
User-agent: Mutt/1.5.20 (2009-06-14)
From: Olaf Weber <olaf@xxxxxxx>

Rename XFS_CMP_CASE to XFS_CMP_MATCH. With unicode filenames and
normalization, different strings will match on other criteria than
case insensitivity.

Signed-off-by: Olaf Weber <olaf@xxxxxxx>
---
 fs/xfs/libxfs/xfs_da_btree.h  | 2 +-
 fs/xfs/libxfs/xfs_dir2.c      | 9 ++++++---
 fs/xfs/libxfs/xfs_dir2_node.c | 2 +-
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/fs/xfs/libxfs/xfs_da_btree.h b/fs/xfs/libxfs/xfs_da_btree.h
index 6e153e3..9ebcc23 100644
--- a/fs/xfs/libxfs/xfs_da_btree.h
+++ b/fs/xfs/libxfs/xfs_da_btree.h
@@ -52,7 +52,7 @@ struct xfs_da_geometry {
 enum xfs_dacmp {
        XFS_CMP_DIFFERENT,      /* names are completely different */
        XFS_CMP_EXACT,          /* names are exactly the same */
-       XFS_CMP_CASE            /* names are same but differ in case */
+       XFS_CMP_MATCH           /* names are same but differ in encoding */
 };
 
 /*
diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c
index 6cef221..32e769b 100644
--- a/fs/xfs/libxfs/xfs_dir2.c
+++ b/fs/xfs/libxfs/xfs_dir2.c
@@ -74,7 +74,7 @@ xfs_ascii_ci_compname(
                        continue;
                if (tolower(args->name[i]) != tolower(name[i]))
                        return XFS_CMP_DIFFERENT;
-               result = XFS_CMP_CASE;
+               result = XFS_CMP_MATCH;
        }
 
        return result;
@@ -315,8 +315,11 @@ xfs_dir_cilookup_result(
 {
        if (args->cmpresult == XFS_CMP_DIFFERENT)
                return -ENOENT;
-       if (args->cmpresult != XFS_CMP_CASE ||
-                                       !(args->op_flags & XFS_DA_OP_CILOOKUP))
+       if (args->cmpresult == XFS_CMP_EXACT)
+               return -EEXIST;
+       ASSERT(args->cmpresult == XFS_CMP_MATCH);
+       /* Only dup the found name if XFS_DA_OP_CILOOKUP is set. */
+       if (!(args->op_flags & XFS_DA_OP_CILOOKUP))
                return -EEXIST;
 
        args->value = kmem_alloc(len, KM_NOFS | KM_MAYFAIL);
diff --git a/fs/xfs/libxfs/xfs_dir2_node.c b/fs/xfs/libxfs/xfs_dir2_node.c
index 1778c40..9d46e8d 100644
--- a/fs/xfs/libxfs/xfs_dir2_node.c
+++ b/fs/xfs/libxfs/xfs_dir2_node.c
@@ -2023,7 +2023,7 @@ xfs_dir2_node_lookup(
        error = xfs_da3_node_lookup_int(state, &rval);
        if (error)
                rval = error;
-       else if (rval == -ENOENT && args->cmpresult == XFS_CMP_CASE) {
+       else if (rval == -ENOENT && args->cmpresult == XFS_CMP_MATCH) {
                /* If a CI match, dup the actual name and return -EEXIST */
                xfs_dir2_data_entry_t   *dep;
 
-- 
1.7.12.4

<Prev in Thread] Current Thread [Next in Thread>