search for: xh_free_start

Displaying 5 results from an estimated 5 matches for "xh_free_start".

2009 Feb 16
3
[PATCH 0/2] ocfs2: two fixes for xattr -v2
...have fixed the problems in version 1 patches. These two patches based on the latest main line kernel. Thanks, tiger > For EAs data structure in inode/block are little different from them in > bucket. These two patches try to make them same for the most part. > > The first patch set xh_free_start and xh_name_value_len when EAs in > inode/block. xh_free_start is useful to keep the minimum offset of the > xattr name/value. But xh_name_value_len is not very useful because we > don't have "hole" when EAs in inode/block, we just calculate and set it > here, maybe it...
2009 Feb 11
2
[PATCH 0/2] ocfs2: two fixes for xattr
Hi, For EAs data structure in inode/block are little different from them in bucket. These two patches try to make them same for the most part. The first patch set xh_free_start and xh_name_value_len when EAs in inode/block. xh_free_start is useful to keep the minimum offset of the xattr name/value. But xh_name_value_len is not very useful because we don't have "hole" when EAs in inode/block, we just calculate and set it here, maybe it's useful for fsck...
2009 Feb 20
1
[PATCH 1/1] ocfs2: set gap to seperate entry and value when xattr in bucket
...2191,7 @@ static int ocfs2_xattr_can_be_in_inode(struct inode *inode, last += 1; } - free = min_offs - ((void *)last - xs->base) - sizeof(__u32); + free = min_offs - ((void *)last - xs->base) - OCFS2_XATTR_HEADER_GAP; if (free < 0) return 0; @@ -5060,8 +5061,8 @@ try_again: xh_free_start = le16_to_cpu(xh->xh_free_start); header_size = sizeof(struct ocfs2_xattr_header) + count * sizeof(struct ocfs2_xattr_entry); - max_free = OCFS2_XATTR_BUCKET_SIZE - - le16_to_cpu(xh->xh_name_value_len) - header_size; + max_free = OCFS2_XATTR_BUCKET_SIZE - header_size - + le16_to_cpu(x...
2008 Oct 26
1
[PATCH 1/1] ocfs2/xattr: Proper hash collision handle in bucket division.v3
...ialized a new empty bucket here. + * The hash value is set as one larger than + * that of the last entry in the previous bucket. + */ + for (i = 0; i < blk_per_bucket; i++) + memset(t_bhs[i]->b_data, 0, blocksize); + + xh = (struct ocfs2_xattr_header *)t_bhs[0]->b_data; + xh->xh_free_start = cpu_to_le16(blocksize); + xh->xh_entries[0].xe_name_hash = xe->xe_name_hash; + le32_add_cpu(&xh->xh_entries[0].xe_name_hash, 1); + + goto set_num_buckets; + } + /* copy the whole bucket to the new first. */ for (i = 0; i < blk_per_bucket; i++) memcpy(t_bhs[i]->b_data,...
2008 Oct 28
14
[PATCH 0/13] ocfs2: xattr bucket API
When the extended attribute namespace grows to a b-tree, the leaf clusters are organized by means of 'buckets'. Each bucket is 4K in size, regardless of blocksize. Thus, a bucket may be made of more than one block. fs/ocfs2/xattr.c has a nice little abstraction to wrap this, struct ocfs2_xattr_bucket. It contains a list of buffer_heads representing these blocks, and there is even an