All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH 1/2] ocfs2/xattr: Remove additional bucket allocation in bucket defragment.
  2008-11-06  7:32 [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch Tao Ma
@ 2008-11-06  0:10 ` Tao Ma
  2008-11-06  0:10 ` [Ocfs2-devel] [PATCH 2/2] ocfs2/xattr: Only set buffer update if it doesn't exist in cache Tao Ma
  2008-11-06 21:06 ` [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch Joel Becker
  2 siblings, 0 replies; 4+ messages in thread
From: Tao Ma @ 2008-11-06  0:10 UTC (permalink / raw)
  To: ocfs2-devel

Joel has refactored xattr bucket and make xattr bucket a general
wrapper. So in ocfs2_defrag_xattr_bucket, we have already passed the
bucket in, so there is no need to allocate a new one and read it.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
---
 fs/ocfs2/xattr.c |   26 +++++++-------------------
 1 files changed, 7 insertions(+), 19 deletions(-)

diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
index b0a73c2..501c9e7 100644
--- a/fs/ocfs2/xattr.c
+++ b/fs/ocfs2/xattr.c
@@ -2896,7 +2896,6 @@ static int ocfs2_defrag_xattr_bucket(struct inode *inode,
 	size_t blocksize = inode->i_sb->s_blocksize;
 	handle_t *handle;
 	struct ocfs2_xattr_entry *xe;
-	struct ocfs2_xattr_bucket *wb = NULL;
 
 	/*
 	 * In order to make the operation more efficient and generic,
@@ -2910,21 +2909,11 @@ static int ocfs2_defrag_xattr_bucket(struct inode *inode,
 		goto out;
 	}
 
-	wb = ocfs2_xattr_bucket_new(inode);
-	if (!wb) {
-		ret = -ENOMEM;
-		goto out;
-	}
-
-	ret = ocfs2_read_xattr_bucket(wb, blkno);
-	if (ret)
-		goto out;
-
 	buf = bucket_buf;
-	for (i = 0; i < wb->bu_blocks; i++, buf += blocksize)
-		memcpy(buf, bucket_block(wb, i), blocksize);
+	for (i = 0; i < bucket->bu_blocks; i++, buf += blocksize)
+		memcpy(buf, bucket_block(bucket, i), blocksize);
 
-	handle = ocfs2_start_trans((OCFS2_SB(inode->i_sb)), wb->bu_blocks);
+	handle = ocfs2_start_trans((OCFS2_SB(inode->i_sb)), bucket->bu_blocks);
 	if (IS_ERR(handle)) {
 		ret = PTR_ERR(handle);
 		handle = NULL;
@@ -2932,7 +2921,7 @@ static int ocfs2_defrag_xattr_bucket(struct inode *inode,
 		goto out;
 	}
 
-	ret = ocfs2_xattr_bucket_journal_access(handle, wb,
+	ret = ocfs2_xattr_bucket_journal_access(handle, bucket,
 						OCFS2_JOURNAL_ACCESS_WRITE);
 	if (ret < 0) {
 		mlog_errno(ret);
@@ -3005,14 +2994,13 @@ static int ocfs2_defrag_xattr_bucket(struct inode *inode,
 	     cmp_xe, swap_xe);
 
 	buf = bucket_buf;
-	for (i = 0; i < wb->bu_blocks; i++, buf += blocksize)
-		memcpy(bucket_block(wb, i), buf, blocksize);
-	ocfs2_xattr_bucket_journal_dirty(handle, wb);
+	for (i = 0; i < bucket->bu_blocks; i++, buf += blocksize)
+		memcpy(bucket_block(bucket, i), buf, blocksize);
+	ocfs2_xattr_bucket_journal_dirty(handle, bucket);
 
 commit:
 	ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle);
 out:
-	ocfs2_xattr_bucket_free(wb);
 	kfree(bucket_buf);
 	return ret;
 }
-- 
1.5.4.GIT

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Ocfs2-devel] [PATCH 2/2] ocfs2/xattr: Only set buffer update if it doesn't exist in cache.
  2008-11-06  7:32 [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch Tao Ma
  2008-11-06  0:10 ` [Ocfs2-devel] [PATCH 1/2] ocfs2/xattr: Remove additional bucket allocation in bucket defragment Tao Ma
@ 2008-11-06  0:10 ` Tao Ma
  2008-11-06 21:06 ` [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch Joel Becker
  2 siblings, 0 replies; 4+ messages in thread
From: Tao Ma @ 2008-11-06  0:10 UTC (permalink / raw)
  To: ocfs2-devel

When we call ocfs2_init_xattr_bucket, we deem that the new buffer head
will be written to disk immediately, so we just use sb_getblk. But in
some cases the buffer may have already been in ocfs2 uptodate cache,
so we only call ocfs2_set_buffer_uptodate if the buffer head isn't
in the cache.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
---
 fs/ocfs2/xattr.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
index 501c9e7..5244c5d 100644
--- a/fs/ocfs2/xattr.c
+++ b/fs/ocfs2/xattr.c
@@ -219,8 +219,10 @@ static int ocfs2_init_xattr_bucket(struct ocfs2_xattr_bucket *bucket,
 			break;
 		}
 
-		ocfs2_set_new_buffer_uptodate(bucket->bu_inode,
-					      bucket->bu_bhs[i]);
+		if (!ocfs2_buffer_uptodate(bucket->bu_inode,
+					   bucket->bu_bhs[i]))
+			ocfs2_set_new_buffer_uptodate(bucket->bu_inode,
+						      bucket->bu_bhs[i]);
 	}
 
 	if (rc)
-- 
1.5.4.GIT

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch.
@ 2008-11-06  7:32 Tao Ma
  2008-11-06  0:10 ` [Ocfs2-devel] [PATCH 1/2] ocfs2/xattr: Remove additional bucket allocation in bucket defragment Tao Ma
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Tao Ma @ 2008-11-06  7:32 UTC (permalink / raw)
  To: ocfs2-devel

Hi Joel,
	These 2 patches are minor fixes and improvement for your xattr -buckets 
branch. Could you please review them? And if they are OK, please push 
them to your branch so that I can rebase my transaction merge patch set 
on it. One is for ocfs2_defrag_xattr_bucket improvement and another is 
for the ocfs2_buffer_uptodate check in ocfs2_init_xattr_bucket. I saw 
your branch haven't been updated for some days, so create these 2 
patches for you. ;)

Mark,
	these 2 patches can be pushed into Joel's branch so that you can 
finally pull them together with acls after we rebase on it.

Regards,
Tao

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch.
  2008-11-06  7:32 [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch Tao Ma
  2008-11-06  0:10 ` [Ocfs2-devel] [PATCH 1/2] ocfs2/xattr: Remove additional bucket allocation in bucket defragment Tao Ma
  2008-11-06  0:10 ` [Ocfs2-devel] [PATCH 2/2] ocfs2/xattr: Only set buffer update if it doesn't exist in cache Tao Ma
@ 2008-11-06 21:06 ` Joel Becker
  2 siblings, 0 replies; 4+ messages in thread
From: Joel Becker @ 2008-11-06 21:06 UTC (permalink / raw)
  To: ocfs2-devel

On Thu, Nov 06, 2008 at 03:32:23PM +0800, Tao Ma wrote:
> Hi Joel,
> 	These 2 patches are minor fixes and improvement for your xattr -buckets  
> branch. Could you please review them? And if they are OK, please push  
> them to your branch so that I can rebase my transaction merge patch set  
> on it. One is for ocfs2_defrag_xattr_bucket improvement and another is  
> for the ocfs2_buffer_uptodate check in ocfs2_init_xattr_bucket. I saw  
> your branch haven't been updated for some days, so create these 2  
> patches for you. ;)

	Thanks Tao, these are pushed to my xattr-buckets branch now.

Joel

-- 

"In a crisis, don't hide behind anything or anybody. They're going
 to find you anyway."
	- Paul "Bear" Bryant

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker at oracle.com
Phone: (650) 506-8127

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-11-06 21:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-06  7:32 [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch Tao Ma
2008-11-06  0:10 ` [Ocfs2-devel] [PATCH 1/2] ocfs2/xattr: Remove additional bucket allocation in bucket defragment Tao Ma
2008-11-06  0:10 ` [Ocfs2-devel] [PATCH 2/2] ocfs2/xattr: Only set buffer update if it doesn't exist in cache Tao Ma
2008-11-06 21:06 ` [Ocfs2-devel] [PATCH 0/2] Two minor fixes for Joel's xattr-buckets branch Joel Becker

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.