ocfs2/xattr: Proper hash collision handle in bucket division
authorTao Ma <tao.ma@oracle.com>
Sun, 26 Oct 2008 22:06:24 +0000 (06:06 +0800)
committerMark Fasheh <mfasheh@suse.com>
Mon, 10 Nov 2008 17:51:47 +0000 (09:51 -0800)
commit80bcaf3469b8aefd316d4ceb27d9af7cfbb0b913
tree250e38e24f88aeb5bd89b5f4fca3304207eec0f1
parent4c1bbf1ba631d7db61ce3462349a3f5d14ae3009
ocfs2/xattr: Proper hash collision handle in bucket division

In ocfs2/xattr, we must make sure the xattrs which have the same hash value
exist in the same bucket so that the search schema can work. But in the old
implementation, when we want to extend a bucket, we just move half number of
xattrs to the new bucket. This works in most cases, but if we are lucky
enough we will move 2 xattrs into 2 different buckets. This means that an
xattr from the previous bucket cannot be found anymore. This patch fix this
problem by finding the right position during extending the bucket and extend
an empty bucket if needed.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
Cc: Joel Becker <joel.becker@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
fs/ocfs2/xattr.c