This optional patch implements the NLS support as a CONFIG option. Signed-off-by: Barry Naujok <bnaujok@xxxxxxx> --- fs/xfs/Kconfig | 10 ++++++++++ fs/xfs/xfs_unicode.c | 4 ++++ fs/xfs/xfs_unicode.h | 17 ++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) Index: kern_ci/fs/xfs/Kconfig =================================================================== --- kern_ci.orig/fs/xfs/Kconfig +++ kern_ci/fs/xfs/Kconfig @@ -87,6 +87,16 @@ config XFS_UNICODE If you don't require UTF-8 enforcement, say N. +config XFS_UNICODE_NLS + bool "XFS NLS Unicode support + depends on XFS_UNICODE + help + NLS (Native Language Support) allows non-UTF8 locales to + interact with XFS Unicode support. To specify the character + set being used, use the "-n nls=<charset>" mount option. + + If you don't require NLS conversion in XFS, say N. + config XFS_RT bool "XFS Realtime subvolume support" depends on XFS_FS Index: kern_ci/fs/xfs/xfs_unicode.c =================================================================== --- kern_ci.orig/fs/xfs/xfs_unicode.c +++ kern_ci/fs/xfs/xfs_unicode.c @@ -498,6 +498,8 @@ xfs_unicode_uninit(void) mutex_destroy(&cft_lock); } +#ifdef CONFIG_XFS_UNICODE_NLS + /* * Convert UTF-8 (Unicode) string into the specified character set in "nls". * If no NLS conversion is required (mp->m_nls = NULL), the pointers are @@ -634,3 +636,5 @@ xfs_unicode_nls_free( if (src_name != conv_name) xfs_da_name_free((uchar_t *)conv_name); } + +#endif /* CONFIG_XFS_UNICODE_NLS */ Index: kern_ci/fs/xfs/xfs_unicode.h =================================================================== --- kern_ci.orig/fs/xfs/xfs_unicode.h +++ kern_ci/fs/xfs/xfs_unicode.h @@ -65,6 +65,8 @@ int xfs_unicode_validate(const uchar_t * int xfs_unicode_read_cft(struct xfs_mount *mp); void xfs_unicode_free_cft(const xfs_cft_t *cft); +#ifdef CONFIG_XFS_UNICODE_NLS + #define xfs_is_using_nls(mp) ((mp)->m_nls != NULL) int xfs_unicode_to_nls(struct xfs_mount *mp, const uchar_t *uni_name, @@ -73,7 +75,20 @@ int xfs_nls_to_unicode(struct xfs_mount int nls_namelen, const uchar_t **uni_name, int *uni_namelen); void xfs_unicode_nls_free(const uchar_t *src_name, const uchar_t *conv_name); -#else +#else /* CONFIG_XFS_UNICODE_NLS */ + +#define xfs_is_using_nls(mp) 0 + +#define xfs_unicode_to_nls(mp, uname, ulen, pnname, pnlen) \ + ((*(pnname)) = (uname), (*(pnlen)) = (ulen), 0) +#define xfs_nls_to_unicode(mp, nname, nlen, puname, pulen) \ + ((*(puname)) = (nname), (*(pulen)) = (nlen), \ + xfs_unicode_validate(nname, nlen)) +#define xfs_unicode_nls_free(sname, cname) + +#endif /* CONFIG_XFS_UNICODE_NLS */ + +#else /* CONFIG_XFS_UNICODE */ #define xfs_unicode_nameops xfs_default_nameops #define xfs_unicode_ci_nameops xfs_default_nameops -- -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html