Lines Matching +full:ip +full:- +full:block
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2000-2001 Christoph Hellwig.
7 * Veritas filesystem driver - filesystem to disk block mapping.
22 printk(KERN_DEBUG "type=%Lu ", typ->vt_hdr >> VXFS_TYPED_TYPESHIFT); in vxfs_typdump()
23 printk("offset=%Lx ", typ->vt_hdr & VXFS_TYPED_OFFSETMASK); in vxfs_typdump()
24 printk("block=%x ", typ->vt_block); in vxfs_typdump()
25 printk("size=%x\n", typ->vt_size); in vxfs_typdump()
30 * vxfs_bmap_ext4 - do bmap for ext4 extents
31 * @ip: pointer to the inode we do bmap for
32 * @bn: logical block.
36 * ext4-style extents (which are much like the traditional UNIX
40 * The physical block number on success, else Zero.
43 vxfs_bmap_ext4(struct inode *ip, long bn) in vxfs_bmap_ext4() argument
45 struct super_block *sb = ip->i_sb; in vxfs_bmap_ext4()
46 struct vxfs_inode_info *vip = VXFS_INO(ip); in vxfs_bmap_ext4()
48 unsigned long bsize = sb->s_blocksize; in vxfs_bmap_ext4()
49 u32 indsize = fs32_to_cpu(sbi, vip->vii_ext4.ve4_indsize); in vxfs_bmap_ext4()
52 if (indsize > sb->s_blocksize) in vxfs_bmap_ext4()
56 struct direct *d = vip->vii_ext4.ve4_direct + i; in vxfs_bmap_ext4()
57 if (bn >= 0 && bn < fs32_to_cpu(sbi, d->size)) in vxfs_bmap_ext4()
58 return (bn + fs32_to_cpu(sbi, d->extent)); in vxfs_bmap_ext4()
59 bn -= fs32_to_cpu(sbi, d->size); in vxfs_bmap_ext4()
68 fs32_to_cpu(sbi, vip->vii_ext4.ve4_indir[0])); in vxfs_bmap_ext4()
72 indir = (__fs32 *)buf->b_data; in vxfs_bmap_ext4()
90 * vxfs_bmap_indir - recursion for vxfs_bmap_typed
91 * @ip: pointer to the inode we do bmap for
92 * @indir: indirect block we start reading at
94 * @block: partially result from further searches
98 * and performs the type-defined action.
101 * The physical block number on success, else Zero.
107 vxfs_bmap_indir(struct inode *ip, long indir, int size, long block) in vxfs_bmap_indir() argument
109 struct vxfs_sb_info *sbi = VXFS_SBI(ip->i_sb); in vxfs_bmap_indir()
114 for (i = 0; i < size * VXFS_TYPED_PER_BLOCK(ip->i_sb); i++) { in vxfs_bmap_indir()
118 bp = sb_bread(ip->i_sb, in vxfs_bmap_indir()
119 indir + (i / VXFS_TYPED_PER_BLOCK(ip->i_sb))); in vxfs_bmap_indir()
123 typ = ((struct vxfs_typed *)bp->b_data) + in vxfs_bmap_indir()
124 (i % VXFS_TYPED_PER_BLOCK(ip->i_sb)); in vxfs_bmap_indir()
125 off = fs64_to_cpu(sbi, typ->vt_hdr) & VXFS_TYPED_OFFSETMASK; in vxfs_bmap_indir()
127 if (block < off) { in vxfs_bmap_indir()
132 switch ((u_int32_t)(fs64_to_cpu(sbi, typ->vt_hdr) >> in vxfs_bmap_indir()
135 pblock = vxfs_bmap_indir(ip, in vxfs_bmap_indir()
136 fs32_to_cpu(sbi, typ->vt_block), in vxfs_bmap_indir()
137 fs32_to_cpu(sbi, typ->vt_size), in vxfs_bmap_indir()
138 block - off); in vxfs_bmap_indir()
139 if (pblock == -2) in vxfs_bmap_indir()
143 if ((block - off) >= fs32_to_cpu(sbi, typ->vt_size)) in vxfs_bmap_indir()
145 pblock = fs32_to_cpu(sbi, typ->vt_block) + block - off; in vxfs_bmap_indir()
153 printk(KERN_INFO "block: %llu\tsize: %lld\tdev: %d\n", in vxfs_bmap_indir()
154 fs64_to_cpu(sbi, typ4->vd4_block), in vxfs_bmap_indir()
155 fs64_to_cpu(sbi, typ4->vd4_size), in vxfs_bmap_indir()
156 fs32_to_cpu(sbi, typ4->vd4_dev)); in vxfs_bmap_indir()
161 __LINE__, fs64_to_cpu(sbi, typ->vt_hdr)); in vxfs_bmap_indir()
175 * vxfs_bmap_typed - bmap for typed extents
176 * @ip: pointer to the inode we do bmap for
177 * @iblock: logical block
183 * The physical block number on success, else Zero.
186 vxfs_bmap_typed(struct inode *ip, long iblock) in vxfs_bmap_typed() argument
188 struct vxfs_inode_info *vip = VXFS_INO(ip); in vxfs_bmap_typed()
189 struct vxfs_sb_info *sbi = VXFS_SBI(ip->i_sb); in vxfs_bmap_typed()
194 struct vxfs_typed *typ = vip->vii_org.typed + i; in vxfs_bmap_typed()
195 u64 hdr = fs64_to_cpu(sbi, typ->vt_hdr); in vxfs_bmap_typed()
205 pblock = vxfs_bmap_indir(ip, in vxfs_bmap_typed()
206 fs32_to_cpu(sbi, typ->vt_block), in vxfs_bmap_typed()
207 fs32_to_cpu(sbi, typ->vt_size), in vxfs_bmap_typed()
208 iblock - off); in vxfs_bmap_typed()
209 if (pblock == -2) in vxfs_bmap_typed()
213 if ((iblock - off) < fs32_to_cpu(sbi, typ->vt_size)) in vxfs_bmap_typed()
214 return (fs32_to_cpu(sbi, typ->vt_block) + in vxfs_bmap_typed()
215 iblock - off); in vxfs_bmap_typed()
223 printk(KERN_INFO "block: %llu\tsize: %lld\tdev: %d\n", in vxfs_bmap_typed()
224 fs64_to_cpu(sbi, typ4->vd4_block), in vxfs_bmap_typed()
225 fs64_to_cpu(sbi, typ4->vd4_size), in vxfs_bmap_typed()
226 fs32_to_cpu(sbi, typ4->vd4_dev)); in vxfs_bmap_typed()
238 * vxfs_bmap1 - vxfs-internal bmap operation
239 * @ip: pointer to the inode we do bmap for
240 * @iblock: logical block
243 * vxfs_bmap1 perfoms a logical to physical block mapping
244 * for vxfs-internal purposes.
247 * The physical block number on success, else Zero.
250 vxfs_bmap1(struct inode *ip, long iblock) in vxfs_bmap1() argument
252 struct vxfs_inode_info *vip = VXFS_INO(ip); in vxfs_bmap1()
255 return vxfs_bmap_ext4(ip, iblock); in vxfs_bmap1()
257 return vxfs_bmap_typed(ip, iblock); in vxfs_bmap1()
264 ip->i_ino, vip->vii_orgtype); in vxfs_bmap1()
269 ip->i_ino, vip->vii_orgtype); in vxfs_bmap1()