]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_scrub: only run ascii name checks if unicode name checker
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 12 Apr 2018 15:34:08 +0000 (10:34 -0500)
committerEric Sandeen <sandeen@redhat.com>
Thu, 12 Apr 2018 15:34:08 +0000 (10:34 -0500)
Skip the ASCII name checks if the Unicode name checker is going to run,
since the latter covers everything that the former does.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
scrub/phase5.c

index e0e7e8c7104773d76c2ee7ddcd6e7a8ce58115f7..01038f77858a728f986758d7b4c0eb4b6672edcb 100644 (file)
@@ -113,11 +113,11 @@ xfs_scrub_scan_dirents(
 
        dentry = readdir(dir);
        while (dentry) {
-               moveon = xfs_scrub_check_name(ctx, descr, _("directory"),
-                               dentry->d_name);
-               if (!moveon)
-                       break;
-               moveon = unicrash_check_dir_name(uc, descr, dentry);
+               if (uc)
+                       moveon = unicrash_check_dir_name(uc, descr, dentry);
+               else
+                       moveon = xfs_scrub_check_name(ctx, descr,
+                                       _("directory"), dentry->d_name);
                if (!moveon)
                        break;
                dentry = readdir(dir);
@@ -161,7 +161,7 @@ xfs_scrub_scan_fhandle_namespace_xattrs(
        char                            keybuf[XATTR_NAME_MAX + 1];
        struct attrlist                 *attrlist = (struct attrlist *)attrbuf;
        struct attrlist_ent             *ent;
-       struct unicrash                 *uc;
+       struct unicrash                 *uc = NULL;
        bool                            moveon = true;
        int                             i;
        int                             error;
@@ -181,11 +181,13 @@ xfs_scrub_scan_fhandle_namespace_xattrs(
                        ent = ATTR_ENTRY(attrlist, i);
                        snprintf(keybuf, XATTR_NAME_MAX, "%s.%s", attr_ns->name,
                                        ent->a_name);
-                       moveon = xfs_scrub_check_name(ctx, descr,
-                                       _("extended attribute"), keybuf);
-                       if (!moveon)
-                               goto out;
-                       moveon = unicrash_check_xattr_name(uc, descr, keybuf);
+                       if (uc)
+                               moveon = unicrash_check_xattr_name(uc, descr,
+                                               keybuf);
+                       else
+                               moveon = xfs_scrub_check_name(ctx, descr,
+                                               _("extended attribute"),
+                                               keybuf);
                        if (!moveon)
                                goto out;
                }