Skip to content

Commit

Permalink
ocfs2: Return extent flags for xattr value tree.
Browse files Browse the repository at this point in the history
With the new refcount tree, xattr value can also be refcounted
among multiple files. So return the appropriate extent flags
so that CoW can used it later.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
  • Loading branch information
Tao Ma authored and Joel Becker committed Sep 23, 2009
1 parent a9063ab commit 1061f9c
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
6 changes: 5 additions & 1 deletion fs/ocfs2/extent_map.c
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,8 @@ static void ocfs2_relative_extent_offsets(struct super_block *sb,

int ocfs2_xattr_get_clusters(struct inode *inode, u32 v_cluster,
u32 *p_cluster, u32 *num_clusters,
struct ocfs2_extent_list *el)
struct ocfs2_extent_list *el,
unsigned int *extent_flags)
{
int ret = 0, i;
struct buffer_head *eb_bh = NULL;
Expand Down Expand Up @@ -593,6 +594,9 @@ int ocfs2_xattr_get_clusters(struct inode *inode, u32 v_cluster,
*p_cluster = *p_cluster + coff;
if (num_clusters)
*num_clusters = ocfs2_rec_clusters(el, rec) - coff;

if (extent_flags)
*extent_flags = rec->e_flags;
}
out:
if (eb_bh)
Expand Down
3 changes: 2 additions & 1 deletion fs/ocfs2/extent_map.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ int ocfs2_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,

int ocfs2_xattr_get_clusters(struct inode *inode, u32 v_cluster,
u32 *p_cluster, u32 *num_clusters,
struct ocfs2_extent_list *el);
struct ocfs2_extent_list *el,
unsigned int *extent_flags);

int ocfs2_read_virt_blocks(struct inode *inode, u64 v_block, int nr,
struct buffer_head *bhs[], int flags,
Expand Down
7 changes: 4 additions & 3 deletions fs/ocfs2/xattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -704,7 +704,7 @@ static int ocfs2_xattr_shrink_size(struct inode *inode,
while (trunc_len) {
ret = ocfs2_xattr_get_clusters(inode, cpos, &phys_cpos,
&alloc_size,
&vb->vb_xv->xr_list);
&vb->vb_xv->xr_list, NULL);
if (ret) {
mlog_errno(ret);
goto out;
Expand Down Expand Up @@ -959,7 +959,7 @@ static int ocfs2_xattr_get_value_outside(struct inode *inode,
cpos = 0;
while (cpos < clusters) {
ret = ocfs2_xattr_get_clusters(inode, cpos, &p_cluster,
&num_clusters, el);
&num_clusters, el, NULL);
if (ret) {
mlog_errno(ret);
goto out;
Expand Down Expand Up @@ -1198,7 +1198,8 @@ static int __ocfs2_xattr_set_value_outside(struct inode *inode,

while (cpos < clusters) {
ret = ocfs2_xattr_get_clusters(inode, cpos, &p_cluster,
&num_clusters, &xv->xr_list);
&num_clusters, &xv->xr_list,
NULL);
if (ret) {
mlog_errno(ret);
goto out;
Expand Down

0 comments on commit 1061f9c

Please sign in to comment.