X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fobdclass%2Fmea.c;h=550bc257cf764bb7123b480e55351513f0e1efd2;hp=15f15d895ce2e3059efbde90a34a14e4ae32a3f1;hb=56cc9aeb7151f908ab9cac034ceaf11098bac6a4;hpb=6e9079307b12abefe2e21461fd3a7be305d467a7 diff --git a/lustre/obdclass/mea.c b/lustre/obdclass/mea.c index 15f15d8..550bc25 100644 --- a/lustre/obdclass/mea.c +++ b/lustre/obdclass/mea.c @@ -1,22 +1,37 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * Copyright (C) 2002, 2003 Cluster File Systems, Inc. + * GPL HEADER START * - * This file is part of Lustre, http://www.lustre.org. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * - * Lustre is free software; you can redistribute it and/or - * modify it under the terms of version 2 of the GNU General Public - * License as published by the Free Software Foundation. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 only, + * as published by the Free Software Foundation. * - * Lustre is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License version 2 for more details (a copy is included + * in the LICENSE file that accompanied this code). * - * You should have received a copy of the GNU General Public License - * along with Lustre; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + * GPL HEADER END + */ +/* + * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Use is subject to license terms. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. */ #define DEBUG_SUBSYSTEM S_CLASS @@ -35,11 +50,18 @@ #include #ifdef __KERNEL__ -#include + #ifdef HAVE_SERVER_SUPPORT -/* LDISKFS_SB() */ + +#ifdef HAVE_EXT4_LDISKFS +#include +#include +#else +#include #include #endif + +#endif #endif static int mea_last_char_hash(int count, char *name, int namelen) { @@ -66,8 +88,6 @@ static int mea_all_chars_hash(int count, char *name, int namelen) /* This hash calculate method must be same as the lvar hash method */ #define LVAR_HASH_SANDWICH (0) -#define LVAR_HASH_TEA (1) -#define LVAR_HASH_R5 (0) #define LVAR_HASH_PREFIX (0) static __u32 hash_build0(const char *name, int namelen) @@ -88,10 +108,7 @@ static __u32 hash_build0(const char *name, int namelen) } else { struct ldiskfs_dx_hash_info hinfo; - if (LVAR_HASH_TEA) - hinfo.hash_version = LDISKFS_DX_HASH_TEA; - else - hinfo.hash_version = LDISKFS_DX_HASH_R5; + hinfo.hash_version = LDISKFS_DX_HASH_TEA; hinfo.seed = 0; ldiskfsfs_dirhash(name, namelen, &hinfo); result = hinfo.hash; @@ -117,8 +134,8 @@ static __u32 hash_build(const char *name, int namelen) { __u32 hash; - hash = (hash_build0(name, namelen) << 1) & MAX_HASH_SIZE; - if (hash > MAX_HASH_SIZE - HASH_GRAY_AREA) + hash = (hash_build0(name, namelen) << 1) & MAX_HASH_SIZE_32; + if (hash > MAX_HASH_SIZE_32 - HASH_GRAY_AREA) hash &= HASH_GRAY_AREA - 1; return hash; } @@ -127,9 +144,9 @@ static int mea_hash_segment(int count, const char *name, int namelen) { __u32 hash; - LASSERT(IS_PO2(MAX_HASH_SIZE + 1)); + LASSERT(IS_PO2(MAX_HASH_SIZE_32 + 1)); - hash = hash_build(name, namelen) / (MAX_HASH_SIZE / count); + hash = hash_build(name, namelen) / (MAX_HASH_SIZE_32 / count); LASSERTF(hash < count, "hash %x count %d \n", hash, count); return hash; @@ -137,7 +154,6 @@ static int mea_hash_segment(int count, const char *name, int namelen) #else static int mea_hash_segment(int count, char *name, int namelen) { -#warning "fix for liblustre" return 0; } #endif @@ -178,4 +194,3 @@ int mea_name2idx(struct lmv_stripe_md *mea, const char *name, int namelen) LASSERT(c < mea->mea_count); return c; } -