Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / kernel_patches / patches / ext3-ea-in-inode-2.4.20.patch
index 55fa141..0e93ced 100644 (file)
@@ -8,19 +8,17 @@
 
 --- linux-2.4.20/fs/ext3/ialloc.c~ext3-ea-in-inode-2.4.20      2003-10-08 23:18:08.000000000 +0400
 +++ linux-2.4.20-alexey/fs/ext3/ialloc.c       2003-10-12 16:25:21.000000000 +0400
-@@ -577,6 +577,12 @@ repeat:
-       insert_inode_hash(inode);
+@@ -577,6 +577,10 @@ repeat:
        inode->i_generation = sb->u.ext3_sb.s_next_generation++;
  
-+      if (EXT3_INODE_SIZE(inode->i_sb) > EXT3_GOOD_OLD_INODE_SIZE) {
-+              inode->u.ext3_i.i_extra_isize = sizeof(__u16)   /* i_extra_isize */
-+                              + sizeof(__u16);        /* i_pad1 */
-+      } else
-+              inode->u.ext3_i.i_extra_isize = 0;
-+
        inode->u.ext3_i.i_state = EXT3_STATE_NEW;
-       err = ext3_get_inode_loc_new(inode, &iloc, 1);
-       if (err) goto fail;
++      inode->u.ext3_i.i_extra_isize =
++              (EXT3_INODE_SIZE(inode->i_sb) > EXT3_GOOD_OLD_INODE_SIZE) ?
++              sizeof(struct ext3_inode) - EXT3_GOOD_OLD_INODE_SIZE : 0;
++
+       err = ext3_get_inode_loc_new(inode, &iloc, 1);
+       if (err) goto fail;
+       BUFFER_TRACE(iloc->bh, "get_write_access");
 --- linux-2.4.20/fs/ext3/inode.c~ext3-ea-in-inode-2.4.20       2003-10-08 23:18:08.000000000 +0400
 +++ linux-2.4.20-alexey/fs/ext3/inode.c        2003-10-12 16:25:21.000000000 +0400
 @@ -2209,6 +2209,12 @@ void ext3_read_inode(struct inode * inod
@@ -41,7 +39,7 @@
                        goto out_brelse;
        }
 +      if (EXT3_I(inode)->i_state & EXT3_STATE_NEW)
-+              memset(raw_inode, 0, EXT3_INODE_SIZE(inode->i_sb)); 
++              memset(raw_inode, 0, EXT3_INODE_SIZE(inode->i_sb));
        raw_inode->i_mode = cpu_to_le16(inode->i_mode);
        if(!(test_opt(inode->i_sb, NO_UID32))) {
                raw_inode->i_uid_low = cpu_to_le16(low_16_bits(inode->i_uid));
@@ -93,7 +91,7 @@
  }
  
  /*
-+ * ext3_xattr_ibode_get()
++ * ext3_xattr_ibody_get()
 + *
 + * routine looks for attribute in inode body and returns it's value and size
 + */
 +      /* try to find attribute in inode body */
 +      err = ext3_xattr_ibody_get(inode, name_index, name,
 +                                      buffer, buffer_size);
-+      if (err < 0) 
++      if (err < 0)
 +              /* search was unsuccessful, try to find EA in dedicated block */
 +              err = ext3_xattr_block_get(inode, name_index, name,
 +                              buffer, buffer_size);
 +              return 0;
 +
 +      ret = ext3_get_inode_loc(inode, &iloc);
-+      if (ret) 
++      if (ret)
 +              return ret;
 +      raw_inode = iloc.raw_inode;
 +
 +      /* get list of attributes stored in inode body */
 +      error = ext3_xattr_ibody_list(inode, buffer, buffer_size);
 +      if (error < 0) {
-+              /* some error occured while collecting 
++              /* some error occured while collecting
 +               * attributes in inode body */
 +              size = 0;
 +              goto cleanup;
 +              if (buffer_size <= 0) {
 +                      buffer = NULL;
 +                      buffer_size = 0;
-+              } else 
++              } else
 +                      buffer += error;
 +      }
 +
 +      error = ext3_xattr_block_list(inode, buffer, buffer_size);
-+      if (error < 0) 
++      if (error < 0)
 +              /* listing was successful, so we return len */
 +              size = 0;
 +
 + * NOTE: free space includes space our attribute hold
 + */
 +int
-+ext3_xattr_ibody_find(struct inode *inode, int name_index, 
++ext3_xattr_ibody_find(struct inode *inode, int name_index,
 +              const char *name, struct ext3_xattr_entry *rentry, int *free)
 +{
 +      struct ext3_xattr_entry *last;
 +              return ret;
 +
 +      err = ext3_get_inode_loc(inode, &iloc);
-+      if (err) 
++      if (err)
 +              return -EIO;
 +      raw_inode = iloc.raw_inode;
 +
 +
 +/*
 + * ext3_xattr_inode_set()
-+ * 
++ *
 + * this routine add/remove/replace attribute in inode body
 + */
 +int
 +              }
 +              if (name_index == last->e_name_index &&
 +                      name_len == last->e_name_len &&
-+                      !memcmp(name, last->e_name, name_len)) 
++                      !memcmp(name, last->e_name, name_len))
 +                      here = last;
 +              else {
 +                      /* we calculate all but our attribute
 +              e = (struct ext3_xattr_entry *) start;
 +              while (!IS_LAST_ENTRY(e)) {
 +                      struct ext3_xattr_entry *next = EXT3_XATTR_NEXT(e);
-+                      int offs = le16_to_cpu(e->e_value_offs); 
-+                      if (offs < border) 
-+                              e->e_value_offs = 
++                      int offs = le16_to_cpu(e->e_value_offs);
++                      if (offs < border)
++                              e->e_value_offs =
 +                                      cpu_to_le16(offs + size);
 +                      e = next;
 +              }
 +
 +/*
 + * ext3_xattr_block_set()
-+ * 
++ *
 + * this routine add/remove/replace attribute in EA block
 + */
 +int
         */
        loff_t  i_disksize;
  
-+      /* on-disk additional lenght */
++      /* on-disk additional length */
 +      __u16 i_extra_isize;
 +
        /*
 +              if ((sbi->s_inode_size < EXT3_GOOD_OLD_INODE_SIZE) ||
 +                              (sbi->s_inode_size & (sbi->s_inode_size - 1)) ||
 +                              (sbi->s_inode_size > blocksize)) {
-+                      printk (KERN_ERR
++                      printk (KERN_ERR
                                "EXT3-fs: unsupported inode size: %d\n",
                                sbi->s_inode_size);
                        goto failed_mount;