]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.suse/ocfs2-Wrap-journal_access-journal_dirty-for-xattr-b.patch
Revert "Move xen patchset to new version's subdir."
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.suse / ocfs2-Wrap-journal_access-journal_dirty-for-xattr-b.patch
diff --git a/src/patches/suse-2.6.27.31/patches.suse/ocfs2-Wrap-journal_access-journal_dirty-for-xattr-b.patch b/src/patches/suse-2.6.27.31/patches.suse/ocfs2-Wrap-journal_access-journal_dirty-for-xattr-b.patch
deleted file mode 100644 (file)
index b727246..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-From: Joel Becker <joel.becker@oracle.com>
-Date: Fri, 24 Oct 2008 18:47:33 -0700
-Subject: ocfs2: Wrap journal_access/journal_dirty for xattr buckets.
-Patch-mainline: 2.6.29
-
-A common action is to call ocfs2_journal_access() and
-ocfs2_journal_dirty() on the buffer heads of an xattr bucket.  Let's
-create nice wrappers.
-
-While we're there, let's drop the places that try to be smart by writing
-only the first and last blocks of a bucket.  A bucket is contiguous, so
-writing the whole thing is actually more efficient.
-
-Signed-off-by: Joel Becker <joel.becker@oracle.com>
-Signed-off-by: Mark Fasheh <mfasheh@suse.com>
----
- fs/ocfs2/xattr.c |  140 +++++++++++++++++++++++++-----------------------------
- 1 files changed, 64 insertions(+), 76 deletions(-)
-
-diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
-index fa13fa4..99aefe4 100644
---- a/fs/ocfs2/xattr.c
-+++ b/fs/ocfs2/xattr.c
-@@ -210,6 +210,37 @@ static int ocfs2_read_xattr_bucket(struct inode *inode,
-       return rc;
- }
-+static int ocfs2_xattr_bucket_journal_access(handle_t *handle,
-+                                           struct inode *inode,
-+                                           struct ocfs2_xattr_bucket *bucket,
-+                                           int type)
-+{
-+      int i, rc = 0;
-+      int blks = ocfs2_blocks_per_xattr_bucket(inode->i_sb);
-+
-+      for (i = 0; i < blks; i++) {
-+              rc = ocfs2_journal_access(handle, inode,
-+                                        bucket->bu_bhs[i], type);
-+              if (rc) {
-+                      mlog_errno(rc);
-+                      break;
-+              }
-+      }
-+
-+      return rc;
-+}
-+
-+static void ocfs2_xattr_bucket_journal_dirty(handle_t *handle,
-+                                           struct inode *inode,
-+                                           struct ocfs2_xattr_bucket *bucket)
-+{
-+      int i, blks = ocfs2_blocks_per_xattr_bucket(inode->i_sb);
-+
-+      for (i = 0; i < blks; i++)
-+              ocfs2_journal_dirty(handle, bucket->bu_bhs[i]);
-+}
-+
-+
- static inline const char *ocfs2_xattr_prefix(int name_index)
- {
-       struct xattr_handler *handler = NULL;
-@@ -3218,8 +3249,8 @@ static int ocfs2_divide_xattr_bucket(struct inode *inode,
-               goto out;
-       }
--      ret = ocfs2_journal_access(handle, inode, s_bucket.bu_bhs[0],
--                                 OCFS2_JOURNAL_ACCESS_WRITE);
-+      ret = ocfs2_xattr_bucket_journal_access(handle, inode, &s_bucket,
-+                                              OCFS2_JOURNAL_ACCESS_WRITE);
-       if (ret) {
-               mlog_errno(ret);
-               goto out;
-@@ -3235,15 +3266,13 @@ static int ocfs2_divide_xattr_bucket(struct inode *inode,
-               goto out;
-       }
--      for (i = 0; i < blk_per_bucket; i++) {
--              ret = ocfs2_journal_access(handle, inode, t_bucket.bu_bhs[i],
--                                         new_bucket_head ?
--                                         OCFS2_JOURNAL_ACCESS_CREATE :
--                                         OCFS2_JOURNAL_ACCESS_WRITE);
--              if (ret) {
--                      mlog_errno(ret);
--                      goto out;
--              }
-+      ret = ocfs2_xattr_bucket_journal_access(handle, inode, &t_bucket,
-+                                              new_bucket_head ?
-+                                              OCFS2_JOURNAL_ACCESS_CREATE :
-+                                              OCFS2_JOURNAL_ACCESS_WRITE);
-+      if (ret) {
-+              mlog_errno(ret);
-+              goto out;
-       }
-       xh = bucket_xh(&s_bucket);
-@@ -3339,11 +3368,7 @@ set_num_buckets:
-       else
-               xh->xh_num_buckets = 0;
--      for (i = 0; i < blk_per_bucket; i++) {
--              ocfs2_journal_dirty(handle, t_bucket.bu_bhs[i]);
--              if (ret)
--                      mlog_errno(ret);
--      }
-+      ocfs2_xattr_bucket_journal_dirty(handle, inode, &t_bucket);
-       /* store the first_hash of the new bucket. */
-       if (first_hash)
-@@ -3364,9 +3389,7 @@ set_num_buckets:
-       xh->xh_free_start = cpu_to_le16(name_offset);
-       xh->xh_name_value_len = cpu_to_le16(name_value_len);
--      ocfs2_journal_dirty(handle, s_bucket.bu_bhs[0]);
--      if (ret)
--              mlog_errno(ret);
-+      ocfs2_xattr_bucket_journal_dirty(handle, inode, &s_bucket);
- out:
-       ocfs2_xattr_bucket_relse(inode, &s_bucket);
-@@ -3413,20 +3436,18 @@ static int ocfs2_cp_xattr_bucket(struct inode *inode,
-       if (ret)
-               goto out;
--      for (i = 0; i < blk_per_bucket; i++) {
--              ret = ocfs2_journal_access(handle, inode, t_bucket.bu_bhs[i],
--                                         t_is_new ?
--                                         OCFS2_JOURNAL_ACCESS_CREATE :
--                                         OCFS2_JOURNAL_ACCESS_WRITE);
--              if (ret)
--                      goto out;
--      }
-+      ret = ocfs2_xattr_bucket_journal_access(handle, inode, &t_bucket,
-+                                              t_is_new ?
-+                                              OCFS2_JOURNAL_ACCESS_CREATE :
-+                                              OCFS2_JOURNAL_ACCESS_WRITE);
-+      if (ret)
-+              goto out;
-       for (i = 0; i < blk_per_bucket; i++) {
-               memcpy(bucket_block(&t_bucket, i), bucket_block(&s_bucket, i),
-                      blocksize);
--              ocfs2_journal_dirty(handle, t_bucket.bu_bhs[i]);
-       }
-+      ocfs2_xattr_bucket_journal_dirty(handle, inode, &t_bucket);
- out:
-       ocfs2_xattr_bucket_relse(inode, &s_bucket);
-@@ -3799,9 +3820,9 @@ static int ocfs2_extend_xattr_bucket(struct inode *inode,
-       /*
-        * We will touch all the buckets after the start_bh(include it).
--       * Add one more bucket and modify the first_bh.
-+       * Then we add one more bucket.
-        */
--      credits = end_blk - start_blk + 2 * blk_per_bucket + 1;
-+      credits = end_blk - start_blk + 3 * blk_per_bucket + 1;
-       handle = ocfs2_start_trans(osb, credits);
-       if (IS_ERR(handle)) {
-               ret = PTR_ERR(handle);
-@@ -4077,33 +4098,6 @@ set_new_name_value:
-       return;
- }
--static int ocfs2_xattr_bucket_handle_journal(struct inode *inode,
--                                           handle_t *handle,
--                                           struct ocfs2_xattr_search *xs,
--                                           struct buffer_head **bhs,
--                                           u16 bh_num)
--{
--      int ret = 0, off, block_off;
--      struct ocfs2_xattr_entry *xe = xs->here;
--
--      /*
--       * First calculate all the blocks we should journal_access
--       * and journal_dirty. The first block should always be touched.
--       */
--      ret = ocfs2_journal_dirty(handle, bhs[0]);
--      if (ret)
--              mlog_errno(ret);
--
--      /* calc the data. */
--      off = le16_to_cpu(xe->xe_name_offset);
--      block_off = off >> inode->i_sb->s_blocksize_bits;
--      ret = ocfs2_journal_dirty(handle, bhs[block_off]);
--      if (ret)
--              mlog_errno(ret);
--
--      return ret;
--}
--
- /*
-  * Set the xattr entry in the specified bucket.
-  * The bucket is indicated by xs->bucket and it should have the enough
-@@ -4115,7 +4109,7 @@ static int ocfs2_xattr_set_entry_in_bucket(struct inode *inode,
-                                          u32 name_hash,
-                                          int local)
- {
--      int i, ret;
-+      int ret;
-       handle_t *handle = NULL;
-       u16 blk_per_bucket = ocfs2_blocks_per_xattr_bucket(inode->i_sb);
-       struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
-@@ -4143,22 +4137,16 @@ static int ocfs2_xattr_set_entry_in_bucket(struct inode *inode,
-               goto out;
-       }
--      for (i = 0; i < blk_per_bucket; i++) {
--              ret = ocfs2_journal_access(handle, inode, xs->bucket.bu_bhs[i],
--                                         OCFS2_JOURNAL_ACCESS_WRITE);
--              if (ret < 0) {
--                      mlog_errno(ret);
--                      goto out;
--              }
-+      ret = ocfs2_xattr_bucket_journal_access(handle, inode, &xs->bucket,
-+                                              OCFS2_JOURNAL_ACCESS_WRITE);
-+      if (ret < 0) {
-+              mlog_errno(ret);
-+              goto out;
-       }
-       ocfs2_xattr_set_entry_normal(inode, xi, xs, name_hash, local);
-+      ocfs2_xattr_bucket_journal_dirty(handle, inode, &xs->bucket);
--      /*Only dirty the blocks we have touched in set xattr. */
--      ret = ocfs2_xattr_bucket_handle_journal(inode, handle, xs,
--                                              xs->bucket.bu_bhs, blk_per_bucket);
--      if (ret)
--              mlog_errno(ret);
- out:
-       ocfs2_commit_trans(osb, handle);
-@@ -4398,15 +4386,16 @@ static void ocfs2_xattr_bucket_remove_xs(struct inode *inode,
-                                               le16_to_cpu(xh->xh_count) - 1];
-       int ret = 0;
--      handle = ocfs2_start_trans((OCFS2_SB(inode->i_sb)), 1);
-+      handle = ocfs2_start_trans((OCFS2_SB(inode->i_sb)),
-+                                 ocfs2_blocks_per_xattr_bucket(inode->i_sb));
-       if (IS_ERR(handle)) {
-               ret = PTR_ERR(handle);
-               mlog_errno(ret);
-               return;
-       }
--      ret = ocfs2_journal_access(handle, inode, xs->bucket.bu_bhs[0],
--                                 OCFS2_JOURNAL_ACCESS_WRITE);
-+      ret = ocfs2_xattr_bucket_journal_access(handle, inode, &xs->bucket,
-+                                              OCFS2_JOURNAL_ACCESS_WRITE);
-       if (ret) {
-               mlog_errno(ret);
-               goto out_commit;
-@@ -4418,9 +4407,8 @@ static void ocfs2_xattr_bucket_remove_xs(struct inode *inode,
-       memset(last, 0, sizeof(struct ocfs2_xattr_entry));
-       le16_add_cpu(&xh->xh_count, -1);
--      ret = ocfs2_journal_dirty(handle, xs->bucket.bu_bhs[0]);
--      if (ret < 0)
--              mlog_errno(ret);
-+      ocfs2_xattr_bucket_journal_dirty(handle, inode, &xs->bucket);
-+
- out_commit:
-       ocfs2_commit_trans(OCFS2_SB(inode->i_sb), handle);
- }
--- 
-1.5.6
-