aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6
diff options
context:
space:
mode:
authorBarry Naujok <bnaujok@sgi.com>2008-05-21 02:58:55 -0400
committerNiv Sardi <xaiki@debian.org>2008-07-28 02:58:42 -0400
commit189f4bf22bdc3c2402b038016d11fd3cb1c89f07 (patch)
tree98a168b063b87609fc28685ace7ce0fec589beff /fs/xfs/linux-2.6
parent384f3ced07efdddf6838f6527366089d37843c94 (diff)
[XFS] XFS: ASCII case-insensitive support
Implement ASCII case-insensitive support. It's primary purpose is for supporting existing filesystems that already use this case-insensitive mode migrated from IRIX. But, if you only need ASCII-only case-insensitive support (ie. English only) and will never use another language, then this mode is perfectly adequate. ASCII-CI is implemented by generating hashes based on lower-case letters and doing lower-case compares. It implements a new xfs_nameops vector for doing the hashes and comparisons for all filename operations. To create a filesystem with this CI mode, use: # mkfs.xfs -n version=ci <device> SGI-PV: 981516 SGI-Modid: xfs-linux-melb:xfs-kern:31209a Signed-off-by: Barry Naujok <bnaujok@sgi.com> Signed-off-by: Christoph Hellwig <hch@infradead.org>
Diffstat (limited to 'fs/xfs/linux-2.6')
-rw-r--r--fs/xfs/linux-2.6/xfs_linux.h1
-rw-r--r--fs/xfs/linux-2.6/xfs_super.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h
index 4edc46915b57..aded57321b12 100644
--- a/fs/xfs/linux-2.6/xfs_linux.h
+++ b/fs/xfs/linux-2.6/xfs_linux.h
@@ -76,6 +76,7 @@
76#include <linux/log2.h> 76#include <linux/log2.h>
77#include <linux/spinlock.h> 77#include <linux/spinlock.h>
78#include <linux/random.h> 78#include <linux/random.h>
79#include <linux/ctype.h>
79 80
80#include <asm/page.h> 81#include <asm/page.h>
81#include <asm/div64.h> 82#include <asm/div64.h>
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
index 41eea24a46e4..cce59cc6e748 100644
--- a/fs/xfs/linux-2.6/xfs_super.c
+++ b/fs/xfs/linux-2.6/xfs_super.c
@@ -569,7 +569,10 @@ xfs_set_inodeops(
569 inode->i_mapping->a_ops = &xfs_address_space_operations; 569 inode->i_mapping->a_ops = &xfs_address_space_operations;
570 break; 570 break;
571 case S_IFDIR: 571 case S_IFDIR:
572 inode->i_op = &xfs_dir_inode_operations; 572 if (xfs_sb_version_hasasciici(&XFS_M(inode->i_sb)->m_sb))
573 inode->i_op = &xfs_dir_ci_inode_operations;
574 else
575 inode->i_op = &xfs_dir_inode_operations;
573 inode->i_fop = &xfs_dir_file_operations; 576 inode->i_fop = &xfs_dir_file_operations;
574 break; 577 break;
575 case S_IFLNK: 578 case S_IFLNK: