Lines Matching +full:ext2 +full:- +full:buffer +full:- +full:low +full:- +full:power
1 /* SPDX-License-Identifier: GPL-2.0 */
28 /* bitmasks for i_flags field in reiserfs-specific part of inode */
32 * an object have. If this is set, that format is 3.6 otherwise - 3.5
79 /* per-transaction list of inodes which have preallocated blocks */
116 #define sb_block_count(sbp) (le32_to_cpu((sbp)->s_v1.s_block_count))
117 #define set_sb_block_count(sbp,v) ((sbp)->s_v1.s_block_count = cpu_to_le32(v))
118 #define sb_free_blocks(sbp) (le32_to_cpu((sbp)->s_v1.s_free_blocks))
119 #define set_sb_free_blocks(sbp,v) ((sbp)->s_v1.s_free_blocks = cpu_to_le32(v))
120 #define sb_root_block(sbp) (le32_to_cpu((sbp)->s_v1.s_root_block))
121 #define set_sb_root_block(sbp,v) ((sbp)->s_v1.s_root_block = cpu_to_le32(v))
124 (le32_to_cpu((sbp)->s_v1.s_journal.jp_journal_1st_block))
126 ((sbp)->s_v1.s_journal.jp_journal_1st_block = cpu_to_le32(v))
128 (le32_to_cpu((sbp)->s_v1.s_journal.jp_journal_dev))
130 ((sbp)->s_v1.s_journal.jp_journal_dev = cpu_to_le32(v))
132 (le32_to_cpu((sbp)->s_v1.s_journal.jp_journal_size))
134 ((sbp)->s_v1.s_journal.jp_journal_size = cpu_to_le32(v))
136 (le32_to_cpu((sbp)->s_v1.s_journal.jp_journal_trans_max))
138 ((sbp)->s_v1.s_journal.jp_journal_trans_max = cpu_to_le32(v))
140 (le32_to_cpu((sbp)->s_v1.s_journal.jp_journal_magic))
142 ((sbp)->s_v1.s_journal.jp_journal_magic = cpu_to_le32(v))
144 (le32_to_cpu((sbp)->s_v1.s_journal.jp_journal_max_batch))
146 ((sbp)->s_v1.s_journal.jp_journal_max_batch = cpu_to_le32(v))
148 (le32_to_cpu((sbp)->s_v1.s_journal.jp_journal_max_commit_age))
150 ((sbp)->s_v1.s_journal.jp_journal_max_commit_age = cpu_to_le32(v))
152 #define sb_blocksize(sbp) (le16_to_cpu((sbp)->s_v1.s_blocksize))
153 #define set_sb_blocksize(sbp,v) ((sbp)->s_v1.s_blocksize = cpu_to_le16(v))
154 #define sb_oid_maxsize(sbp) (le16_to_cpu((sbp)->s_v1.s_oid_maxsize))
155 #define set_sb_oid_maxsize(sbp,v) ((sbp)->s_v1.s_oid_maxsize = cpu_to_le16(v))
156 #define sb_oid_cursize(sbp) (le16_to_cpu((sbp)->s_v1.s_oid_cursize))
157 #define set_sb_oid_cursize(sbp,v) ((sbp)->s_v1.s_oid_cursize = cpu_to_le16(v))
158 #define sb_umount_state(sbp) (le16_to_cpu((sbp)->s_v1.s_umount_state))
159 #define set_sb_umount_state(sbp,v) ((sbp)->s_v1.s_umount_state = cpu_to_le16(v))
160 #define sb_fs_state(sbp) (le16_to_cpu((sbp)->s_v1.s_fs_state))
161 #define set_sb_fs_state(sbp,v) ((sbp)->s_v1.s_fs_state = cpu_to_le16(v))
163 (le32_to_cpu((sbp)->s_v1.s_hash_function_code))
165 ((sbp)->s_v1.s_hash_function_code = cpu_to_le32(v))
166 #define sb_tree_height(sbp) (le16_to_cpu((sbp)->s_v1.s_tree_height))
167 #define set_sb_tree_height(sbp,v) ((sbp)->s_v1.s_tree_height = cpu_to_le16(v))
168 #define sb_bmap_nr(sbp) (le16_to_cpu((sbp)->s_v1.s_bmap_nr))
169 #define set_sb_bmap_nr(sbp,v) ((sbp)->s_v1.s_bmap_nr = cpu_to_le16(v))
170 #define sb_version(sbp) (le16_to_cpu((sbp)->s_v1.s_version))
171 #define set_sb_version(sbp,v) ((sbp)->s_v1.s_version = cpu_to_le16(v))
173 #define sb_mnt_count(sbp) (le16_to_cpu((sbp)->s_mnt_count))
174 #define set_sb_mnt_count(sbp, v) ((sbp)->s_mnt_count = cpu_to_le16(v))
177 (le16_to_cpu((sbp)->s_v1.s_reserved_for_journal))
179 ((sbp)->s_v1.s_reserved_for_journal = cpu_to_le16(v))
181 /* LOGGING -- */
187 * I don't know what n is yet, I'm guessing 8-16.
208 /* we have a node size define somewhere in reiserfs_fs.h. -Hans */
227 struct buffer_head *bh; /* real buffer head */
228 struct super_block *sb; /* dev of real buffer head */
230 /* block number of real buffer head, == 0 when buffer on disk */
258 * the commits, to mark all the real buffer heads dirty once all the commits
274 time64_t j_timestamp; /* write-only but useful for crash dump analysis */
276 struct buffer_head *j_commit_bh; /* commit buffer head */
399 /* hash table for real buffer heads in current trans */
402 /* hash table for all the real buffer heads in all the transactions */
517 /* reiserfs union of in-core super block data */
519 /* Buffer containing the super block */
522 /* Pointer to the on-disk super block in the buffer */
537 /* Depth of the lock, start from -1 like the bkl */
542 /* Comment? -Hans */
581 /* Comment? -Hans */
583 /* increased by one every time the tree gets re-balanced */
586 /* File system properties. Currently holds on-disk FS format */
621 int work_queued; /* non-zero delayed work is queued */
642 /* Definitions of reiserfs on-disk properties: */
661 * -o conv: causes conversion of old format super block to the
662 * new format. If not specified - old partition will be dealt
668 * -o hash={tea, rupasov, r5, detect} is meant for properly mounting
674 * if you have a tea hash disk, and mount with -o hash=rupasov,
717 #define reiserfs_r5_hash(s) (REISERFS_SB(s)->s_mount_opt & (1 << FORCE_R5_HASH))
718 #define reiserfs_rupasov_hash(s) (REISERFS_SB(s)->s_mount_opt & (1 << FORCE_RUPASOV_HASH))
719 #define reiserfs_tea_hash(s) (REISERFS_SB(s)->s_mount_opt & (1 << FORCE_TEA_HASH))
720 #define reiserfs_hash_detect(s) (REISERFS_SB(s)->s_mount_opt & (1 << FORCE_HASH_DETECT))
721 #define reiserfs_no_border(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_NO_BORDER))
722 #define reiserfs_no_unhashed_relocation(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_NO_UNHASHE…
723 #define reiserfs_hashed_relocation(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_HASHED_RELOCATI…
724 #define reiserfs_test4(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_TEST4))
726 #define have_large_tails(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_LARGETAIL))
727 #define have_small_tails(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_SMALLTAIL))
728 #define replay_only(s) (REISERFS_SB(s)->s_mount_opt & (1 << REPLAYONLY))
729 #define reiserfs_attrs(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_ATTRS))
730 #define old_format_only(s) (REISERFS_SB(s)->s_properties & (1 << REISERFS_3_5))
731 #define convert_reiserfs(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_CONVERT))
732 #define reiserfs_data_log(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_LOG))
733 #define reiserfs_data_ordered(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_ORDERED))
734 #define reiserfs_data_writeback(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_DATA_WRITEBACK))
735 #define reiserfs_xattrs_user(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_XATTRS_USER))
736 #define reiserfs_posixacl(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_POSIXACL))
737 #define reiserfs_expose_privroot(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_EXPOSE_PRIVROOT))
739 #define reiserfs_barrier_none(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_BARRIER_NONE))
740 #define reiserfs_barrier_flush(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_BARRIER_FLUSH))
742 #define reiserfs_error_panic(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_ERROR_PANIC))
743 #define reiserfs_error_ro(s) (REISERFS_SB(s)->s_mount_opt & (1 << REISERFS_ERROR_RO))
752 #define SB_BUFFER_WITH_SB(s) (REISERFS_SB(s)->s_sbh)
753 #define SB_JOURNAL(s) (REISERFS_SB(s)->s_journal)
754 #define SB_JOURNAL_1st_RESERVED_BLOCK(s) (SB_JOURNAL(s)->j_1st_reserved_block)
755 #define SB_JOURNAL_LEN_FREE(s) (SB_JOURNAL(s)->j_journal_len_free)
756 #define SB_AP_BITMAP(s) (REISERFS_SB(s)->s_ap_bitmap)
758 #define SB_DISK_JOURNAL_HEAD(s) (SB_JOURNAL(s)->j_header_bh->)
764 return test_bit(J_ABORTED, &journal->j_state); in __reiserfs_is_journal_aborted()
805 * - The commit mutex of a journal list
806 * - The flush mutex
807 * - The journal lock
808 * - The inode mutex
861 * B = Buffer
886 /* n must be power of 2 */
887 #define _ROUND_UP(x,n) (((x)+(n)-1u) & ~((n)-1u))
936 * accessed as REISERFS_SB(s)->s_rs. The version in RAM is part of a larger
986 /* this is set to 1 when filesystem was umounted, to 2 - when not */
1014 * this field is only reliable on filesystem with non-standard journal
1020 * keep after making fs with non-standard journal
1032 /* Right now used only by inode-attributes, if enabled */
1053 /* on-disk super block fields converted to cpu form */
1054 #define SB_DISK_SUPER_BLOCK(s) (REISERFS_SB(s)->s_rs)
1055 #define SB_V1_DISK_SUPER_BLOCK(s) (&(SB_DISK_SUPER_BLOCK(s)->s_v1))
1057 le32_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_blocksize))
1059 le32_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_block_count))
1061 le32_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_free_blocks))
1063 (SB_V1_DISK_SUPER_BLOCK(s)->s_magic)
1065 le32_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_root_block))
1067 le16_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_tree_height))
1069 le16_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_umount_state))
1070 #define SB_VERSION(s) le16_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_version))
1071 #define SB_BMAP_NR(s) le16_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_bmap_nr))
1074 do { SB_V1_DISK_SUPER_BLOCK(s)->s_block_count = cpu_to_le32(val); } while (0)
1076 do { SB_V1_DISK_SUPER_BLOCK(s)->s_free_blocks = cpu_to_le32(val); } while (0)
1078 do { SB_V1_DISK_SUPER_BLOCK(s)->s_root_block = cpu_to_le32(val); } while (0)
1080 do { SB_V1_DISK_SUPER_BLOCK(s)->s_tree_height = cpu_to_le16(val); } while (0)
1082 do { SB_V1_DISK_SUPER_BLOCK(s)->s_umount_state = cpu_to_le16(val); } while (0)
1084 do { SB_V1_DISK_SUPER_BLOCK(s)->s_version = cpu_to_le16(val); } while (0)
1086 do { SB_V1_DISK_SUPER_BLOCK(s)->s_bmap_nr = cpu_to_le16 (val); } while (0)
1088 #define SB_ONDISK_JP(s) (&SB_V1_DISK_SUPER_BLOCK(s)->s_journal)
1090 le32_to_cpu ((SB_ONDISK_JP(s)->jp_journal_size))
1092 le32_to_cpu ((SB_ONDISK_JP(s)->jp_journal_1st_block))
1094 le32_to_cpu ((SB_ONDISK_JP(s)->jp_journal_dev))
1096 le16_to_cpu ((SB_V1_DISK_SUPER_BLOCK(s)->s_reserved_for_journal))
1113 * platform, or code will break. -Hans
1119 /* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */
1124 #define REPEAT_SEARCH -1
1125 #define IO_ERROR -2
1126 #define NO_DISK_SPACE -3
1127 #define NO_BALANCING_NEEDED (-4)
1128 #define NO_MORE_UNUSED_CONTIGUOUS_BLOCKS (-5)
1129 #define QUOTA_EXCEEDED -6
1154 return sb->s_fs_info; in REISERFS_SB()
1158 * Don't trust REISERFS_SB(sb)->s_bmap_nr, it's a u16
1163 return (SB_BLOCK_COUNT(sb) - 1) / (sb->s_blocksize * 8) + 1; in reiserfs_bmap_count()
1168 return bmap_nr > ((1LL << 16) - 1); in bmap_would_wrap()
1178 ((REISERFS_I(inode)->i_flags & i_item_key_version_mask) ? KEY_FORMAT_3_6 : KEY_FORMAT_3_5)
1182 REISERFS_I(inode)->i_flags |= i_item_key_version_mask; \
1184 REISERFS_I(inode)->i_flags &= ~i_item_key_version_mask; })
1187 ((REISERFS_I(inode)->i_flags & i_stat_data_version_mask) ? STAT_DATA_V2 : STAT_DATA_V1)
1191 REISERFS_I(inode)->i_flags |= i_stat_data_version_mask; \
1193 REISERFS_I(inode)->i_flags &= ~i_stat_data_version_mask; })
1199 * non-intuitive, but it helps to understand it if you consider that the
1202 * non-linear disk access that is significant as a percentage of total
1205 * -Hans
1264 __u8 type = le64_to_cpu(v2->v) >> 60; in offset_v2_k_type()
1270 v2->v = in set_offset_v2_k_type()
1271 (v2->v & cpu_to_le64(~0ULL >> 4)) | cpu_to_le64((__u64) type << 60); in set_offset_v2_k_type()
1276 return le64_to_cpu(v2->v) & (~0ULL >> 4); in offset_v2_k_offset()
1282 v2->v = (v2->v & cpu_to_le64(15ULL << 60)) | cpu_to_le64(offset); in set_offset_v2_k_offset()
1326 #define SECOND_GREATER -1
1338 #define DIRECTORY_NOT_FOUND -1
1339 #define REGULAR_FILE_FOUND -2
1340 #define DIRECTORY_FOUND -3
1343 #define FILE_NOT_FOUND -1
1398 #define ih_free_space(ih) le16_to_cpu((ih)->u.ih_free_space_reserved)
1399 #define ih_version(ih) le16_to_cpu((ih)->ih_version)
1400 #define ih_entry_count(ih) le16_to_cpu((ih)->u.ih_entry_count)
1401 #define ih_location(ih) le16_to_cpu((ih)->ih_item_location)
1402 #define ih_item_len(ih) le16_to_cpu((ih)->ih_item_len)
1404 #define put_ih_free_space(ih, val) do { (ih)->u.ih_free_space_reserved = cpu_to_le16(val); } whil…
1405 #define put_ih_version(ih, val) do { (ih)->ih_version = cpu_to_le16(val); } while (0)
1406 #define put_ih_entry_count(ih, val) do { (ih)->u.ih_entry_count = cpu_to_le16(val); } while (0)
1407 #define put_ih_location(ih, val) do { (ih)->ih_item_location = cpu_to_le16(val); } while (0)
1408 #define put_ih_item_len(ih, val) do { (ih)->ih_item_len = cpu_to_le16(val); } while (0)
1478 le32_to_cpu(key->u.k_offset_v1.k_offset) : in le_key_k_offset()
1479 offset_v2_k_offset(&(key->u.k_offset_v2)); in le_key_k_offset()
1484 return le_key_k_offset(ih_version(ih), &(ih->ih_key)); in le_ih_k_offset()
1490 loff_t val = le32_to_cpu(key->u.k_offset_v1.k_uniqueness); in le_key_k_type()
1493 return offset_v2_k_type(&(key->u.k_offset_v2)); in le_key_k_type()
1498 return le_key_k_type(ih_version(ih), &(ih->ih_key)); in le_ih_k_type()
1505 key->u.k_offset_v1.k_offset = cpu_to_le32(offset); in set_le_key_k_offset()
1507 set_offset_v2_k_offset(&key->u.k_offset_v2, offset); in set_le_key_k_offset()
1519 add_le_key_k_offset(ih_version(ih), &(ih->ih_key), offset); in add_le_ih_k_offset()
1524 set_le_key_k_offset(ih_version(ih), &(ih->ih_key), offset); in set_le_ih_k_offset()
1532 key->u.k_offset_v1.k_uniqueness = cpu_to_le32(type); in set_le_key_k_type()
1534 set_offset_v2_k_type(&key->u.k_offset_v2, type); in set_le_key_k_type()
1539 set_le_key_k_type(ih_version(ih), &(ih->ih_key), type); in set_le_ih_k_type()
1565 return is_direntry_le_key(ih_version(ih), &ih->ih_key); in is_direntry_le_ih()
1570 return is_direct_le_key(ih_version(ih), &ih->ih_key); in is_direct_le_ih()
1575 return is_indirect_le_key(ih_version(ih), &ih->ih_key); in is_indirect_le_ih()
1580 return is_statdata_le_key(ih_version(ih), &ih->ih_key); in is_statdata_le_ih()
1586 return key->on_disk_key.k_offset; in cpu_key_k_offset()
1591 return key->on_disk_key.k_type; in cpu_key_k_type()
1596 key->on_disk_key.k_offset = offset; in set_cpu_key_k_offset()
1601 key->on_disk_key.k_type = type; in set_cpu_key_k_type()
1606 key->on_disk_key.k_offset--; in cpu_key_k_offset_dec()
1615 #define is_direntry_cpu_ih(ih) (is_direntry_cpu_key (&((ih)->ih_key)))
1616 #define is_direct_cpu_ih(ih) (is_direct_cpu_key (&((ih)->ih_key)))
1617 #define is_indirect_cpu_ih(ih) (is_indirect_cpu_key (&((ih)->ih_key)))
1618 #define is_statdata_cpu_ih(ih) (is_statdata_cpu_key (&((ih)->ih_key)))
1625 #define MAX_ITEM_LEN(block_size) (block_size - BLKH_SIZE - IH_SIZE)
1638 * |Block | Object-Item | F r e e | Objects- |
1659 #define blkh_level(p_blkh) (le16_to_cpu((p_blkh)->blk_level))
1660 #define blkh_nr_item(p_blkh) (le16_to_cpu((p_blkh)->blk_nr_item))
1661 #define blkh_free_space(p_blkh) (le16_to_cpu((p_blkh)->blk_free_space))
1662 #define blkh_reserved(p_blkh) (le16_to_cpu((p_blkh)->blk_reserved))
1663 #define set_blkh_level(p_blkh,val) ((p_blkh)->blk_level = cpu_to_le16(val))
1664 #define set_blkh_nr_item(p_blkh,val) ((p_blkh)->blk_nr_item = cpu_to_le16(val))
1665 #define set_blkh_free_space(p_blkh,val) ((p_blkh)->blk_free_space = cpu_to_le16(val))
1666 #define set_blkh_reserved(p_blkh,val) ((p_blkh)->blk_reserved = cpu_to_le16(val))
1667 #define blkh_right_delim_key(p_blkh) ((p_blkh)->blk_right_delim_key)
1668 #define set_blkh_right_delim_key(p_blkh,val) ((p_blkh)->blk_right_delim_key = val)
1681 * Given the buffer head of a formatted node, resolve to the
1684 #define B_BLK_HEAD(bh) ((struct block_head *)((bh)->b_data))
1685 /* Number of items that are in buffer. */
1694 /* Get right delimiting key. -- little endian */
1697 /* Does the buffer contain a disk leaf. */
1700 /* Does the buffer contain a disk internal node */
1736 * suppression policy. Someday. -Hans
1743 #define sd_v1_mode(sdp) (le16_to_cpu((sdp)->sd_mode))
1744 #define set_sd_v1_mode(sdp,v) ((sdp)->sd_mode = cpu_to_le16(v))
1745 #define sd_v1_nlink(sdp) (le16_to_cpu((sdp)->sd_nlink))
1746 #define set_sd_v1_nlink(sdp,v) ((sdp)->sd_nlink = cpu_to_le16(v))
1747 #define sd_v1_uid(sdp) (le16_to_cpu((sdp)->sd_uid))
1748 #define set_sd_v1_uid(sdp,v) ((sdp)->sd_uid = cpu_to_le16(v))
1749 #define sd_v1_gid(sdp) (le16_to_cpu((sdp)->sd_gid))
1750 #define set_sd_v1_gid(sdp,v) ((sdp)->sd_gid = cpu_to_le16(v))
1751 #define sd_v1_size(sdp) (le32_to_cpu((sdp)->sd_size))
1752 #define set_sd_v1_size(sdp,v) ((sdp)->sd_size = cpu_to_le32(v))
1753 #define sd_v1_atime(sdp) (le32_to_cpu((sdp)->sd_atime))
1754 #define set_sd_v1_atime(sdp,v) ((sdp)->sd_atime = cpu_to_le32(v))
1755 #define sd_v1_mtime(sdp) (le32_to_cpu((sdp)->sd_mtime))
1756 #define set_sd_v1_mtime(sdp,v) ((sdp)->sd_mtime = cpu_to_le32(v))
1757 #define sd_v1_ctime(sdp) (le32_to_cpu((sdp)->sd_ctime))
1758 #define set_sd_v1_ctime(sdp,v) ((sdp)->sd_ctime = cpu_to_le32(v))
1759 #define sd_v1_rdev(sdp) (le32_to_cpu((sdp)->u.sd_rdev))
1760 #define set_sd_v1_rdev(sdp,v) ((sdp)->u.sd_rdev = cpu_to_le32(v))
1761 #define sd_v1_blocks(sdp) (le32_to_cpu((sdp)->u.sd_blocks))
1762 #define set_sd_v1_blocks(sdp,v) ((sdp)->u.sd_blocks = cpu_to_le32(v))
1764 (le32_to_cpu((sdp)->sd_first_direct_byte))
1766 ((sdp)->sd_first_direct_byte = cpu_to_le32(v))
1771 * we want common flags to have the same values as in ext2,
1823 #define sd_v2_mode(sdp) (le16_to_cpu((sdp)->sd_mode))
1824 #define set_sd_v2_mode(sdp,v) ((sdp)->sd_mode = cpu_to_le16(v))
1827 #define sd_v2_nlink(sdp) (le32_to_cpu((sdp)->sd_nlink))
1828 #define set_sd_v2_nlink(sdp,v) ((sdp)->sd_nlink = cpu_to_le32(v))
1829 #define sd_v2_size(sdp) (le64_to_cpu((sdp)->sd_size))
1830 #define set_sd_v2_size(sdp,v) ((sdp)->sd_size = cpu_to_le64(v))
1831 #define sd_v2_uid(sdp) (le32_to_cpu((sdp)->sd_uid))
1832 #define set_sd_v2_uid(sdp,v) ((sdp)->sd_uid = cpu_to_le32(v))
1833 #define sd_v2_gid(sdp) (le32_to_cpu((sdp)->sd_gid))
1834 #define set_sd_v2_gid(sdp,v) ((sdp)->sd_gid = cpu_to_le32(v))
1835 #define sd_v2_atime(sdp) (le32_to_cpu((sdp)->sd_atime))
1836 #define set_sd_v2_atime(sdp,v) ((sdp)->sd_atime = cpu_to_le32(v))
1837 #define sd_v2_mtime(sdp) (le32_to_cpu((sdp)->sd_mtime))
1838 #define set_sd_v2_mtime(sdp,v) ((sdp)->sd_mtime = cpu_to_le32(v))
1839 #define sd_v2_ctime(sdp) (le32_to_cpu((sdp)->sd_ctime))
1840 #define set_sd_v2_ctime(sdp,v) ((sdp)->sd_ctime = cpu_to_le32(v))
1841 #define sd_v2_blocks(sdp) (le32_to_cpu((sdp)->sd_blocks))
1842 #define set_sd_v2_blocks(sdp,v) ((sdp)->sd_blocks = cpu_to_le32(v))
1843 #define sd_v2_rdev(sdp) (le32_to_cpu((sdp)->u.sd_rdev))
1844 #define set_sd_v2_rdev(sdp,v) ((sdp)->u.sd_rdev = cpu_to_le32(v))
1845 #define sd_v2_generation(sdp) (le32_to_cpu((sdp)->u.sd_generation))
1846 #define set_sd_v2_generation(sdp,v) ((sdp)->u.sd_generation = cpu_to_le32(v))
1847 #define sd_v2_attrs(sdp) (le16_to_cpu((sdp)->sd_attrs))
1848 #define set_sd_v2_attrs(sdp,v) ((sdp)->sd_attrs = cpu_to_le16(v))
1857 * | directory |N-1| N-2 | .... | 1st |0th|
1860 * <---- directory entries ------>
1907 #define deh_offset(p_deh) (le32_to_cpu((p_deh)->deh_offset))
1908 #define deh_dir_id(p_deh) (le32_to_cpu((p_deh)->deh_dir_id))
1909 #define deh_objectid(p_deh) (le32_to_cpu((p_deh)->deh_objectid))
1910 #define deh_location(p_deh) (le16_to_cpu((p_deh)->deh_location))
1911 #define deh_state(p_deh) (le16_to_cpu((p_deh)->deh_state))
1913 #define put_deh_offset(p_deh,v) ((p_deh)->deh_offset = cpu_to_le32((v)))
1914 #define put_deh_dir_id(p_deh,v) ((p_deh)->deh_dir_id = cpu_to_le32((v)))
1915 #define put_deh_objectid(p_deh,v) ((p_deh)->deh_objectid = cpu_to_le32((v)))
1916 #define put_deh_location(p_deh,v) ((p_deh)->deh_location = cpu_to_le16((v)))
1917 #define put_deh_state(p_deh,v) ((p_deh)->deh_state = cpu_to_le16((v)))
1921 (DEH_SIZE * 2 + ROUND_UP (sizeof(".") - 1) + ROUND_UP (sizeof("..") - 1))
1929 /* 64 bit systems (and the S/390) need to be aligned explicitly -jdm */
1941 …fine aligned_address(addr) ((void *)((long)(addr) & ~((1UL << ADDR_UNALIGNED_BITS) - 1)))
1942 # define unaligned_offset(addr) (((int)((long)(addr) & ((1 << ADDR_UNALIGNED_BITS) - 1))…
1959 #define mark_de_with_sd(deh) set_bit_unaligned (DEH_Statdata, &((deh)->deh_state))
1960 #define mark_de_without_sd(deh) clear_bit_unaligned (DEH_Statdata, &((deh)->deh_state))
1961 #define mark_de_visible(deh) set_bit_unaligned (DEH_Visible, &((deh)->deh_state))
1962 #define mark_de_hidden(deh) clear_bit_unaligned (DEH_Visible, &((deh)->deh_state))
1964 #define de_with_sd(deh) test_bit_unaligned (DEH_Statdata, &((deh)->deh_state))
1965 #define de_visible(deh) test_bit_unaligned (DEH_Visible, &((deh)->deh_state))
1966 #define de_hidden(deh) !test_bit_unaligned (DEH_Visible, &((deh)->deh_state))
2011 (I_DEH_N_ENTRY_LENGTH (ih, deh, entry_num) - (de_with_sd (deh) ? SD_SIZE : 0))
2044 #define dc_block_number(dc_p) (le32_to_cpu((dc_p)->dc_block_number))
2045 #define dc_size(dc_p) (le16_to_cpu((dc_p)->dc_size))
2046 #define put_dc_block_number(dc_p, val) do { (dc_p)->dc_block_number = cpu_to_le32(val); } while(0)
2047 #define put_dc_size(dc_p, val) do { (dc_p)->dc_size = cpu_to_le16(val); } while(0)
2049 /* Get disk child by buffer header and position in the tree node. */
2051 ((bh)->b_data + BLKH_SIZE + B_NR_ITEMS(bh) * KEY_SIZE + DC_SIZE * (n_pos)))
2053 /* Get disk child number by buffer header and position in the tree node. */
2060 #define MAX_CHILD_SIZE(bh) ((int)( (bh)->b_size - BLKH_SIZE ))
2062 /* amount of used space in buffer (not including block head) */
2063 #define B_CHILD_SIZE(cur) (MAX_CHILD_SIZE(cur)-(B_FREE_SPACE(cur)))
2066 #define MAX_NR_KEY(bh) ( (MAX_CHILD_SIZE(bh)-DC_SIZE)/(KEY_SIZE+DC_SIZE) )
2087 /* Pointer to the buffer at the path in the tree. */
2089 /* Position in the tree node which is placed in the buffer above. */
2105 /* Must be equal to FIRST_PATH_ELEMENT_OFFSET - 1 */
2125 * excessive effort to avoid disturbing the precious VFS code.:-( The
2141 #define pos_in_item(path) ((path)->pos_in_item)
2147 #define PATH_OFFSET_PELEMENT(path, n_offset) ((path)->path_elements + (n_offset))
2149 /* Get buffer header at the path by path and path position. */
2150 #define PATH_OFFSET_PBUFFER(path, n_offset) (PATH_OFFSET_PELEMENT(path, n_offset)->pe_buffer)
2153 #define PATH_OFFSET_POSITION(path, n_offset) (PATH_OFFSET_PELEMENT(path, n_offset)->pe_position)
2155 #define PATH_PLAST_BUFFER(path) (PATH_OFFSET_PBUFFER((path), (path)->path_length))
2160 * maybe we should just focus on dumping paths... -Hans
2162 #define PATH_LAST_POSITION(path) (PATH_OFFSET_POSITION((path), (path)->path_length))
2169 /* tb->S[h] */
2171 PATH_OFFSET_PBUFFER(path, path->path_length - (h))
2173 /* tb->F[h] or tb->S[0]->b_parent */
2177 PATH_OFFSET_POSITION(path, path->path_length - (h))
2179 /* tb->S[h]->b_item_order */
2182 #define PATH_H_PATH_OFFSET(path, n_h) ((path)->path_length - (n_h))
2186 return bh->b_data + sizeof(struct block_head); in reiserfs_node_data()
2211 return &item_head(bh, item_num)->ih_key; in leaf_key()
2217 return bh->b_data + ih_location(ih); in ih_item_body()
2247 * calculates length of i-th directory entry using directory entry
2248 * locations from dir entry head. When it calculates length of 0-th
2250 * location of the non-existent following entry in the calculation.
2260 return deh_location(deh - 1) - deh_location(deh); in entry_length()
2262 return ih_item_len(ih) - deh_location(deh); in entry_length()
2273 /* in in-core inode key is stored on le form */
2274 #define INODE_PKEY(inode) ((struct reiserfs_key *)(REISERFS_I(inode)->i_key))
2280 // reiserfs version 2 has max offset 60 bits. Version 1 - 32 bit offset
2295 #define REISERFS_LINK_MAX (MAX_US_INT - 1000)
2304 #define fs_generation(s) (REISERFS_SB(s)->s_generation_counter)
2306 #define FILESYSTEM_CHANGED_TB(tb) (get_generation((tb)->tb_sb) != (tb)->fs_gen)
2350 /* this is a pointer to the free space in the buffer */
2485 * if -1 then nothing will be partially shifted
2492 * if -1 then nothing will be partially shifted
2547 * another low-level subsystem
2600 return tb ? tb->tb_sb : NULL; in sb_from_tb()
2605 return bi ? sb_from_tb(bi->tb) : NULL; in sb_from_bi()
2610 * +-------------------+------------+--------------+------------+
2612 * +-------------------+------------+--------------+------------+
2614 * +-------------------+------------+--------------+------------+
2618 * +-------------------+------------+--------------+------------+
2620 * +-------------------+------------+--------------+------------+
2622 * +-------------------+------------+--------------+------------+
2648 #define op_bytes_number(ih,bsize) item_ops[le_ih_k_type (ih)]->bytes_number (ih,…
2649 …(key,bsize) item_ops[le_key_k_type (le_key_version (key), key)]->is_left_mergeable (k…
2650 #define op_print_item(ih,item) item_ops[le_ih_k_type (ih)]->print_item (ih, i…
2651 #define op_check_item(ih,item) item_ops[le_ih_k_type (ih)]->check_item (ih, i…
2652 #define op_create_vi(vn,vi,is_affected,insert_size) item_ops[le_ih_k_type ((vi)->vi_ih)]->create_v…
2653 #define op_check_left(vi,free,start_skip,end_skip) item_ops[(vi)->vi_index]->check_left (vi, free, …
2654 #define op_check_right(vi,free) item_ops[(vi)->vi_index]->check_right (vi, fre…
2655 #define op_part_size(vi,from,to) item_ops[(vi)->vi_index]->part_size (vi, from,…
2656 #define op_unit_num(vi) item_ops[(vi)->vi_index]->unit_num (vi)
2657 #define op_print_vi(vi) item_ops[(vi)->vi_index]->print_vi (vi)
2668 #define I_POS_UNFM_SIZE(ih,pos,size) (((pos) == I_UNFM_NUM(ih) - 1 ) ? (size) - ih_free_space(ih) :…
2675 /* following defines use reiserfs buffer header and item header */
2677 /* get stat-data */
2678 #define B_I_STAT_DATA(bh, ih) ( (struct stat_data * )((bh)->b_data + ih_location(ih)) )
2681 #define MAX_DIRECT_ITEM_LEN(size) ((size) - BLKH_SIZE - 2*IH_SIZE - SD_SIZE - UNFM_P_SIZE)
2702 #define get_journal_desc_magic(bh) (bh->b_data + bh->b_size - 12)
2705 ((blocksize - sizeof (struct reiserfs_journal_desc) + sizeof (__u32) - 12) / sizeof (__u32))
2720 #define get_desc_trans_id(d) le32_to_cpu((d)->j_trans_id)
2721 #define get_desc_trans_len(d) le32_to_cpu((d)->j_len)
2722 #define get_desc_mount_id(d) le32_to_cpu((d)->j_mount_id)
2724 #define set_desc_trans_id(d,val) do { (d)->j_trans_id = cpu_to_le32 (val); } while (0)
2725 #define set_desc_trans_len(d,val) do { (d)->j_len = cpu_to_le32 (val); } while (0)
2726 #define set_desc_mount_id(d,val) do { (d)->j_mount_id = cpu_to_le32 (val); } while (0)
2735 #define get_commit_trans_id(c) le32_to_cpu((c)->j_trans_id)
2736 #define get_commit_trans_len(c) le32_to_cpu((c)->j_len)
2737 #define get_commit_mount_id(c) le32_to_cpu((c)->j_mount_id)
2739 #define set_commit_trans_id(c,val) do { (c)->j_trans_id = cpu_to_le32 (val); } while (0)
2740 #define set_commit_trans_len(c,val) do { (c)->j_len = cpu_to_le32 (val); } while (0)
2774 #define JOURNAL_PER_BALANCE_CNT (3 * (MAX_HEIGHT-2) + 9)
2782 #define REISERFS_QUOTA_TRANS_BLOCKS(s) (REISERFS_SB(s)->s_mount_opt & REISERFS_QUOTA_OPTS ? 2 : 0)
2784 #define REISERFS_QUOTA_INIT_BLOCKS(s) (REISERFS_SB(s)->s_mount_opt & REISERFS_QUOTA_OPTS ? \
2787 #define REISERFS_QUOTA_DEL_BLOCKS(s) (REISERFS_SB(s)->s_mount_opt & REISERFS_QUOTA_OPTS ? \
2796 * both of these can be as low as 1, or as high as you want. The min is the
2811 (((block)<<(JBH_HASH_SHIFT - 6)) ^ ((block) >> 13) ^ ((block) << (JBH_HASH_SHIFT - 12))))
2815 #define journal_find_get_block(s, block) __find_get_block(SB_JOURNAL(s)->j_dev_bd, block, s->s_bloc…
2816 #define journal_getblk(s, block) __getblk(SB_JOURNAL(s)->j_dev_bd, block, s->s_blocksize)
2817 #define journal_bread(s, block) __bread(SB_JOURNAL(s)->j_dev_bd, block, s->s_blocksize)
2820 BH_JDirty = BH_PrivateStart, /* buffer is in current transaction */
2862 void *t_handle_save; /* save existing current->journal_info */
2874 * used to keep track of ordered and tail writes, attached to the buffer
2891 if (reiserfs_data_log(inode->i_sb) || in reiserfs_file_data_log()
2892 (REISERFS_I(inode)->i_flags & i_data_log)) in reiserfs_file_data_log()
2899 struct reiserfs_transaction_handle *th = current->journal_info; in reiserfs_transaction_running()
2900 if (th && th->t_super == s) in reiserfs_transaction_running()
2902 if (th && th->t_super == NULL) in reiserfs_transaction_running()
2909 return th->t_blocks_allocated - th->t_blocks_logged; in reiserfs_transaction_free_space()
2970 /* first key is in cpu form, second - le */
2981 /* * get key version from on disk key - kludge */
2986 type = offset_v2_k_type(&(key->u.k_offset_v2)); in le_key_version()
3047 #define i_block_size(inode) ((inode)->i_sb->s_blocksize)
3048 #define file_size(inode) ((inode)->i_size)
3049 #define tail_size(inode) (file_size (inode) & (i_block_size (inode) - 1))
3051 #define tail_has_to_be_packed(inode) (have_large_tails ((inode)->i_sb)?\
3052 …inode), inode->i_sb->s_blocksize):have_small_tails ((inode)->i_sb)?!STORE_TAIL_IN_UNFM_S2(file_siz…
3060 #define GET_BLOCK_NO_HOLE 2 /* return -ENOENT for file holes */
3101 reiserfs_update_sd_size(th, inode, inode->i_size); in reiserfs_update_sd()
3123 #define __PINFO( sb ) REISERFS_SB(sb) -> s_proc_info_data
3126 max( REISERFS_SB( sb ) -> s_proc_info_data.field, value )
3335 .th = tb->transaction_handle, in reiserfs_new_form_blocknrs()
3336 .path = tb->tb_path, in reiserfs_new_form_blocknrs()
3338 .key = tb->key, in reiserfs_new_form_blocknrs()