| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 1 | /* | 
 | 2 |  * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved. | 
| Steven Whitehouse | 3a8a9a1 | 2006-05-18 15:09:15 -0400 | [diff] [blame] | 3 |  * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved. | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 4 |  * | 
 | 5 |  * This copyrighted material is made available to anyone wishing to use, | 
 | 6 |  * modify, copy, or redistribute it subject to the terms and conditions | 
| Steven Whitehouse | e9fc2aa | 2006-09-01 11:05:15 -0400 | [diff] [blame] | 7 |  * of the GNU General Public License version 2. | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 8 |  */ | 
 | 9 |  | 
 | 10 | #include <linux/sched.h> | 
 | 11 | #include <linux/slab.h> | 
 | 12 | #include <linux/spinlock.h> | 
 | 13 | #include <linux/completion.h> | 
 | 14 | #include <linux/buffer_head.h> | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 15 |  | 
 | 16 | #include "gfs2.h" | 
 | 17 | #include <linux/gfs2_ondisk.h> | 
 | 18 |  | 
| Steven Whitehouse | 568f4c9 | 2006-02-27 12:00:42 -0500 | [diff] [blame] | 19 | #define pv(struct, member, fmt) printk(KERN_INFO "  "#member" = "fmt"\n", \ | 
 | 20 | 				       struct->member); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 21 |  | 
 | 22 | /* | 
 | 23 |  * gfs2_xxx_in - read in an xxx struct | 
 | 24 |  * first arg: the cpu-order structure | 
 | 25 |  * buf: the disk-order buffer | 
 | 26 |  * | 
 | 27 |  * gfs2_xxx_out - write out an xxx struct | 
 | 28 |  * first arg: the cpu-order structure | 
 | 29 |  * buf: the disk-order buffer | 
 | 30 |  * | 
 | 31 |  * gfs2_xxx_print - print out an xxx struct | 
 | 32 |  * first arg: the cpu-order structure | 
 | 33 |  */ | 
 | 34 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 35 | void gfs2_inum_in(struct gfs2_inum *no, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 36 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 37 | 	const struct gfs2_inum *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 38 |  | 
 | 39 | 	no->no_formal_ino = be64_to_cpu(str->no_formal_ino); | 
 | 40 | 	no->no_addr = be64_to_cpu(str->no_addr); | 
 | 41 | } | 
 | 42 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 43 | void gfs2_inum_out(const struct gfs2_inum *no, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 44 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 45 | 	struct gfs2_inum *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 46 |  | 
 | 47 | 	str->no_formal_ino = cpu_to_be64(no->no_formal_ino); | 
 | 48 | 	str->no_addr = cpu_to_be64(no->no_addr); | 
 | 49 | } | 
 | 50 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 51 | static void gfs2_inum_print(const struct gfs2_inum *no) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 52 | { | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 53 | 	printk(KERN_INFO "  no_formal_ino = %llu\n", (unsigned long long)no->no_formal_ino); | 
 | 54 | 	printk(KERN_INFO "  no_addr = %llu\n", (unsigned long long)no->no_addr); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 55 | } | 
 | 56 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 57 | static void gfs2_meta_header_in(struct gfs2_meta_header *mh, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 58 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 59 | 	const struct gfs2_meta_header *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 60 |  | 
 | 61 | 	mh->mh_magic = be32_to_cpu(str->mh_magic); | 
| Steven Whitehouse | e3167de | 2006-03-30 15:46:23 -0500 | [diff] [blame] | 62 | 	mh->mh_type = be32_to_cpu(str->mh_type); | 
 | 63 | 	mh->mh_format = be32_to_cpu(str->mh_format); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 64 | } | 
 | 65 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 66 | static void gfs2_meta_header_out(const struct gfs2_meta_header *mh, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 67 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 68 | 	struct gfs2_meta_header *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 69 |  | 
 | 70 | 	str->mh_magic = cpu_to_be32(mh->mh_magic); | 
| Steven Whitehouse | e3167de | 2006-03-30 15:46:23 -0500 | [diff] [blame] | 71 | 	str->mh_type = cpu_to_be32(mh->mh_type); | 
 | 72 | 	str->mh_format = cpu_to_be32(mh->mh_format); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 73 | } | 
 | 74 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 75 | static void gfs2_meta_header_print(const struct gfs2_meta_header *mh) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 76 | { | 
 | 77 | 	pv(mh, mh_magic, "0x%.8X"); | 
 | 78 | 	pv(mh, mh_type, "%u"); | 
 | 79 | 	pv(mh, mh_format, "%u"); | 
 | 80 | } | 
 | 81 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 82 | void gfs2_sb_in(struct gfs2_sb *sb, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 83 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 84 | 	const struct gfs2_sb *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 85 |  | 
 | 86 | 	gfs2_meta_header_in(&sb->sb_header, buf); | 
 | 87 |  | 
 | 88 | 	sb->sb_fs_format = be32_to_cpu(str->sb_fs_format); | 
 | 89 | 	sb->sb_multihost_format = be32_to_cpu(str->sb_multihost_format); | 
 | 90 | 	sb->sb_bsize = be32_to_cpu(str->sb_bsize); | 
 | 91 | 	sb->sb_bsize_shift = be32_to_cpu(str->sb_bsize_shift); | 
 | 92 |  | 
 | 93 | 	gfs2_inum_in(&sb->sb_master_dir, (char *)&str->sb_master_dir); | 
 | 94 | 	gfs2_inum_in(&sb->sb_root_dir, (char *)&str->sb_root_dir); | 
 | 95 |  | 
 | 96 | 	memcpy(sb->sb_lockproto, str->sb_lockproto, GFS2_LOCKNAME_LEN); | 
 | 97 | 	memcpy(sb->sb_locktable, str->sb_locktable, GFS2_LOCKNAME_LEN); | 
 | 98 | } | 
 | 99 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 100 | void gfs2_rindex_in(struct gfs2_rindex *ri, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 101 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 102 | 	const struct gfs2_rindex *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 103 |  | 
 | 104 | 	ri->ri_addr = be64_to_cpu(str->ri_addr); | 
 | 105 | 	ri->ri_length = be32_to_cpu(str->ri_length); | 
 | 106 | 	ri->ri_data0 = be64_to_cpu(str->ri_data0); | 
 | 107 | 	ri->ri_data = be32_to_cpu(str->ri_data); | 
 | 108 | 	ri->ri_bitbytes = be32_to_cpu(str->ri_bitbytes); | 
 | 109 |  | 
 | 110 | } | 
 | 111 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 112 | void gfs2_rindex_print(const struct gfs2_rindex *ri) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 113 | { | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 114 | 	printk(KERN_INFO "  ri_addr = %llu\n", (unsigned long long)ri->ri_addr); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 115 | 	pv(ri, ri_length, "%u"); | 
 | 116 |  | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 117 | 	printk(KERN_INFO "  ri_data0 = %llu\n", (unsigned long long)ri->ri_data0); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 118 | 	pv(ri, ri_data, "%u"); | 
 | 119 |  | 
 | 120 | 	pv(ri, ri_bitbytes, "%u"); | 
 | 121 | } | 
 | 122 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 123 | void gfs2_rgrp_in(struct gfs2_rgrp *rg, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 124 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 125 | 	const struct gfs2_rgrp *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 126 |  | 
 | 127 | 	gfs2_meta_header_in(&rg->rg_header, buf); | 
 | 128 | 	rg->rg_flags = be32_to_cpu(str->rg_flags); | 
 | 129 | 	rg->rg_free = be32_to_cpu(str->rg_free); | 
 | 130 | 	rg->rg_dinodes = be32_to_cpu(str->rg_dinodes); | 
| Steven Whitehouse | 4340fe6 | 2006-07-11 09:46:33 -0400 | [diff] [blame] | 131 | 	rg->rg_igeneration = be64_to_cpu(str->rg_igeneration); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 132 | } | 
 | 133 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 134 | void gfs2_rgrp_out(const struct gfs2_rgrp *rg, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 135 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 136 | 	struct gfs2_rgrp *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 137 |  | 
 | 138 | 	gfs2_meta_header_out(&rg->rg_header, buf); | 
 | 139 | 	str->rg_flags = cpu_to_be32(rg->rg_flags); | 
 | 140 | 	str->rg_free = cpu_to_be32(rg->rg_free); | 
 | 141 | 	str->rg_dinodes = cpu_to_be32(rg->rg_dinodes); | 
| Steven Whitehouse | 4340fe6 | 2006-07-11 09:46:33 -0400 | [diff] [blame] | 142 | 	str->__pad = cpu_to_be32(0); | 
 | 143 | 	str->rg_igeneration = cpu_to_be64(rg->rg_igeneration); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 144 | 	memset(&str->rg_reserved, 0, sizeof(str->rg_reserved)); | 
 | 145 | } | 
 | 146 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 147 | void gfs2_quota_in(struct gfs2_quota *qu, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 148 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 149 | 	const struct gfs2_quota *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 150 |  | 
 | 151 | 	qu->qu_limit = be64_to_cpu(str->qu_limit); | 
 | 152 | 	qu->qu_warn = be64_to_cpu(str->qu_warn); | 
 | 153 | 	qu->qu_value = be64_to_cpu(str->qu_value); | 
 | 154 | } | 
 | 155 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 156 | void gfs2_dinode_in(struct gfs2_dinode *di, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 157 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 158 | 	const struct gfs2_dinode *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 159 |  | 
 | 160 | 	gfs2_meta_header_in(&di->di_header, buf); | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 161 | 	gfs2_inum_in(&di->di_num, &str->di_num); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 162 |  | 
 | 163 | 	di->di_mode = be32_to_cpu(str->di_mode); | 
 | 164 | 	di->di_uid = be32_to_cpu(str->di_uid); | 
 | 165 | 	di->di_gid = be32_to_cpu(str->di_gid); | 
 | 166 | 	di->di_nlink = be32_to_cpu(str->di_nlink); | 
 | 167 | 	di->di_size = be64_to_cpu(str->di_size); | 
 | 168 | 	di->di_blocks = be64_to_cpu(str->di_blocks); | 
 | 169 | 	di->di_atime = be64_to_cpu(str->di_atime); | 
 | 170 | 	di->di_mtime = be64_to_cpu(str->di_mtime); | 
 | 171 | 	di->di_ctime = be64_to_cpu(str->di_ctime); | 
 | 172 | 	di->di_major = be32_to_cpu(str->di_major); | 
 | 173 | 	di->di_minor = be32_to_cpu(str->di_minor); | 
 | 174 |  | 
 | 175 | 	di->di_goal_meta = be64_to_cpu(str->di_goal_meta); | 
 | 176 | 	di->di_goal_data = be64_to_cpu(str->di_goal_data); | 
| Steven Whitehouse | 4340fe6 | 2006-07-11 09:46:33 -0400 | [diff] [blame] | 177 | 	di->di_generation = be64_to_cpu(str->di_generation); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 178 |  | 
 | 179 | 	di->di_flags = be32_to_cpu(str->di_flags); | 
 | 180 | 	di->di_payload_format = be32_to_cpu(str->di_payload_format); | 
 | 181 | 	di->di_height = be16_to_cpu(str->di_height); | 
 | 182 |  | 
 | 183 | 	di->di_depth = be16_to_cpu(str->di_depth); | 
 | 184 | 	di->di_entries = be32_to_cpu(str->di_entries); | 
 | 185 |  | 
 | 186 | 	di->di_eattr = be64_to_cpu(str->di_eattr); | 
 | 187 |  | 
 | 188 | } | 
 | 189 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 190 | void gfs2_dinode_out(const struct gfs2_dinode *di, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 191 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 192 | 	struct gfs2_dinode *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 193 |  | 
 | 194 | 	gfs2_meta_header_out(&di->di_header, buf); | 
 | 195 | 	gfs2_inum_out(&di->di_num, (char *)&str->di_num); | 
 | 196 |  | 
 | 197 | 	str->di_mode = cpu_to_be32(di->di_mode); | 
 | 198 | 	str->di_uid = cpu_to_be32(di->di_uid); | 
 | 199 | 	str->di_gid = cpu_to_be32(di->di_gid); | 
 | 200 | 	str->di_nlink = cpu_to_be32(di->di_nlink); | 
 | 201 | 	str->di_size = cpu_to_be64(di->di_size); | 
 | 202 | 	str->di_blocks = cpu_to_be64(di->di_blocks); | 
 | 203 | 	str->di_atime = cpu_to_be64(di->di_atime); | 
 | 204 | 	str->di_mtime = cpu_to_be64(di->di_mtime); | 
 | 205 | 	str->di_ctime = cpu_to_be64(di->di_ctime); | 
 | 206 | 	str->di_major = cpu_to_be32(di->di_major); | 
 | 207 | 	str->di_minor = cpu_to_be32(di->di_minor); | 
 | 208 |  | 
 | 209 | 	str->di_goal_meta = cpu_to_be64(di->di_goal_meta); | 
 | 210 | 	str->di_goal_data = cpu_to_be64(di->di_goal_data); | 
| Steven Whitehouse | 4340fe6 | 2006-07-11 09:46:33 -0400 | [diff] [blame] | 211 | 	str->di_generation = cpu_to_be64(di->di_generation); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 212 |  | 
 | 213 | 	str->di_flags = cpu_to_be32(di->di_flags); | 
 | 214 | 	str->di_payload_format = cpu_to_be32(di->di_payload_format); | 
 | 215 | 	str->di_height = cpu_to_be16(di->di_height); | 
 | 216 |  | 
 | 217 | 	str->di_depth = cpu_to_be16(di->di_depth); | 
 | 218 | 	str->di_entries = cpu_to_be32(di->di_entries); | 
 | 219 |  | 
 | 220 | 	str->di_eattr = cpu_to_be64(di->di_eattr); | 
 | 221 |  | 
 | 222 | } | 
 | 223 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 224 | void gfs2_dinode_print(const struct gfs2_dinode *di) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 225 | { | 
 | 226 | 	gfs2_meta_header_print(&di->di_header); | 
 | 227 | 	gfs2_inum_print(&di->di_num); | 
 | 228 |  | 
 | 229 | 	pv(di, di_mode, "0%o"); | 
 | 230 | 	pv(di, di_uid, "%u"); | 
 | 231 | 	pv(di, di_gid, "%u"); | 
 | 232 | 	pv(di, di_nlink, "%u"); | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 233 | 	printk(KERN_INFO "  di_size = %llu\n", (unsigned long long)di->di_size); | 
 | 234 | 	printk(KERN_INFO "  di_blocks = %llu\n", (unsigned long long)di->di_blocks); | 
 | 235 | 	printk(KERN_INFO "  di_atime = %lld\n", (long long)di->di_atime); | 
 | 236 | 	printk(KERN_INFO "  di_mtime = %lld\n", (long long)di->di_mtime); | 
 | 237 | 	printk(KERN_INFO "  di_ctime = %lld\n", (long long)di->di_ctime); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 238 | 	pv(di, di_major, "%u"); | 
 | 239 | 	pv(di, di_minor, "%u"); | 
 | 240 |  | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 241 | 	printk(KERN_INFO "  di_goal_meta = %llu\n", (unsigned long long)di->di_goal_meta); | 
 | 242 | 	printk(KERN_INFO "  di_goal_data = %llu\n", (unsigned long long)di->di_goal_data); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 243 |  | 
 | 244 | 	pv(di, di_flags, "0x%.8X"); | 
 | 245 | 	pv(di, di_payload_format, "%u"); | 
 | 246 | 	pv(di, di_height, "%u"); | 
 | 247 |  | 
 | 248 | 	pv(di, di_depth, "%u"); | 
 | 249 | 	pv(di, di_entries, "%u"); | 
 | 250 |  | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 251 | 	printk(KERN_INFO "  di_eattr = %llu\n", (unsigned long long)di->di_eattr); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 252 | } | 
 | 253 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 254 | void gfs2_log_header_in(struct gfs2_log_header *lh, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 255 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 256 | 	const struct gfs2_log_header *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 257 |  | 
 | 258 | 	gfs2_meta_header_in(&lh->lh_header, buf); | 
 | 259 | 	lh->lh_sequence = be64_to_cpu(str->lh_sequence); | 
 | 260 | 	lh->lh_flags = be32_to_cpu(str->lh_flags); | 
 | 261 | 	lh->lh_tail = be32_to_cpu(str->lh_tail); | 
 | 262 | 	lh->lh_blkno = be32_to_cpu(str->lh_blkno); | 
 | 263 | 	lh->lh_hash = be32_to_cpu(str->lh_hash); | 
 | 264 | } | 
 | 265 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 266 | void gfs2_inum_range_in(struct gfs2_inum_range *ir, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 267 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 268 | 	const struct gfs2_inum_range *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 269 |  | 
 | 270 | 	ir->ir_start = be64_to_cpu(str->ir_start); | 
 | 271 | 	ir->ir_length = be64_to_cpu(str->ir_length); | 
 | 272 | } | 
 | 273 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 274 | void gfs2_inum_range_out(const struct gfs2_inum_range *ir, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 275 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 276 | 	struct gfs2_inum_range *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 277 |  | 
 | 278 | 	str->ir_start = cpu_to_be64(ir->ir_start); | 
 | 279 | 	str->ir_length = cpu_to_be64(ir->ir_length); | 
 | 280 | } | 
 | 281 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 282 | void gfs2_statfs_change_in(struct gfs2_statfs_change *sc, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 283 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 284 | 	const struct gfs2_statfs_change *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 285 |  | 
 | 286 | 	sc->sc_total = be64_to_cpu(str->sc_total); | 
 | 287 | 	sc->sc_free = be64_to_cpu(str->sc_free); | 
 | 288 | 	sc->sc_dinodes = be64_to_cpu(str->sc_dinodes); | 
 | 289 | } | 
 | 290 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 291 | void gfs2_statfs_change_out(const struct gfs2_statfs_change *sc, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 292 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 293 | 	struct gfs2_statfs_change *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 294 |  | 
 | 295 | 	str->sc_total = cpu_to_be64(sc->sc_total); | 
 | 296 | 	str->sc_free = cpu_to_be64(sc->sc_free); | 
 | 297 | 	str->sc_dinodes = cpu_to_be64(sc->sc_dinodes); | 
 | 298 | } | 
 | 299 |  | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 300 | void gfs2_quota_change_in(struct gfs2_quota_change *qc, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 301 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 302 | 	const struct gfs2_quota_change *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 303 |  | 
 | 304 | 	qc->qc_change = be64_to_cpu(str->qc_change); | 
 | 305 | 	qc->qc_flags = be32_to_cpu(str->qc_flags); | 
 | 306 | 	qc->qc_id = be32_to_cpu(str->qc_id); | 
 | 307 | } | 
 | 308 |  |