search for: index_cnt

Displaying 8 results from an estimated 8 matches for "index_cnt".

2012 Dec 17
3
getdents spinning on 0x7fffffff
...4"}}, 32768) = 32 It took around 10 hours on a workstationy box over here to reproduce this with createmany.c from the lustre tests ("./createmany -m f- -u f- 0x8000000" mknod()s and unlink()s 2^31 files), but that''s tedious. It''s easier to force initialization of index_cnt in the kernel to test things. 1) The fundamental fix is to re-use deleted entry positions. Do we add another cache to index unlinked positions? Do we add an unreliable best-effort walk of the tree looking for holes in the key space? At the very least test index_cnt in unlink to get the basicall...
2010 Mar 20
2
[PATCH 4/4] btrfs-convert: split into convert/.
...rt_fs *fs, struct extent_io_tree *free_tree) @@ -267,113 +171,6 @@ struct btrfs_extent_ops extent_ops = { .free_extent = custom_free_extent, }; -struct dir_iterate_data { - struct btrfs_trans_handle *trans; - struct btrfs_root *root; - struct btrfs_inode_item *inode; - u64 objectid; - u64 index_cnt; - u64 parent; - int errcode; -}; - -static u8 filetype_conversion_table[EXT2_FT_MAX] = { - [EXT2_FT_UNKNOWN] = BTRFS_FT_UNKNOWN, - [EXT2_FT_REG_FILE] = BTRFS_FT_REG_FILE, - [EXT2_FT_DIR] = BTRFS_FT_DIR, - [EXT2_FT_CHRDEV] = BTRFS_FT_CHRDEV, - [EXT2_FT_BLKDEV] = BTRFS_FT_BLKDEV, - [EXT2_FT_FIFO]...
2010 Apr 26
0
[PATCH V2 11/12] Btrfs: Pre-allocate space for data relocation
.../fs/btrfs/relocation.c 2010-04-26 17:28:20.501835289 +0800 @@ -2545,6 +2545,50 @@ out: } static noinline_for_stack +int prealloc_file_extent_cluster(struct inode *inode, + struct file_extent_cluster *cluster) +{ + u64 alloc_hint = 0; + u64 start; + u64 end; + u64 offset = BTRFS_I(inode)->index_cnt; + u64 num_bytes; + int nr = 0; + int ret = 0; + + BUG_ON(cluster->start != cluster->boundary[0]); + mutex_lock(&inode->i_mutex); + + ret = btrfs_check_data_free_space(inode, cluster->end + + 1 - cluster->start); + if (ret) + goto out; + + while (nr < cluster->nr) {...
2011 Apr 27
2
btrfs-convert crashes
...e info available. #8 0x000000000041689d in create_dir_entries (devname=0x7fffffffe897 "/dev/sdc1", datacsum=1, packing=1, noxattr=0) at convert.c:322 err =<value optimized out> data = {trans = 0xc9ef10, root = 0x633920, inode = 0x7fffffffe1c0, objectid = 37359706, index_cnt = 150, parent = 37359705, errcode = 0} ret =<value optimized out> #9 copy_single_inode (devname=0x7fffffffe897 "/dev/sdc1", datacsum=1, packing=1, noxattr=0) at convert.c:1072 ret =<value optimized out> btrfs_inode = {generation = 1, transid = 14073...
2009 Nov 12
0
[PATCH 05/12] Btrfs: Avoid orphan inodes cleanup during replaying log
...offset); + return ret; +} + + /* * There are a few corners where the link count of the file can''t * be properly maintained during replay. So, instead of adding @@ -997,9 +1008,13 @@ static noinline int fixup_inode_link_count(struct btrfs_trans_handle *trans, } BTRFS_I(inode)->index_cnt = (u64)-1; - if (inode->i_nlink == 0 && S_ISDIR(inode->i_mode)) { - ret = replay_dir_deletes(trans, root, NULL, path, - inode->i_ino, 1); + if (inode->i_nlink == 0) { + if (S_ISDIR(inode->i_mode)) { + ret = replay_dir_deletes(trans, root, NULL, path, + inode-...
2011 May 11
8
[PATCH 1/4] Btrfs: map the node block when looking for readahead targets
If we have particularly full nodes, we could call btrfs_node_blockptr up to 32 times, which is 32 pairs of kmap/kunmap, which _sucks_. So go ahead and map the extent buffer while we look for readahead targets. Thanks, Signed-off-by: Josef Bacik <josef@redhat.com> --- fs/btrfs/ctree.c | 23 +++++++++++++++++++++-- 1 files changed, 21 insertions(+), 2 deletions(-) diff --git
2012 Jun 21
0
[RFC PATCH V2] Btrfs: introduce extent buffer cache for each i-node
...); diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 646ee21..d149998 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -1506,7 +1506,7 @@ static int get_new_location(struct inode *reloc_inode, u64 *new_bytenr, return -ENOMEM; bytenr -= BTRFS_I(reloc_inode)->index_cnt; - ret = btrfs_lookup_file_extent(NULL, root, path, btrfs_ino(reloc_inode), + ret = btrfs_lookup_file_extent(NULL, root, path, reloc_inode, bytenr, 0); if (ret < 0) goto out; diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 0eb9a4d..382df88 100644 --- a/fs/btrfs/super.c ++...
2011 Mar 08
6
[PATCH v1 0/6] btrfs: scrub
This series adds an initial implementation for scrub. It works quite straightforward. The usermode issues an ioctl for each device in the fs. For each device, it enumerates the allocated device chunks. For each chunk, the contained extents are enumerated and the data checksums fetched. The extents are read sequentially and the checksums verified. If an error occurs (checksum or EIO), a good copy