From 37c271b216b73109879cfc9fbe7146ab9b52fa0c Mon Sep 17 00:00:00 2001 From: David Sterba Date: Mon, 28 Aug 2017 17:27:08 +0200 Subject: btrfs-progs: move transaction implementation out of header Signed-off-by: David Sterba --- Makefile | 2 +- transaction.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ transaction.h | 31 ++----------------------------- 3 files changed, 52 insertions(+), 30 deletions(-) create mode 100644 transaction.c diff --git a/Makefile b/Makefile index 62c535c8..a114ecac 100644 --- a/Makefile +++ b/Makefile @@ -103,7 +103,7 @@ objects = ctree.o disk-io.o kernel-lib/radix-tree.o extent-tree.o print-tree.o \ qgroup.o free-space-cache.o kernel-lib/list_sort.o props.o \ kernel-shared/ulist.o qgroup-verify.o backref.o string-table.o task-utils.o \ inode.o file.o find-root.o free-space-tree.o help.o send-dump.o \ - fsfeatures.o kernel-lib/tables.o kernel-lib/raid56.o + fsfeatures.o kernel-lib/tables.o kernel-lib/raid56.o transaction.o cmds_objects = cmds-subvolume.o cmds-filesystem.o cmds-device.o cmds-scrub.o \ cmds-inspect.o cmds-balance.o cmds-send.o cmds-receive.o \ cmds-quota.o cmds-qgroup.o cmds-replace.o cmds-check.o \ diff --git a/transaction.c b/transaction.c new file mode 100644 index 00000000..b9280015 --- /dev/null +++ b/transaction.c @@ -0,0 +1,49 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License v2 as published by the Free Software Foundation. + * + * 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 for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 021110-1307, USA. + */ + +#include "kerncompat.h" +#include "transaction.h" + +#include "messages.h" + +struct btrfs_trans_handle* btrfs_start_transaction(struct btrfs_root *root, + int num_blocks) +{ + struct btrfs_fs_info *fs_info = root->fs_info; + struct btrfs_trans_handle *h = kzalloc(sizeof(*h), GFP_NOFS); + + if (!h) + return ERR_PTR(-ENOMEM); + if (root->commit_root) { + error("commit_root aleady set when starting transaction"); + kfree(h); + return ERR_PTR(-EINVAL); + } + if (fs_info->running_transaction) { + error("attempt to start transaction over already running one"); + kfree(h); + return ERR_PTR(-EINVAL); + } + fs_info->running_transaction = h; + fs_info->generation++; + h->transid = fs_info->generation; + h->blocks_reserved = num_blocks; + root->last_trans = h->transid; + root->commit_root = root->node; + extent_buffer_get(root->node); + + return h; +} diff --git a/transaction.h b/transaction.h index ce638713..7f6be051 100644 --- a/transaction.h +++ b/transaction.h @@ -22,8 +22,6 @@ #include "kerncompat.h" #include "ctree.h" -#include "messages.h" - struct btrfs_trans_handle { u64 transid; u64 alloc_exclude_start; @@ -33,32 +31,7 @@ struct btrfs_trans_handle { struct btrfs_block_group_cache *block_group; }; -static inline struct btrfs_trans_handle * -btrfs_start_transaction(struct btrfs_root *root, int num_blocks) -{ - struct btrfs_fs_info *fs_info = root->fs_info; - struct btrfs_trans_handle *h = kzalloc(sizeof(*h), GFP_NOFS); - - if (!h) - return ERR_PTR(-ENOMEM); - if (root->commit_root) { - error("commit_root aleady set when starting transaction"); - kfree(h); - return ERR_PTR(-EINVAL); - } - if (fs_info->running_transaction) { - error("attempt to start transaction over already running one"); - kfree(h); - return ERR_PTR(-EINVAL); - } - fs_info->running_transaction = h; - fs_info->generation++; - h->transid = fs_info->generation; - h->blocks_reserved = num_blocks; - root->last_trans = h->transid; - root->commit_root = root->node; - extent_buffer_get(root->node); - return h; -} +struct btrfs_trans_handle* btrfs_start_transaction(struct btrfs_root *root, + int num_blocks); #endif -- cgit v1.2.3