- int keysize, int ptrsize, int recsize, handle_t *handle)
-{
- struct buffer_head *root_node;
- struct buffer_head *leaf_node;
- struct super_block *sb;
-
- u32 blknr;
- int result = 0;
- unsigned long bsize;
-
- assert_corr(obj->i_size == 0);
-
- 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;
-}
-EXPORT_SYMBOL(iam_lvar_create);
-
-static struct iam_operations lvar_ops = {
- .id_root_ptr = lvar_root_ptr,
- .id_node_read = iam_node_read,
- .id_node_init = lvar_node_init,
- .id_node_check = lvar_node_check,
- .id_node_load = lvar_node_load,
- .id_ikeycmp = lvar_ikeycmp,
- .id_root_inc = lvar_root_inc,
- .id_ipd_alloc = lvar_ipd_alloc,
- .id_ipd_free = iam_ipd_free,
- .id_name = "lvar"
+ int keysize, int ptrsize, int recsize, handle_t *handle)
+{
+ struct buffer_head *root_node;
+ struct buffer_head *leaf_node;
+ struct super_block *sb;
+
+ u32 blknr;
+ int result = 0;
+ unsigned long bsize;
+
+ assert_corr(obj->i_size == 0);
+
+ sb = obj->i_sb;
+ bsize = sb->s_blocksize;
+ 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;
+}
+
+static const struct iam_operations lvar_ops = {
+ .id_root_ptr = lvar_root_ptr,
+ .id_node_read = iam_node_read,
+ .id_node_init = lvar_node_init,
+ .id_node_check = lvar_node_check,
+ .id_node_load = lvar_node_load,
+ .id_ikeycmp = lvar_ikeycmp,
+ .id_root_inc = lvar_root_inc,
+ .id_ipd_alloc = lvar_ipd_alloc,
+ .id_ipd_free = iam_ipd_free,
+ .id_name = "lvar"