]>
git.ipfire.org Git - thirdparty/e2fsprogs.git/blob - lib/ext2fs/swapfs.c
2 * swapfs.c --- swap ext2 filesystem data structures
4 * Copyright (C) 1995, 1996, 2002 Theodore Ts'o.
7 * This file may be redistributed under the terms of the GNU Public
21 #ifdef EXT2FS_ENABLE_SWAPFS
22 void ext2fs_swap_super(struct ext2_super_block
* sb
)
25 sb
->s_inodes_count
= ext2fs_swab32(sb
->s_inodes_count
);
26 sb
->s_blocks_count
= ext2fs_swab32(sb
->s_blocks_count
);
27 sb
->s_r_blocks_count
= ext2fs_swab32(sb
->s_r_blocks_count
);
28 sb
->s_free_blocks_count
= ext2fs_swab32(sb
->s_free_blocks_count
);
29 sb
->s_free_inodes_count
= ext2fs_swab32(sb
->s_free_inodes_count
);
30 sb
->s_first_data_block
= ext2fs_swab32(sb
->s_first_data_block
);
31 sb
->s_log_block_size
= ext2fs_swab32(sb
->s_log_block_size
);
32 sb
->s_log_frag_size
= ext2fs_swab32(sb
->s_log_frag_size
);
33 sb
->s_blocks_per_group
= ext2fs_swab32(sb
->s_blocks_per_group
);
34 sb
->s_frags_per_group
= ext2fs_swab32(sb
->s_frags_per_group
);
35 sb
->s_inodes_per_group
= ext2fs_swab32(sb
->s_inodes_per_group
);
36 sb
->s_mtime
= ext2fs_swab32(sb
->s_mtime
);
37 sb
->s_wtime
= ext2fs_swab32(sb
->s_wtime
);
38 sb
->s_mnt_count
= ext2fs_swab16(sb
->s_mnt_count
);
39 sb
->s_max_mnt_count
= ext2fs_swab16(sb
->s_max_mnt_count
);
40 sb
->s_magic
= ext2fs_swab16(sb
->s_magic
);
41 sb
->s_state
= ext2fs_swab16(sb
->s_state
);
42 sb
->s_errors
= ext2fs_swab16(sb
->s_errors
);
43 sb
->s_minor_rev_level
= ext2fs_swab16(sb
->s_minor_rev_level
);
44 sb
->s_lastcheck
= ext2fs_swab32(sb
->s_lastcheck
);
45 sb
->s_checkinterval
= ext2fs_swab32(sb
->s_checkinterval
);
46 sb
->s_creator_os
= ext2fs_swab32(sb
->s_creator_os
);
47 sb
->s_rev_level
= ext2fs_swab32(sb
->s_rev_level
);
48 sb
->s_def_resuid
= ext2fs_swab16(sb
->s_def_resuid
);
49 sb
->s_def_resgid
= ext2fs_swab16(sb
->s_def_resgid
);
50 sb
->s_first_ino
= ext2fs_swab32(sb
->s_first_ino
);
51 sb
->s_inode_size
= ext2fs_swab16(sb
->s_inode_size
);
52 sb
->s_block_group_nr
= ext2fs_swab16(sb
->s_block_group_nr
);
53 sb
->s_feature_compat
= ext2fs_swab32(sb
->s_feature_compat
);
54 sb
->s_feature_incompat
= ext2fs_swab32(sb
->s_feature_incompat
);
55 sb
->s_feature_ro_compat
= ext2fs_swab32(sb
->s_feature_ro_compat
);
56 sb
->s_algorithm_usage_bitmap
= ext2fs_swab32(sb
->s_algorithm_usage_bitmap
);
57 sb
->s_journal_inum
= ext2fs_swab32(sb
->s_journal_inum
);
58 sb
->s_journal_dev
= ext2fs_swab32(sb
->s_journal_dev
);
59 sb
->s_last_orphan
= ext2fs_swab32(sb
->s_last_orphan
);
61 sb
->s_hash_seed
[i
] = ext2fs_swab32(sb
->s_hash_seed
[i
]);
64 void ext2fs_swap_group_desc(struct ext2_group_desc
*gdp
)
66 gdp
->bg_block_bitmap
= ext2fs_swab32(gdp
->bg_block_bitmap
);
67 gdp
->bg_inode_bitmap
= ext2fs_swab32(gdp
->bg_inode_bitmap
);
68 gdp
->bg_inode_table
= ext2fs_swab32(gdp
->bg_inode_table
);
69 gdp
->bg_free_blocks_count
= ext2fs_swab16(gdp
->bg_free_blocks_count
);
70 gdp
->bg_free_inodes_count
= ext2fs_swab16(gdp
->bg_free_inodes_count
);
71 gdp
->bg_used_dirs_count
= ext2fs_swab16(gdp
->bg_used_dirs_count
);
74 void ext2fs_swap_inode(ext2_filsys fs
, struct ext2_inode
*t
,
75 struct ext2_inode
*f
, int hostorder
)
80 if (hostorder
&& LINUX_S_ISLNK(f
->i_mode
))
82 t
->i_mode
= ext2fs_swab16(f
->i_mode
);
83 if (!hostorder
&& LINUX_S_ISLNK(t
->i_mode
))
85 t
->i_uid
= ext2fs_swab16(f
->i_uid
);
86 t
->i_size
= ext2fs_swab32(f
->i_size
);
87 t
->i_atime
= ext2fs_swab32(f
->i_atime
);
88 t
->i_ctime
= ext2fs_swab32(f
->i_ctime
);
89 t
->i_mtime
= ext2fs_swab32(f
->i_mtime
);
90 t
->i_dtime
= ext2fs_swab32(f
->i_dtime
);
91 t
->i_gid
= ext2fs_swab16(f
->i_gid
);
92 t
->i_links_count
= ext2fs_swab16(f
->i_links_count
);
93 t
->i_blocks
= ext2fs_swab32(f
->i_blocks
);
94 t
->i_flags
= ext2fs_swab32(f
->i_flags
);
95 if (!islnk
|| f
->i_blocks
) {
96 for (i
= 0; i
< EXT2_N_BLOCKS
; i
++)
97 t
->i_block
[i
] = ext2fs_swab32(f
->i_block
[i
]);
99 for (i
= 0; i
< EXT2_N_BLOCKS
; i
++)
100 t
->i_block
[i
] = f
->i_block
[i
];
102 t
->i_generation
= ext2fs_swab32(f
->i_generation
);
103 t
->i_file_acl
= ext2fs_swab32(f
->i_file_acl
);
104 t
->i_dir_acl
= ext2fs_swab32(f
->i_dir_acl
);
105 t
->i_faddr
= ext2fs_swab32(f
->i_faddr
);
107 switch (fs
->super
->s_creator_os
) {
109 t
->osd1
.linux1
.l_i_reserved1
=
110 ext2fs_swab32(f
->osd1
.linux1
.l_i_reserved1
);
111 t
->osd2
.linux2
.l_i_frag
= f
->osd2
.linux2
.l_i_frag
;
112 t
->osd2
.linux2
.l_i_fsize
= f
->osd2
.linux2
.l_i_fsize
;
113 t
->osd2
.linux2
.i_pad1
= ext2fs_swab16(f
->osd2
.linux2
.i_pad1
);
114 t
->osd2
.linux2
.l_i_uid_high
=
115 ext2fs_swab16 (f
->osd2
.linux2
.l_i_uid_high
);
116 t
->osd2
.linux2
.l_i_gid_high
=
117 ext2fs_swab16 (f
->osd2
.linux2
.l_i_gid_high
);
118 t
->osd2
.linux2
.l_i_reserved2
=
119 ext2fs_swab32(f
->osd2
.linux2
.l_i_reserved2
);
122 t
->osd1
.hurd1
.h_i_translator
=
123 ext2fs_swab32 (f
->osd1
.hurd1
.h_i_translator
);
124 t
->osd2
.hurd2
.h_i_frag
= f
->osd2
.hurd2
.h_i_frag
;
125 t
->osd2
.hurd2
.h_i_fsize
= f
->osd2
.hurd2
.h_i_fsize
;
126 t
->osd2
.hurd2
.h_i_mode_high
=
127 ext2fs_swab16 (f
->osd2
.hurd2
.h_i_mode_high
);
128 t
->osd2
.hurd2
.h_i_uid_high
=
129 ext2fs_swab16 (f
->osd2
.hurd2
.h_i_uid_high
);
130 t
->osd2
.hurd2
.h_i_gid_high
=
131 ext2fs_swab16 (f
->osd2
.hurd2
.h_i_gid_high
);
132 t
->osd2
.hurd2
.h_i_author
=
133 ext2fs_swab32 (f
->osd2
.hurd2
.h_i_author
);
136 t
->osd1
.masix1
.m_i_reserved1
=
137 ext2fs_swab32(f
->osd1
.masix1
.m_i_reserved1
);
138 t
->osd2
.masix2
.m_i_frag
= f
->osd2
.masix2
.m_i_frag
;
139 t
->osd2
.masix2
.m_i_fsize
= f
->osd2
.masix2
.m_i_fsize
;
140 t
->osd2
.masix2
.m_pad1
= ext2fs_swab16(f
->osd2
.masix2
.m_pad1
);
141 t
->osd2
.masix2
.m_i_reserved2
[0] =
142 ext2fs_swab32(f
->osd2
.masix2
.m_i_reserved2
[0]);
143 t
->osd2
.masix2
.m_i_reserved2
[1] =
144 ext2fs_swab32(f
->osd2
.masix2
.m_i_reserved2
[1]);