In preparation to call these from libfs, expose dentry_string_cmp in the header file. Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxx> --- fs/dcache.c | 53 ------------------------------------------ include/linux/dcache.h | 53 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/fs/dcache.c b/fs/dcache.c index b813528fb147..7bb17596d0ad 100644 --- a/fs/dcache.c +++ b/fs/dcache.c @@ -201,59 +201,6 @@ static int __init init_fs_dcache_sysctls(void) fs_initcall(init_fs_dcache_sysctls); #endif -/* - * Compare 2 name strings, return 0 if they match, otherwise non-zero. - * The strings are both count bytes long, and count is non-zero. - */ -#ifdef CONFIG_DCACHE_WORD_ACCESS - -#include <asm/word-at-a-time.h> -/* - * NOTE! 'cs' and 'scount' come from a dentry, so it has a - * aligned allocation for this particular component. We don't - * strictly need the load_unaligned_zeropad() safety, but it - * doesn't hurt either. - * - * In contrast, 'ct' and 'tcount' can be from a pathname, and do - * need the careful unaligned handling. - */ -static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char *ct, unsigned tcount) -{ - unsigned long a,b,mask; - - for (;;) { - a = read_word_at_a_time(cs); - b = load_unaligned_zeropad(ct); - if (tcount < sizeof(unsigned long)) - break; - if (unlikely(a != b)) - return 1; - cs += sizeof(unsigned long); - ct += sizeof(unsigned long); - tcount -= sizeof(unsigned long); - if (!tcount) - return 0; - } - mask = bytemask_from_count(tcount); - return unlikely(!!((a ^ b) & mask)); -} - -#else - -static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char *ct, unsigned tcount) -{ - do { - if (*cs != *ct) - return 1; - cs++; - ct++; - tcount--; - } while (tcount); - return 0; -} - -#endif - static inline int dentry_cmp(const struct dentry *dentry, const unsigned char *ct, unsigned tcount) { /* diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 1666c387861f..0f210a396074 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -592,4 +592,57 @@ static inline struct dentry *d_next_sibling(const struct dentry *dentry) return hlist_entry_safe(dentry->d_sib.next, struct dentry, d_sib); } +/* + * Compare 2 name strings, return 0 if they match, otherwise non-zero. + * The strings are both count bytes long, and count is non-zero. + */ +#ifdef CONFIG_DCACHE_WORD_ACCESS + +#include <asm/word-at-a-time.h> +/* + * NOTE! 'cs' and 'scount' come from a dentry, so it has a + * aligned allocation for this particular component. We don't + * strictly need the load_unaligned_zeropad() safety, but it + * doesn't hurt either. + * + * In contrast, 'ct' and 'tcount' can be from a pathname, and do + * need the careful unaligned handling. + */ +static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char *ct, unsigned tcount) +{ + unsigned long a,b,mask; + + for (;;) { + a = read_word_at_a_time(cs); + b = load_unaligned_zeropad(ct); + if (tcount < sizeof(unsigned long)) + break; + if (unlikely(a != b)) + return 1; + cs += sizeof(unsigned long); + ct += sizeof(unsigned long); + tcount -= sizeof(unsigned long); + if (!tcount) + return 0; + } + mask = bytemask_from_count(tcount); + return unlikely(!!((a ^ b) & mask)); +} + +#else + +static inline int dentry_string_cmp(const unsigned char *cs, const unsigned char *ct, unsigned tcount) +{ + do { + if (*cs != *ct) + return 1; + cs++; + ct++; + tcount--; + } while (tcount); + return 0; +} + +#endif + #endif /* __LINUX_DCACHE_H */ -- 2.43.0