Whamcloud - gitweb
LU-8648 all: remove all Sun license and URL references
[fs/lustre-release.git] / lustre / osd-ldiskfs / osd_iam_lvar.c
index 7ad8b10..be7ed47 100644 (file)
  * in the LICENSE file that accompanied this code).
  *
  * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see [sun.com URL with a
- * copy of GPLv2].
- *
- * 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.
+ * version 2 along with this program; If not, see
+ * http://www.gnu.org/licenses/gpl-2.0.html
  *
  * GPL HEADER END
  */
@@ -27,7 +23,7 @@
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2012, Intel Corporation.
+ * Copyright (c) 2012, 2015, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -158,17 +154,6 @@ static void e_print(const struct lvar_leaf_entry *ent)
         printk("        %p %8.8x \"%*.*s\"\n", ent, e_hash(ent),
                e_keysize(ent), e_keysize(ent), e_char(ent));
 }
-#if 0
-static int e_check(const struct iam_leaf *leaf,
-                   const struct lvar_leaf_entry *ent)
-{
-        const void *point = ent;
-        const void *start = leaf->il_bh->b_data;
-        return
-                start + sizeof(struct lvar_leaf_header) <= point &&
-                point + e_size(leaf, ent) < start + blocksize(leaf);
-}
-#endif
 
 static inline struct lvar_leaf_entry *e_next(const struct iam_leaf *leaf,
                                              const struct lvar_leaf_entry *ent)
@@ -200,14 +185,14 @@ static __u32 hash_build0(const char *name, int namelen)
                 struct ldiskfs_dx_hash_info hinfo;
 
                 hinfo.hash_version = LDISKFS_DX_HASH_TEA;
-                hinfo.seed = 0;
+               hinfo.seed = NULL;
                 ldiskfsfs_dirhash(name, namelen, &hinfo);
                 result = hinfo.hash;
                 if (LVAR_HASH_SANDWICH) {
                         __u32 result2;
 
                         hinfo.hash_version = LDISKFS_DX_HASH_TEA;
-                        hinfo.seed = 0;
+                       hinfo.seed = NULL;
                         ldiskfsfs_dirhash(name, namelen, &hinfo);
                         result2 = hinfo.hash;
                         result = (0xfc000000 & result2) | (0x03ffffff & result);
@@ -399,7 +384,7 @@ static int lvar_init(struct iam_leaf *l)
 
         head = n_head(l);
         used = h_used(head);
-        if (head->vlh_magic == le16_to_cpu(IAM_LVAR_LEAF_MAGIC) &&
+       if (le16_to_cpu(head->vlh_magic) == IAM_LVAR_LEAF_MAGIC &&
             used <= blocksize(l)) {
                 l->il_at = l->il_entries = lvar_lentry(n_start(l));
                 result = 0;
@@ -407,12 +392,12 @@ static int lvar_init(struct iam_leaf *l)
                 struct inode *obj;
 
                 obj = iam_leaf_container(l)->ic_object;
-                CERROR("Wrong magic in node %llu (#%lu): %#x != %#x or "
-                       "wrong used: %d",
-                       (unsigned long long)l->il_bh->b_blocknr, obj->i_ino,
-                       head->vlh_magic, le16_to_cpu(IAM_LVAR_LEAF_MAGIC),
-                       used);
-                result = -EIO;
+               CERROR("Wrong magic in node %llu (#%lu): %#x != %#x or "
+                      "wrong used: %d\n",
+                      (unsigned long long)l->il_bh->b_blocknr, obj->i_ino,
+                      le16_to_cpu(head->vlh_magic), IAM_LVAR_LEAF_MAGIC,
+                      used);
+               result = -EIO;
         }
         return result;
 }
@@ -422,7 +407,7 @@ static void lvar_fini(struct iam_leaf *l)
         l->il_entries = l->il_at = NULL;
 }
 
-struct iam_rec *lvar_rec(const struct iam_leaf *l)
+static struct iam_rec *lvar_rec(const struct iam_leaf *l)
 {
         assert_corr(n_at_rec(l));
         return e_rec(n_cur(l));
@@ -862,7 +847,7 @@ static int lvar_node_check(struct iam_path *path, struct iam_frame *frame)
                 struct lvar_root *root;
 
                 root = (void *)frame->bh->b_data;
-                if (le64_to_cpu(root->vr_magic) != IAM_LVAR_ROOT_MAGIC)
+               if (le32_to_cpu(root->vr_magic) != IAM_LVAR_ROOT_MAGIC)
                         return -EIO;
                 limit_correct = dx_root_limit(path);
         } else
@@ -1017,23 +1002,32 @@ int iam_lvar_create(struct inode *obj,
 
         sb = obj->i_sb;
         bsize = sb->s_blocksize;
-        root_node = osd_ldiskfs_append(handle, obj, &blknr, &result);
-        leaf_node = osd_ldiskfs_append(handle, obj, &blknr, &result);
-        if (root_node != NULL && leaf_node != NULL) {
-                lvar_root(root_node->b_data, bsize, keysize, ptrsize, recsize);
-                lvar_leaf(leaf_node->b_data, bsize, keysize, ptrsize, recsize);
-                ldiskfs_mark_inode_dirty(handle, obj);
-                result = ldiskfs_journal_dirty_metadata(handle, root_node);
-                if (result == 0)
-                        result = ldiskfs_journal_dirty_metadata(handle, leaf_node);
-                if (result != 0)
-                        ldiskfs_std_error(sb, result);
-        }
-        brelse(leaf_node);
-        brelse(root_node);
-        return result;
+       root_node = osd_ldiskfs_append(handle, obj, &blknr);
+       if (IS_ERR(root_node))
+               GOTO(out, result = PTR_ERR(root_node));
+
+       leaf_node = osd_ldiskfs_append(handle, obj, &blknr);
+       if (IS_ERR(leaf_node))
+               GOTO(out_root, result = PTR_ERR(leaf_node));
+
+       lvar_root(root_node->b_data, bsize, keysize, ptrsize, recsize);
+       lvar_leaf(leaf_node->b_data, bsize, keysize, ptrsize, recsize);
+       ldiskfs_mark_inode_dirty(handle, obj);
+       result = ldiskfs_handle_dirty_metadata(handle, NULL, root_node);
+       if (result == 0)
+               result = ldiskfs_handle_dirty_metadata(handle, NULL, leaf_node);
+       if (result != 0)
+               ldiskfs_std_error(sb, result);
+
+       brelse(leaf_node);
+
+       GOTO(out_root, result);
+
+out_root:
+       brelse(root_node);
+out:
+       return result;
 }
-EXPORT_SYMBOL(iam_lvar_create);
 
 static struct iam_operations lvar_ops = {
         .id_root_ptr    = lvar_root_ptr,
@@ -1059,7 +1053,7 @@ static int lvar_guess(struct iam_container *c)
         result = iam_node_read(c, lvar_root_ptr(c), NULL, &bh);
         if (result == 0) {
                 root = (void *)bh->b_data;
-                if (le64_to_cpu(root->vr_magic) == IAM_LVAR_ROOT_MAGIC) {
+               if (le32_to_cpu(root->vr_magic) == IAM_LVAR_ROOT_MAGIC) {
                         struct iam_descr *descr;
 
                         descr = c->ic_descr;