X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Futils%2Flibiam.c;h=39a05bb4d271bc256baf8e402be6d52db2dcdc72;hb=2f8d7b4679de3fa467040aa61733f262714e39c9;hp=dcdc8756c55d180d1b9ebc405c39d39a5031ab52;hpb=857874862ddffa816593e8d1c1f65587ca226bb7;p=fs%2Flustre-release.git diff --git a/lustre/utils/libiam.c b/lustre/utils/libiam.c index dcdc875..39a05bb 100644 --- a/lustre/utils/libiam.c +++ b/lustre/utils/libiam.c @@ -1,31 +1,41 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: +/* + * GPL HEADER START * - * libiam.c - * iam user level library + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * - * Copyright (c) 2006 Cluster File Systems, Inc. - * Author: Wang Di - * Author: Nikita Danilov - * Author: Fan Yong + * 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. * - * This file is part of the Lustre file system, http://www.lustre.org - * Lustre is a trademark of Cluster File Systems, Inc. + * 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 may have signed or agreed to another license before downloading - * this software. If so, you are bound by the terms and conditions - * of that agreement, and the following does not apply to you. See the - * LICENSE file included with this distribution for more information. + * You should have received a copy of the GNU General Public License + * version 2 along with this program; If not, see + * http://www.gnu.org/licenses/gpl-2.0.html * - * If you did not agree to a different license, then this copy of Lustre - * is open source 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. + * GPL HEADER END + */ +/* + * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Use is subject to license terms. * - * In either case, 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 - * license text for more details. + * Copyright (c) 2014, 2015, Intel Corporation. + */ +/* + * This file is part of Lustre, http://www.lustre.org/ + * Lustre is a trademark of Sun Microsystems, Inc. + * + * lustre/utils/libiam.c + * + * iam user level library + * + * Author: Wang Di + * Author: Nikita Danilov + * Author: Fan Yong */ #include @@ -33,17 +43,12 @@ #include #include #include +#include #include -#include - +#include #include -#ifdef HAVE_ENDIAN_H -#include -#endif - -#include -#include +#include #include typedef __u32 lvar_hash_t; @@ -139,10 +144,10 @@ static void lfix_root(void *buf, root = buf; *root = (typeof(*root)) { - .ilr_magic = cpu_to_le64(IAM_LFIX_ROOT_MAGIC), - .ilr_keysize = cpu_to_le16(keysize), - .ilr_recsize = cpu_to_le16(recsize), - .ilr_ptrsize = cpu_to_le16(ptrsize), + .ilr_magic = htole64(IAM_LFIX_ROOT_MAGIC), + .ilr_keysize = htole16(keysize), + .ilr_recsize = htole16(recsize), + .ilr_ptrsize = htole16(ptrsize), .ilr_indirect_levels = 0 }; @@ -151,7 +156,7 @@ static void lfix_root(void *buf, /* * limit itself + one pointer to the leaf. */ - .count = cpu_to_le16(2), + .count = htole16(2), .limit = lfix_root_limit(blocksize, keysize + ptrsize) }; @@ -171,9 +176,9 @@ static void lfix_root(void *buf, entry += keysize; /* now @entry points to */ if (ptrsize == 4) - STORE_UNALIGNED(cpu_to_le32(1), (u_int32_t *)entry); + STORE_UNALIGNED(htole32(1), (u_int32_t *)entry); else - STORE_UNALIGNED(cpu_to_le64(1), (u_int64_t *)entry); + STORE_UNALIGNED(htole64(1), (u_int64_t *)entry); } static void lfix_leaf(void *buf, @@ -184,12 +189,12 @@ static void lfix_leaf(void *buf, /* form leaf */ head = buf; *head = (typeof(*head)) { - .ill_magic = cpu_to_le16(IAM_LEAF_HEADER_MAGIC), + .ill_magic = htole16(IAM_LEAF_HEADER_MAGIC), /* * Leaf contains an entry with the smallest possible key * (created by zeroing). */ - .ill_count = cpu_to_le16(1), + .ill_count = htole16(1), }; } @@ -209,9 +214,9 @@ static void lvar_root(void *buf, isize = sizeof(lvar_hash_t) + ptrsize; root = buf; *root = (typeof(*root)) { - .vr_magic = cpu_to_le32(IAM_LVAR_ROOT_MAGIC), - .vr_recsize = cpu_to_le16(recsize), - .vr_ptrsize = cpu_to_le16(ptrsize), + .vr_magic = htole32(IAM_LVAR_ROOT_MAGIC), + .vr_recsize = htole16(recsize), + .vr_ptrsize = htole16(ptrsize), .vr_indirect_levels = 0 }; @@ -220,7 +225,7 @@ static void lvar_root(void *buf, /* * limit itself + one pointer to the leaf. */ - .count = cpu_to_le16(2), + .count = htole16(2), .limit = lvar_root_limit(blocksize, keysize + ptrsize) }; @@ -240,9 +245,9 @@ static void lvar_root(void *buf, entry += sizeof(lvar_hash_t); /* now @entry points to */ if (ptrsize == 4) - STORE_UNALIGNED(cpu_to_le32(1), (u_int32_t *)entry); + STORE_UNALIGNED(htole32(1), (u_int32_t *)entry); else - STORE_UNALIGNED(cpu_to_le64(1), (u_int64_t *)entry); + STORE_UNALIGNED(htole64(1), (u_int64_t *)entry); } static int lvar_esize(int namelen, int recsize) @@ -260,8 +265,8 @@ static void lvar_leaf(void *buf, /* form leaf */ head = buf; *head = (typeof(*head)) { - .vlh_magic = cpu_to_le16(IAM_LVAR_LEAF_MAGIC), - .vlh_used = cpu_to_le16(sizeof *head + lvar_esize(0, recsize)) + .vlh_magic = htole16(IAM_LVAR_LEAF_MAGIC), + .vlh_used = htole16(sizeof *head + lvar_esize(0, recsize)) }; rec = (void *)(head + 1); rec[offsetof(struct lvar_leaf_entry, vle_key)] = recsize; @@ -323,11 +328,11 @@ static char *iam_convert(int size, int need_convert, char *source) if (source == NULL) return NULL; - ptr = calloc(size + 1, sizeof(char)); - if (ptr == NULL) - return NULL; + if (need_convert) { + ptr = calloc(size + 1, sizeof(char)); + if (ptr == NULL) + return NULL; - if (need_convert) { opt = packdigit((unsigned char*)source); if (opt == NULL) { free(ptr); @@ -337,7 +342,7 @@ static char *iam_convert(int size, int need_convert, char *source) free(opt); } } else { - strncpy(ptr, source, size + 1); + ptr = strdup(source); } return ptr;