[GFS2] Change ondisk format (hopefully for the last time)

There were one or two fields in structures which didn't get changed
last time back to their gfs1 sizes and alignments. One or two constants
have also changed back to their original values which were missed the
first time.

Its possible that indirect pointer blocks might need to change. If
they don't we'll have to rewrite them all on upgrade due to a change
in the amount of padding that they use.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
diff --git a/fs/gfs2/dir.c b/fs/gfs2/dir.c
index c77e180..c32f7b3 100644
--- a/fs/gfs2/dir.c
+++ b/fs/gfs2/dir.c
@@ -397,11 +397,11 @@
 {
 	struct gfs2_dirent *tmp, *cur;
 	char *bh_end;
-	uint32_t cur_rec_len;
+	uint16_t cur_rec_len;
 
 	cur = *dent;
 	bh_end = bh->b_data + bh->b_size;
-	cur_rec_len = be32_to_cpu(cur->de_rec_len);
+	cur_rec_len = be16_to_cpu(cur->de_rec_len);
 
 	if ((char *)cur + cur_rec_len >= bh_end) {
 		if ((char *)cur + cur_rec_len > bh_end) {
@@ -413,7 +413,7 @@
 
 	tmp = (struct gfs2_dirent *)((char *)cur + cur_rec_len);
 
-	if ((char *)tmp + be32_to_cpu(tmp->de_rec_len) > bh_end) {
+	if ((char *)tmp + be16_to_cpu(tmp->de_rec_len) > bh_end) {
 		gfs2_consist_inode(dip);
 		return -EIO;
 	}
@@ -440,7 +440,7 @@
 static void dirent_del(struct gfs2_inode *dip, struct buffer_head *bh,
 		       struct gfs2_dirent *prev, struct gfs2_dirent *cur)
 {
-	uint32_t cur_rec_len, prev_rec_len;
+	uint16_t cur_rec_len, prev_rec_len;
 
 	if (!cur->de_inum.no_addr) {
 		gfs2_consist_inode(dip);
@@ -460,8 +460,8 @@
 
 	/*  Combine this dentry with the previous one.  */
 
-	prev_rec_len = be32_to_cpu(prev->de_rec_len);
-	cur_rec_len = be32_to_cpu(cur->de_rec_len);
+	prev_rec_len = be16_to_cpu(prev->de_rec_len);
+	cur_rec_len = be16_to_cpu(cur->de_rec_len);
 
 	if ((char *)prev + prev_rec_len != (char *)cur)
 		gfs2_consist_inode(dip);
@@ -469,7 +469,7 @@
 		gfs2_consist_inode(dip);
 
 	prev_rec_len += cur_rec_len;
-	prev->de_rec_len = cpu_to_be32(prev_rec_len);
+	prev->de_rec_len = cpu_to_be16(prev_rec_len);
 }
 
 /**
@@ -513,7 +513,7 @@
 		gfs2_trans_add_bh(dip->i_gl, bh, 1);
 
 		dent->de_rec_len = bh->b_size - offset;
-		dent->de_rec_len = cpu_to_be32(dent->de_rec_len);
+		dent->de_rec_len = cpu_to_be16(dent->de_rec_len);
 		dent->de_name_len = name_len;
 
 		*dent_out = dent;
@@ -521,9 +521,10 @@
 	}
 
 	do {
-		uint32_t cur_rec_len, cur_name_len;
+		uint16_t cur_rec_len;
+		uint32_t cur_name_len;
 
-		cur_rec_len = be32_to_cpu(dent->de_rec_len);
+		cur_rec_len = be16_to_cpu(dent->de_rec_len);
 		cur_name_len = dent->de_name_len;
 
 		if ((!dent->de_inum.no_addr && cur_rec_len >= rec_len) ||
@@ -536,11 +537,11 @@
 				memset(new, 0, sizeof(struct gfs2_dirent));
 
 				new->de_rec_len = cur_rec_len - GFS2_DIRENT_SIZE(cur_name_len);
-				new->de_rec_len = cpu_to_be32(new->de_rec_len);
+				new->de_rec_len = cpu_to_be16(new->de_rec_len);
 				new->de_name_len = name_len;
 
-				dent->de_rec_len = cur_rec_len - be32_to_cpu(new->de_rec_len);
-				dent->de_rec_len = cpu_to_be32(dent->de_rec_len);
+				dent->de_rec_len = cur_rec_len - be16_to_cpu(new->de_rec_len);
+				dent->de_rec_len = cpu_to_be16(dent->de_rec_len);
 
 				*dent_out = new;
 				return 0;
@@ -589,9 +590,10 @@
 		return 1;
 
 	do {
-		uint32_t cur_rec_len, cur_name_len;
+		uint16_t cur_rec_len;
+		uint32_t cur_name_len;
 
-		cur_rec_len = be32_to_cpu(dent->de_rec_len);
+		cur_rec_len = be16_to_cpu(dent->de_rec_len);
 		cur_name_len = dent->de_name_len;
 
 		if ((!dent->de_inum.no_addr && cur_rec_len >= rec_len) ||
@@ -832,10 +834,10 @@
 	/*  Adjust the last dirent's record length
 	   (Remember that dent still points to the last entry.)  */
 
-	dent->de_rec_len = be32_to_cpu(dent->de_rec_len) +
+	dent->de_rec_len = be16_to_cpu(dent->de_rec_len) +
 		sizeof(struct gfs2_dinode) -
 		sizeof(struct gfs2_leaf);
-	dent->de_rec_len = cpu_to_be32(dent->de_rec_len);
+	dent->de_rec_len = cpu_to_be16(dent->de_rec_len);
 
 	brelse(bh);