| 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 |  | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 10 | #include <linux/slab.h> | 
 | 11 | #include <linux/spinlock.h> | 
 | 12 | #include <linux/completion.h> | 
 | 13 | #include <linux/buffer_head.h> | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 14 |  | 
 | 15 | #include "gfs2.h" | 
 | 16 | #include <linux/gfs2_ondisk.h> | 
| Steven Whitehouse | 539e5d6 | 2006-10-31 15:07:05 -0500 | [diff] [blame] | 17 | #include <linux/lm_interface.h> | 
 | 18 | #include "incore.h" | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 19 |  | 
| Steven Whitehouse | 568f4c9 | 2006-02-27 12:00:42 -0500 | [diff] [blame] | 20 | #define pv(struct, member, fmt) printk(KERN_INFO "  "#member" = "fmt"\n", \ | 
 | 21 | 				       struct->member); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 22 |  | 
 | 23 | /* | 
 | 24 |  * gfs2_xxx_in - read in an xxx struct | 
 | 25 |  * first arg: the cpu-order structure | 
 | 26 |  * buf: the disk-order buffer | 
 | 27 |  * | 
 | 28 |  * gfs2_xxx_out - write out an xxx struct | 
 | 29 |  * first arg: the cpu-order structure | 
 | 30 |  * buf: the disk-order buffer | 
 | 31 |  * | 
 | 32 |  * gfs2_xxx_print - print out an xxx struct | 
 | 33 |  * first arg: the cpu-order structure | 
 | 34 |  */ | 
 | 35 |  | 
| Al Viro | 629a21e | 2006-10-13 22:51:24 -0400 | [diff] [blame] | 36 | void gfs2_inum_in(struct gfs2_inum_host *no, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 37 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 38 | 	const struct gfs2_inum *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 39 |  | 
 | 40 | 	no->no_formal_ino = be64_to_cpu(str->no_formal_ino); | 
 | 41 | 	no->no_addr = be64_to_cpu(str->no_addr); | 
 | 42 | } | 
 | 43 |  | 
| Al Viro | 629a21e | 2006-10-13 22:51:24 -0400 | [diff] [blame] | 44 | void gfs2_inum_out(const struct gfs2_inum_host *no, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 45 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 46 | 	struct gfs2_inum *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 47 |  | 
 | 48 | 	str->no_formal_ino = cpu_to_be64(no->no_formal_ino); | 
 | 49 | 	str->no_addr = cpu_to_be64(no->no_addr); | 
 | 50 | } | 
 | 51 |  | 
| Al Viro | 629a21e | 2006-10-13 22:51:24 -0400 | [diff] [blame] | 52 | static void gfs2_inum_print(const struct gfs2_inum_host *no) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 53 | { | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 54 | 	printk(KERN_INFO "  no_formal_ino = %llu\n", (unsigned long long)no->no_formal_ino); | 
 | 55 | 	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] | 56 | } | 
 | 57 |  | 
| Steven Whitehouse | af339c0 | 2006-11-01 10:34:15 -0500 | [diff] [blame] | 58 | static void gfs2_meta_header_in(struct gfs2_meta_header_host *mh, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 59 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 60 | 	const struct gfs2_meta_header *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 61 |  | 
 | 62 | 	mh->mh_magic = be32_to_cpu(str->mh_magic); | 
| Steven Whitehouse | e3167de | 2006-03-30 15:46:23 -0500 | [diff] [blame] | 63 | 	mh->mh_type = be32_to_cpu(str->mh_type); | 
 | 64 | 	mh->mh_format = be32_to_cpu(str->mh_format); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 65 | } | 
 | 66 |  | 
| Al Viro | f50dfaf | 2006-10-13 20:45:02 -0400 | [diff] [blame] | 67 | void gfs2_sb_in(struct gfs2_sb_host *sb, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 68 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 69 | 	const struct gfs2_sb *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 70 |  | 
 | 71 | 	gfs2_meta_header_in(&sb->sb_header, buf); | 
 | 72 |  | 
 | 73 | 	sb->sb_fs_format = be32_to_cpu(str->sb_fs_format); | 
 | 74 | 	sb->sb_multihost_format = be32_to_cpu(str->sb_multihost_format); | 
 | 75 | 	sb->sb_bsize = be32_to_cpu(str->sb_bsize); | 
 | 76 | 	sb->sb_bsize_shift = be32_to_cpu(str->sb_bsize_shift); | 
 | 77 |  | 
 | 78 | 	gfs2_inum_in(&sb->sb_master_dir, (char *)&str->sb_master_dir); | 
 | 79 | 	gfs2_inum_in(&sb->sb_root_dir, (char *)&str->sb_root_dir); | 
 | 80 |  | 
 | 81 | 	memcpy(sb->sb_lockproto, str->sb_lockproto, GFS2_LOCKNAME_LEN); | 
 | 82 | 	memcpy(sb->sb_locktable, str->sb_locktable, GFS2_LOCKNAME_LEN); | 
 | 83 | } | 
 | 84 |  | 
| Al Viro | 1e81c4c | 2006-10-13 22:51:24 -0400 | [diff] [blame] | 85 | void gfs2_rindex_in(struct gfs2_rindex_host *ri, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 86 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 87 | 	const struct gfs2_rindex *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 88 |  | 
 | 89 | 	ri->ri_addr = be64_to_cpu(str->ri_addr); | 
 | 90 | 	ri->ri_length = be32_to_cpu(str->ri_length); | 
 | 91 | 	ri->ri_data0 = be64_to_cpu(str->ri_data0); | 
 | 92 | 	ri->ri_data = be32_to_cpu(str->ri_data); | 
 | 93 | 	ri->ri_bitbytes = be32_to_cpu(str->ri_bitbytes); | 
 | 94 |  | 
 | 95 | } | 
 | 96 |  | 
| Al Viro | 1e81c4c | 2006-10-13 22:51:24 -0400 | [diff] [blame] | 97 | void gfs2_rindex_print(const struct gfs2_rindex_host *ri) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 98 | { | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 99 | 	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] | 100 | 	pv(ri, ri_length, "%u"); | 
 | 101 |  | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 102 | 	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] | 103 | 	pv(ri, ri_data, "%u"); | 
 | 104 |  | 
 | 105 | 	pv(ri, ri_bitbytes, "%u"); | 
 | 106 | } | 
 | 107 |  | 
| Al Viro | 6882666 | 2006-10-13 21:07:22 -0400 | [diff] [blame] | 108 | void gfs2_rgrp_in(struct gfs2_rgrp_host *rg, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 109 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 110 | 	const struct gfs2_rgrp *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 111 |  | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 112 | 	rg->rg_flags = be32_to_cpu(str->rg_flags); | 
 | 113 | 	rg->rg_free = be32_to_cpu(str->rg_free); | 
 | 114 | 	rg->rg_dinodes = be32_to_cpu(str->rg_dinodes); | 
| Steven Whitehouse | 4340fe6 | 2006-07-11 09:46:33 -0400 | [diff] [blame] | 115 | 	rg->rg_igeneration = be64_to_cpu(str->rg_igeneration); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 116 | } | 
 | 117 |  | 
| Al Viro | 6882666 | 2006-10-13 21:07:22 -0400 | [diff] [blame] | 118 | void gfs2_rgrp_out(const struct gfs2_rgrp_host *rg, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 119 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 120 | 	struct gfs2_rgrp *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 121 |  | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 122 | 	str->rg_flags = cpu_to_be32(rg->rg_flags); | 
 | 123 | 	str->rg_free = cpu_to_be32(rg->rg_free); | 
 | 124 | 	str->rg_dinodes = cpu_to_be32(rg->rg_dinodes); | 
| Steven Whitehouse | 4340fe6 | 2006-07-11 09:46:33 -0400 | [diff] [blame] | 125 | 	str->__pad = cpu_to_be32(0); | 
 | 126 | 	str->rg_igeneration = cpu_to_be64(rg->rg_igeneration); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 127 | 	memset(&str->rg_reserved, 0, sizeof(str->rg_reserved)); | 
 | 128 | } | 
 | 129 |  | 
| Al Viro | b5bc9e8 | 2006-10-13 23:31:55 -0400 | [diff] [blame] | 130 | void gfs2_quota_in(struct gfs2_quota_host *qu, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 131 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 132 | 	const struct gfs2_quota *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 133 |  | 
 | 134 | 	qu->qu_limit = be64_to_cpu(str->qu_limit); | 
 | 135 | 	qu->qu_warn = be64_to_cpu(str->qu_warn); | 
 | 136 | 	qu->qu_value = be64_to_cpu(str->qu_value); | 
 | 137 | } | 
 | 138 |  | 
| Steven Whitehouse | 539e5d6 | 2006-10-31 15:07:05 -0500 | [diff] [blame] | 139 | void gfs2_dinode_out(const struct gfs2_inode *ip, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 140 | { | 
| Steven Whitehouse | 539e5d6 | 2006-10-31 15:07:05 -0500 | [diff] [blame] | 141 | 	const struct gfs2_dinode_host *di = &ip->i_di; | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 142 | 	struct gfs2_dinode *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 143 |  | 
| Steven Whitehouse | af339c0 | 2006-11-01 10:34:15 -0500 | [diff] [blame] | 144 | 	str->di_header.mh_magic = cpu_to_be32(GFS2_MAGIC); | 
 | 145 | 	str->di_header.mh_type = cpu_to_be32(GFS2_METATYPE_DI); | 
 | 146 | 	str->di_header.__pad0 = 0; | 
 | 147 | 	str->di_header.mh_format = cpu_to_be32(GFS2_FORMAT_DI); | 
 | 148 | 	str->di_header.__pad1 = 0; | 
 | 149 |  | 
 | 150 | 	gfs2_inum_out(&ip->i_num, &str->di_num); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 151 |  | 
| Steven Whitehouse | b60623c | 2006-11-01 12:22:46 -0500 | [diff] [blame] | 152 | 	str->di_mode = cpu_to_be32(ip->i_inode.i_mode); | 
| Steven Whitehouse | 2933f92 | 2006-11-01 13:23:29 -0500 | [diff] [blame] | 153 | 	str->di_uid = cpu_to_be32(ip->i_inode.i_uid); | 
 | 154 | 	str->di_gid = cpu_to_be32(ip->i_inode.i_gid); | 
| Steven Whitehouse | 4f56110 | 2006-11-01 14:04:17 -0500 | [diff] [blame] | 155 | 	str->di_nlink = cpu_to_be32(ip->i_inode.i_nlink); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 156 | 	str->di_size = cpu_to_be64(di->di_size); | 
 | 157 | 	str->di_blocks = cpu_to_be64(di->di_blocks); | 
| Steven Whitehouse | 1a7b1ee | 2006-11-01 14:35:17 -0500 | [diff] [blame] | 158 | 	str->di_atime = cpu_to_be64(ip->i_inode.i_atime.tv_sec); | 
 | 159 | 	str->di_mtime = cpu_to_be64(ip->i_inode.i_mtime.tv_sec); | 
 | 160 | 	str->di_ctime = cpu_to_be64(ip->i_inode.i_ctime.tv_sec); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 161 |  | 
 | 162 | 	str->di_goal_meta = cpu_to_be64(di->di_goal_meta); | 
 | 163 | 	str->di_goal_data = cpu_to_be64(di->di_goal_data); | 
| Steven Whitehouse | 4340fe6 | 2006-07-11 09:46:33 -0400 | [diff] [blame] | 164 | 	str->di_generation = cpu_to_be64(di->di_generation); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 165 |  | 
 | 166 | 	str->di_flags = cpu_to_be32(di->di_flags); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 167 | 	str->di_height = cpu_to_be16(di->di_height); | 
| Steven Whitehouse | a9583c7 | 2006-11-01 20:09:14 -0500 | [diff] [blame] | 168 | 	str->di_payload_format = cpu_to_be32(S_ISDIR(ip->i_inode.i_mode) && | 
 | 169 | 					     !(ip->i_di.di_flags & GFS2_DIF_EXHASH) ? | 
 | 170 | 					     GFS2_FORMAT_DE : 0); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 171 | 	str->di_depth = cpu_to_be16(di->di_depth); | 
 | 172 | 	str->di_entries = cpu_to_be32(di->di_entries); | 
 | 173 |  | 
 | 174 | 	str->di_eattr = cpu_to_be64(di->di_eattr); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 175 | } | 
 | 176 |  | 
| Steven Whitehouse | 4cc14f0 | 2006-10-31 19:00:24 -0500 | [diff] [blame] | 177 | void gfs2_dinode_print(const struct gfs2_inode *ip) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 178 | { | 
| Steven Whitehouse | 4cc14f0 | 2006-10-31 19:00:24 -0500 | [diff] [blame] | 179 | 	const struct gfs2_dinode_host *di = &ip->i_di; | 
 | 180 |  | 
| Steven Whitehouse | af339c0 | 2006-11-01 10:34:15 -0500 | [diff] [blame] | 181 | 	gfs2_inum_print(&ip->i_num); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 182 |  | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 183 | 	printk(KERN_INFO "  di_size = %llu\n", (unsigned long long)di->di_size); | 
 | 184 | 	printk(KERN_INFO "  di_blocks = %llu\n", (unsigned long long)di->di_blocks); | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 185 | 	printk(KERN_INFO "  di_goal_meta = %llu\n", (unsigned long long)di->di_goal_meta); | 
 | 186 | 	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] | 187 |  | 
 | 188 | 	pv(di, di_flags, "0x%.8X"); | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 189 | 	pv(di, di_height, "%u"); | 
 | 190 |  | 
 | 191 | 	pv(di, di_depth, "%u"); | 
 | 192 | 	pv(di, di_entries, "%u"); | 
 | 193 |  | 
| Steven Whitehouse | 382066d | 2006-05-24 10:22:09 -0400 | [diff] [blame] | 194 | 	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] | 195 | } | 
 | 196 |  | 
| Al Viro | 5516762 | 2006-10-13 21:47:13 -0400 | [diff] [blame] | 197 | void gfs2_log_header_in(struct gfs2_log_header_host *lh, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 198 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 199 | 	const struct gfs2_log_header *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 200 |  | 
 | 201 | 	gfs2_meta_header_in(&lh->lh_header, buf); | 
 | 202 | 	lh->lh_sequence = be64_to_cpu(str->lh_sequence); | 
 | 203 | 	lh->lh_flags = be32_to_cpu(str->lh_flags); | 
 | 204 | 	lh->lh_tail = be32_to_cpu(str->lh_tail); | 
 | 205 | 	lh->lh_blkno = be32_to_cpu(str->lh_blkno); | 
 | 206 | 	lh->lh_hash = be32_to_cpu(str->lh_hash); | 
 | 207 | } | 
 | 208 |  | 
| Al Viro | e697264 | 2006-10-13 21:29:46 -0400 | [diff] [blame] | 209 | void gfs2_inum_range_in(struct gfs2_inum_range_host *ir, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 210 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 211 | 	const struct gfs2_inum_range *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 212 |  | 
 | 213 | 	ir->ir_start = be64_to_cpu(str->ir_start); | 
 | 214 | 	ir->ir_length = be64_to_cpu(str->ir_length); | 
 | 215 | } | 
 | 216 |  | 
| Al Viro | e697264 | 2006-10-13 21:29:46 -0400 | [diff] [blame] | 217 | void gfs2_inum_range_out(const struct gfs2_inum_range_host *ir, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 218 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 219 | 	struct gfs2_inum_range *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 220 |  | 
 | 221 | 	str->ir_start = cpu_to_be64(ir->ir_start); | 
 | 222 | 	str->ir_length = cpu_to_be64(ir->ir_length); | 
 | 223 | } | 
 | 224 |  | 
| Al Viro | bd209cc | 2006-10-13 23:43:19 -0400 | [diff] [blame] | 225 | void gfs2_statfs_change_in(struct gfs2_statfs_change_host *sc, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 226 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 227 | 	const struct gfs2_statfs_change *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 228 |  | 
 | 229 | 	sc->sc_total = be64_to_cpu(str->sc_total); | 
 | 230 | 	sc->sc_free = be64_to_cpu(str->sc_free); | 
 | 231 | 	sc->sc_dinodes = be64_to_cpu(str->sc_dinodes); | 
 | 232 | } | 
 | 233 |  | 
| Al Viro | bd209cc | 2006-10-13 23:43:19 -0400 | [diff] [blame] | 234 | void gfs2_statfs_change_out(const struct gfs2_statfs_change_host *sc, void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 235 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 236 | 	struct gfs2_statfs_change *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 237 |  | 
 | 238 | 	str->sc_total = cpu_to_be64(sc->sc_total); | 
 | 239 | 	str->sc_free = cpu_to_be64(sc->sc_free); | 
 | 240 | 	str->sc_dinodes = cpu_to_be64(sc->sc_dinodes); | 
 | 241 | } | 
 | 242 |  | 
| Al Viro | b62f963 | 2006-10-13 23:46:46 -0400 | [diff] [blame] | 243 | void gfs2_quota_change_in(struct gfs2_quota_change_host *qc, const void *buf) | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 244 | { | 
| Steven Whitehouse | 38c60ef | 2006-09-04 14:48:37 -0400 | [diff] [blame] | 245 | 	const struct gfs2_quota_change *str = buf; | 
| David Teigland | b3b94fa | 2006-01-16 16:50:04 +0000 | [diff] [blame] | 246 |  | 
 | 247 | 	qc->qc_change = be64_to_cpu(str->qc_change); | 
 | 248 | 	qc->qc_flags = be32_to_cpu(str->qc_flags); | 
 | 249 | 	qc->qc_id = be32_to_cpu(str->qc_id); | 
 | 250 | } | 
 | 251 |  |