Lines Matching refs:lbn
227 lfs_bmap(struct lfs *fs, union lfs_dinode *idinode, daddr_t lbn)
235 if(lbn > 0 && lbn > lfs_lblkno(fs, lfs_dino_getsize(fs, idinode))) {
244 if(lbn < 0) {
245 lbn *= -1;
246 if (lbn == ULFS_NDADDR) {
247 /* printf("lbn %d: single indir base\n", -lbn); */
249 } else if(lbn == BASE_DINDIR+1) {
250 /* printf("lbn %d: double indir base\n", -lbn); */
252 } else if(lbn == BASE_TINDIR+2) {
253 /* printf("lbn %d: triple indir base\n", -lbn); */
261 residue = (lbn-ULFS_NDADDR) % LFS_NINDIR(fs);
265 off = (lbn-2-BASE_TINDIR)/(LFS_NINDIR(fs)*LFS_NINDIR(fs));
268 /* printf("lbn %d: parent is the triple\n", -lbn); */
273 if(lbn < BASE_TINDIR) {
276 off = (lbn-BASE_DINDIR) / D_UNITS;
277 /* printf("lbn %d: parent is %d/%d\n", -lbn, up,off); */
280 up = ((lbn-BASE_TINDIR) / T_UNITS)
282 off = (lbn/D_UNITS) - (up/D_UNITS);
284 /* printf("lbn %d: parent is %d/%d\n", -lbn, up,off); */
289 if (lbn < ULFS_NDADDR)
290 return lfs_dino_getdb(fs, idinode, lbn);
293 up = -(((lbn-ULFS_NDADDR) / D_UNITS) * D_UNITS + ULFS_NDADDR);
294 off = (lbn-ULFS_NDADDR) % D_UNITS;
295 /* printf("lbn %d: parent is %d/%d\n", lbn,up,off); */
310 daddr_t lbn;
316 lbn = ino/lfs_sb_getifpb(sblock) + lfs_sb_getcleansz(sblock) + lfs_sb_getsegtabsz(sblock);
324 blkno = lfs_bmap(sblock, ldp, lbn);