Displaying 20 results from an estimated 40 matches for "root_item".
2013 Aug 27
7
[PATCH] Btrfs: fix deadlock in uuid scan kthread
...+++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index f42e412..44cd21b 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -3465,7 +3465,7 @@ static int btrfs_uuid_scan_kthread(void *data)
int slot;
struct btrfs_root_item root_item;
u32 item_size;
- struct btrfs_trans_handle *trans;
+ struct btrfs_trans_handle *trans = NULL;
path = btrfs_alloc_path();
if (!path) {
@@ -3509,7 +3509,13 @@ static int btrfs_uuid_scan_kthread(void *data)
(int)sizeof(root_item));
if (btrfs_root_refs(&root_item) == 0...
2013 Jun 04
3
[PATCH] Btrfs: fix broken nocow after balance
...ee.c
+++ b/fs/btrfs/extent-tree.c
@@ -2856,10 +2856,6 @@ static noinline int check_committed_ref(struct btrfs_trans_handle *trans,
btrfs_extent_inline_ref_size(BTRFS_EXTENT_DATA_REF_KEY))
goto out;
- if (btrfs_extent_generation(leaf, ei) <=
- btrfs_root_last_snapshot(&root->root_item))
- goto out;
-
iref = (struct btrfs_extent_inline_ref *)(ei + 1);
if (btrfs_extent_inline_ref_type(leaf, iref) !=
BTRFS_EXTENT_DATA_REF_KEY)
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 23c596c..0dc5c7d 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1253,7 +1253,7 @@...
2012 Aug 01
17
[PATCH] add crtime to the snapshot list
From: Anand <anand.jain@oracle.com>
This patch adds creation-time to the snapshot list display,
which would help user to better manage the snapshots when
number of snapshots grow substantially. This patch is developed
and on top of the send/receive btrfs and btrfs-progs repo at
git://github.com/ablock84/linux-btrfs.git (send-v2)
git://github.com/ablock84/btrfs-progs.git (send-v2)
2013 May 14
1
[PATCH] Btrfs-progs: fix missing recow roots when making btrfs filesystem
...m. we firstly write root leaf to
specified filed, and then we recow the root. If we don''t recow,
some trees are not in the correct block group.
Steps to reproduce:
dd if=/dev/zero of=test.img bs=1M count=100
mkfs.btrfs -f test.img
btrfs-debug-tree test.img
extent tree key (EXTENT_TREE ROOT_ITEM 0)
leaf 4210688 items 10 free space 3349 generation 4 owner 2
fs uuid 2e08fd93-f24d-4f44-a226-e2116fcd544f
chunk uuid dc482988-6246-46ce-9329-68bcf6d3683c
item 0 key (0 BLOCK_GROUP_ITEM 4194304) itemoff 3971 itemsize 24
block group used 12288 chunk_objectid 256 flags 2
[..snip..]
item 3 key (...
2013 Sep 22
10
[PATCH] Btrfs: fix sync fs to actually wait for all data to be persisted
...item 4 key (257 INODE_ITEM 0) itemoff 3591 itemsize 160
inode generation 7 transid 7 size 0 block group 0 mode 100644 links 1
item 5 key (257 INODE_REF 256) itemoff 3575 itemsize 16
inode ref index 2 namelen 6 name: foobar
checksum tree key (CSUM_TREE ROOT_ITEM 0)
leaf 29429760 items 0 free space 3995 generation 7 owner 7
fs uuid 6192815c-af2a-4b75-b3db-a959ffb6166e
chunk uuid b529c44b-938c-4d3d-910a-013b4700bcae
uuid tree key (UUID_TREE ROOT_ITEM 0)
After this patch, the data loss no longer happens after a power failure and
btrfs-debug-tree shows:
$ bt...
2012 Nov 01
41
[Request for review] [RFC] Add label support for snapshots and subvols
...to the
subvolume and snapshots. Which would help sysadmin to better manager
the subvol and snapshots.
This can be done in two ways, one - using attr which is user land
only changes but drawback is able to change the label using the
non btrfs cli. And the other way is to add a member to
btrfs_root_item in the btrfs kernel to hold the label info for
each snapshot and subvol. The drawback here is having to introduce
V3 version of this structure. If there is any better way pls do share.
The patch code is for the review.
Any comments/suggestion welcome.
Below is a demo of this new feature.
-----...
2014 Apr 23
0
[PATCH 001/001] btrfs: Mechanism to modify the permission of a subvolume
...+ goto out_drop_write;
+ vol_args->name[BTRFS_SUBVOL_NAME_MAX] = '\0';
+ flags = vol_args->flags;
+ if (!inode_owner_or_capable(inode)) {
+ ret = -EACCES;
+ goto out_drop_write;
+ }
+
+ down_write(&root->fs_info->subvol_sem);
+ root_flags = btrfs_root_flags(&root->root_item);
+
+ if (flags & BTRFS_SUBVOL_RDONLY) {
+ btrfs_set_root_flags(&root->root_item,
+ root_flags | BTRFS_ROOT_SUBVOL_RDONLY);
+ printk(KERN_INFO "Setting %s to ro\n", vol_args->name);
+ } else {
+ btrfs_set_root_flags(&root->root_item,
+ root_flags & ~BTR...
2010 Sep 03
0
[PATCH 1/2] btrfs: document where we use BUG_ON instead of error handling
...ode, int rw, struct bio *bio,
ret = btrfs_bio_wq_end_io(BTRFS_I(inode)->root->fs_info,
bio, 1);
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
if (!(rw & REQ_WRITE)) {
/*
@@ -974,7 +974,7 @@ static int find_and_setup_root(struct btrfs_root *tree_root,
&root->root_item, &root->root_key);
if (ret > 0)
return -ENOENT;
- BUG_ON(ret);
+ btrfs_fixable_bug_on(ret);
generation = btrfs_root_generation(&root->root_item);
blocksize = btrfs_level_size(root, btrfs_root_level(&root->root_item));
@@ -1501,7 +1501,7 @@ static int transaction_k...
2011 Mar 23
0
[PATCH] Btrfs: cleanup some BUG_ON()
...eplace_extents_in_l
int ret;
new_extent = kmalloc(sizeof(*new_extent), GFP_NOFS);
- BUG_ON(!new_extent);
+ if (!new_extent)
+ return -ENOMEM;
ref = btrfs_lookup_leaf_ref(root, leaf->start);
BUG_ON(!ref);
@@ -7627,7 +7637,8 @@ static noinline int init_reloc_tree(stru
return 0;
root_item = kmalloc(sizeof(*root_item), GFP_NOFS);
- BUG_ON(!root_item);
+ if (!root_item)
+ return -ENOMEM;
ret = btrfs_copy_root(trans, root, root->commit_root,
&eb, BTRFS_TREE_RELOC_OBJECTID);
@@ -7653,7 +7664,7 @@ static noinline int init_reloc_tree(stru
reloc_root = btrfs_read_...
2009 May 12
0
[PATCH 1/2] btrfs-progs: mixed back ref support
..._inc_ref(trans, root, buf, cow, NULL);
- if (ret)
- return ret;
- } else {
- ret = btrfs_update_ref(trans, root, buf, cow, 0, nritems);
- if (ret)
- return ret;
+
+ if (root->ref_cows && buf != root->node &&
+ (generation <= btrfs_root_last_snapshot(&root->root_item) ||
+ btrfs_header_flag(buf, BTRFS_HEADER_FLAG_RELOC)))
+ __btrfs_update_ref(trans, root, buf, cow);
+ else
clean_tree_block(trans, root, buf);
- }
if (buf == root->node) {
root->node = cow;
extent_buffer_get(cow);
- if (buf != root->commit_root) {
- btrfs_free_extent...
2008 Nov 14
1
GenericDirCtrl#re_create_tree behaviour
Hi
When GenericDirCtrl#re_create_tree is called in order to refresh the
tree with any possible changes made to the file system since it was
loaded, it doesn''t re-expand all the tree items that were expanded
prior to calling re_create_tree. I''m working on a solution to note all
open tree items and after re_create_tree manually expand the items
that are still present in the tree.
2013 Dec 16
6
[PATCH 0/3] Send: minor cleanups, add RO checks
First two patches are trivial cleanups that I''ve spotted while reading send.c,
can be applied independently.
The third patch contains the important bits, safety checks that the subvolumes
involved in send do not accidentally lose the RO status. I haven''t seen this
documented anywhere that this is mandatory, implied from how I assume send
works. Please let me know if this is
2009 Jun 03
0
[PATCH] Make sure all dirty blocks are written at commit time
...n.c 2009-06-03 09:56:34.000000000 +0800
@@ -444,9 +444,6 @@ static int update_cowonly_root(struct bt
btrfs_write_dirty_block_groups(trans, root);
- ret = btrfs_run_delayed_refs(trans, root, (unsigned long)-1);
- BUG_ON(ret);
-
while (1) {
old_root_bytenr = btrfs_root_bytenr(&root->root_item);
if (old_root_bytenr == root->node->start)
@@ -457,9 +454,8 @@ static int update_cowonly_root(struct bt
&root->root_key,
&root->root_item);
BUG_ON(ret);
- btrfs_write_dirty_block_groups(trans, root);
- ret = btrfs_run_delayed_refs(trans, root, (unsigned lo...
2008 Oct 27
0
[PATCH 3/4] update nodatacow code
...do more
fine-grained checking.
Regards
Signed-off-by: Yan Zheng <zheng.yan@oracle.com>
---
diff -urp 3/fs/btrfs/ctree.h 4/fs/btrfs/ctree.h
--- 3/fs/btrfs/ctree.h 2008-10-27 16:31:51.000000000 +0800
+++ 4/fs/btrfs/ctree.h 2008-10-27 16:34:27.000000000 +0800
@@ -445,6 +445,7 @@ struct btrfs_root_item {
__le64 bytenr;
__le64 byte_limit;
__le64 bytes_used;
+ __le64 last_snapshot;
__le32 flags;
__le32 refs;
struct btrfs_disk_key drop_progress;
@@ -1375,6 +1376,8 @@ BTRFS_SETGET_STACK_FUNCS(root_refs, stru
BTRFS_SETGET_STACK_FUNCS(root_flags, struct btrfs_root_item, flags, 32);
BTRFS_...
2013 May 20
2
[PATCH] Btrfs: fix estale with btrfs send
...k its commit root transid with our otransid and if they match
+ * commit the transaction to make sure everything is updated.
+ */
+ down_read(&send_root->fs_info->extent_commit_sem);
+ if (btrfs_header_generation(send_root->commit_root) ==
+ btrfs_root_otransid(&send_root->root_item)) {
+ struct btrfs_trans_handle *trans;
+
+ up_read(&send_root->fs_info->extent_commit_sem);
+
+ trans = btrfs_attach_transaction_barrier(send_root);
+ if (IS_ERR(trans)) {
+ if (PTR_ERR(trans) != -ENOENT) {
+ ret = PTR_ERR(trans);
+ goto out;
+ }
+ /* ENOENT means theres...
2013 Feb 20
1
[PATCH] Btrfs: fix cleaner thread not working with inode cache option
....c b/fs/btrfs/inode.c
index ca7ace7..d9984fa 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7230,8 +7230,9 @@ int btrfs_drop_inode(struct inode *inode)
{
struct btrfs_root *root = BTRFS_I(inode)->root;
+ /* the snap/subvol tree is on deleting */
if (btrfs_root_refs(&root->root_item) == 0 &&
- !btrfs_is_free_space_inode(inode))
+ root != root->fs_info->tree_root)
return 1;
else
return generic_drop_inode(inode);
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index a31cd93..375f31f 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -2171,6 +2...
2012 Feb 10
13
can't read superblock (but could mount)
Hi!
I used to have arch linux running on 1 btrfs partition (sda1, incl. /boot).
When switching to 3.2.5 recently the system fails to boot:
(after udevd)
/etc/rc.sysinit: line 15: 117 Bus error mountpoint -q /proc
and so on, no idea.
It used to boot with 3.2.4, but
1) I obviously had some corruption in the tree, when I tried to delete a
certain file I hit e.g. "kernel BUG at
2011 Dec 02
3
[PATCH] Btrfs: protect orphan block rsv with spin_lock
...nup_state != ORPHAN_CLEANUP_DONE) {
+ spin_unlock(&root->orphan_lock);
+ return;
+ }
+
+ block_rsv = root->orphan_block_rsv;
+ root->orphan_block_rsv = NULL;
+ spin_unlock(&root->orphan_lock);
+
if (root->orphan_item_inserted &&
btrfs_root_refs(&root->root_item) > 0) {
ret = btrfs_del_orphan_item(trans, root->fs_info->tree_root,
@@ -1965,10 +1981,9 @@ void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans,
root->orphan_item_inserted = 0;
}
- if (root->orphan_block_rsv) {
- WARN_ON(root->orphan_block_rsv->size > 0...
2010 Apr 19
0
[PATCH 08/12] Btrfs: Introduce global metadata reservation
...sum_size = btrfs_super_csum_size(&fs_info->super_copy);
+#if 0
+ /*
+ * per tree used space accounting can be inaccuracy, so we
+ * can''t rely on it.
+ */
+ spin_lock(&fs_info->extent_root->accounting_lock);
+ num_bytes = btrfs_root_used(&fs_info->extent_root->root_item);
+ spin_unlock(&fs_info->extent_root->accounting_lock);
+
+ spin_lock(&fs_info->csum_root->accounting_lock);
+ num_bytes += btrfs_root_used(&fs_info->csum_root->root_item);
+ spin_unlock(&fs_info->csum_root->accounting_lock);
+
+ spin_lock(&fs_info->t...
2011 May 30
5
Damaged super block / fs root
I have accidently damaged the first block(s) of a btrfs partition
and can''t mount it anymore.
I can see that my data is still intact by running a command like:
cat /dev/sda5 | hexdump -C | more
Do any (experimental) tools exist which would allow me to recover the files?
Thank you
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a