aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/transaction.c
diff options
context:
space:
mode:
authorChris Mason <chris.mason@fusionio.com>2012-07-25 19:17:39 -0400
committerChris Mason <chris.mason@fusionio.com>2012-07-25 19:19:10 -0400
commit113c1cb530e10bcada93d88ffaa6b521aae2d251 (patch)
treee41776281314eb8fdc6b07e1533491e5f9ec21af /fs/btrfs/transaction.c
parentcd1cfc49153ba2bef247e500d8bd4d135193ece9 (diff)
parent31db9f7c23fbf7e95026143f79645de6507b583b (diff)
Merge branch 'send-v2' of git://github.com/ablock84/linux-btrfs into for-linus
This is the kernel portion of btrfs send/receive Conflicts: fs/btrfs/Makefile fs/btrfs/backref.h fs/btrfs/ctree.c fs/btrfs/ioctl.c fs/btrfs/ioctl.h Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r--fs/btrfs/transaction.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c
index cc20e95ea28..7ac7cdcc294 100644
--- a/fs/btrfs/transaction.c
+++ b/fs/btrfs/transaction.c
@@ -22,6 +22,7 @@
22#include <linux/writeback.h> 22#include <linux/writeback.h>
23#include <linux/pagemap.h> 23#include <linux/pagemap.h>
24#include <linux/blkdev.h> 24#include <linux/blkdev.h>
25#include <linux/uuid.h>
25#include "ctree.h" 26#include "ctree.h"
26#include "disk-io.h" 27#include "disk-io.h"
27#include "transaction.h" 28#include "transaction.h"
@@ -953,11 +954,13 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
953 struct dentry *dentry; 954 struct dentry *dentry;
954 struct extent_buffer *tmp; 955 struct extent_buffer *tmp;
955 struct extent_buffer *old; 956 struct extent_buffer *old;
957 struct timespec cur_time = CURRENT_TIME;
956 int ret; 958 int ret;
957 u64 to_reserve = 0; 959 u64 to_reserve = 0;
958 u64 index = 0; 960 u64 index = 0;
959 u64 objectid; 961 u64 objectid;
960 u64 root_flags; 962 u64 root_flags;
963 uuid_le new_uuid;
961 964
962 rsv = trans->block_rsv; 965 rsv = trans->block_rsv;
963 966
@@ -1051,6 +1054,20 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
1051 root_flags &= ~BTRFS_ROOT_SUBVOL_RDONLY; 1054 root_flags &= ~BTRFS_ROOT_SUBVOL_RDONLY;
1052 btrfs_set_root_flags(new_root_item, root_flags); 1055 btrfs_set_root_flags(new_root_item, root_flags);
1053 1056
1057 btrfs_set_root_generation_v2(new_root_item,
1058 trans->transid);
1059 uuid_le_gen(&new_uuid);
1060 memcpy(new_root_item->uuid, new_uuid.b, BTRFS_UUID_SIZE);
1061 memcpy(new_root_item->parent_uuid, root->root_item.uuid,
1062 BTRFS_UUID_SIZE);
1063 new_root_item->otime.sec = cpu_to_le64(cur_time.tv_sec);
1064 new_root_item->otime.nsec = cpu_to_le64(cur_time.tv_nsec);
1065 btrfs_set_root_otransid(new_root_item, trans->transid);
1066 memset(&new_root_item->stime, 0, sizeof(new_root_item->stime));
1067 memset(&new_root_item->rtime, 0, sizeof(new_root_item->rtime));
1068 btrfs_set_root_stransid(new_root_item, 0);
1069 btrfs_set_root_rtransid(new_root_item, 0);
1070
1054 old = btrfs_lock_root_node(root); 1071 old = btrfs_lock_root_node(root);
1055 ret = btrfs_cow_block(trans, root, old, NULL, 0, &old); 1072 ret = btrfs_cow_block(trans, root, old, NULL, 0, &old);
1056 if (ret) { 1073 if (ret) {