Home | History | Annotate | Download | only in stage2

Lines Matching refs:xfs

1 /* fsys_xfs.c - an implementation for the SGI XFS file system */
25 #include "xfs.h"
61 static struct xfs_info xfs;
71 #define XFS_INO_OFFSET_BITS xfs.inopblog
72 #define XFS_INO_AGBNO_BITS xfs.agblklog
73 #define XFS_INO_AGINO_BITS (xfs.agblklog + xfs.inopblog)
74 #define XFS_INO_AGNO_BITS xfs.agnolog
179 return ((xfs_fsblock_t)agno*xfs.agblocks + agbno) << xfs.bdlog;
185 return agb2daddr ((xfs_agnumber_t)(fsbno >> xfs.agblklog),
186 (xfs_agblock_t)(fsbno & mask32lo(xfs.agblklog)));
195 int tmp = icore.di_forkoff ? (icore.di_forkoff << 3) : xfs.isize;
216 devread (daddr, offset*xfs.isize, xfs.isize, (char *)inode);
218 xfs.ptr0 = *(xfs_bmbt_ptr_t *)
233 xfs.xt = inode->di_u.di_bmx;
234 xfs.nextents = le32 (icore.di_nextents);
237 ptr0 = xfs.ptr0;
239 xfs.daddr = fsb2daddr (le64(ptr0));
240 devread (xfs.daddr, 0,
243 xfs.nextents = le16(h.bb_numrecs);
244 xfs.next = fsb2daddr (le64(h.bb_rightsib));
245 xfs.fpos = sizeof(xfs_btree_block_t);
248 devread (xfs.daddr, xfs.btnode_ptr0_off,
261 if (xfs.nextents == 0)
265 if (xfs.nextents == 0) {
267 if (xfs.next == 0)
269 xfs.daddr = xfs.next;
270 devread (xfs.daddr, 0, sizeof(xfs_btree_lblock_t), (char *)&h);
271 xfs.nextents = le16(h.bb_numrecs);
272 xfs.next = fsb2daddr (le64(h.bb_rightsib));
273 xfs.fpos = sizeof(xfs_btree_block_t);
276 devread (xfs.daddr, xfs.fpos, sizeof(xfs_bmbt_rec_t), filebuf);
277 xfs.xt = (xfs_bmbt_rec_32_t *)filebuf;
278 xfs.fpos += sizeof(xfs_bmbt_rec_32_t);
280 xad.offset = xt_offset (xfs.xt);
281 xad.start = xt_start (xfs.xt);
282 xad.len = xt_len (xfs.xt);
283 ++xfs.xt;
284 --xfs.nextents;
301 if (isinxt (xfs.dablk, offset, xad->len)) {
302 devread (fsb2daddr (xad->start + xfs.dablk - offset),
314 return (xfs.i8param == 0)
321 return (xfs.i8param == 0)
341 if (xfs.dirpos >= xfs.dirmax) {
342 if (xfs.forw == 0)
344 xfs.dablk = xfs.forw;
347 xfs.dirmax = le16 (h->count) - le16 (h->stale);
348 xfs.forw = le32 (h->info.forw);
350 xfs.dirpos = 0;
355 switch (xfs.dirpos) {
366 - xfs.i8param);
373 ((char *)sfe + namelen + 11 - xfs.i8param);
380 if (xfs.blkoff >= xfs.dirbsize) {
381 xfs.blkoff = sizeof(xfs_dir2_data_hdr_t);
382 filepos &= ~(xfs.dirbsize - 1);
383 filepos |= xfs.blkoff;
386 xfs.blkoff += 4;
389 xfs.blkoff += toread;
402 xfs.blkoff += toread + 5;
404 ++xfs.dirpos;
413 xfs.forw = 0;
416 xfs.dirmax = inode->di_u.di_dir2sf.hdr.count;
417 xfs.i8param = inode->di_u.di_dir2sf.hdr.i8count ? 0 : 4;
418 xfs.dirpos = -2;
426 filepos = xfs.dirbsize - sizeof(*tail);
428 xfs.dirmax = le32 (tail->count) - le32 (tail->stale);
431 xfs.dablk = (1ULL << 35) >> xfs.blklog;
438 xfs.dirmax = le16 (h->count) - le16 (h->stale);
439 xfs.forw = le32 (h->info.forw);
442 xfs.dablk = le32 (n->btree[0].before);
447 xfs.blkoff = sizeof(xfs_dir2_data_hdr_t);
448 filepos = xfs.blkoff;
449 xfs.dirpos = 0;
466 xfs.bsize = le32 (super.sb_blocksize);
467 xfs.blklog = super.sb_blocklog;
468 xfs.bdlog = xfs.blklog - SECTOR_BITS;
469 xfs.rootino = le64 (super.sb_rootino);
470 xfs.isize = le16 (super.sb_inodesize);
471 xfs.agblocks = le32 (super.sb_agblocks);
472 xfs.dirbsize = xfs.bsize << super.sb_dirblklog;
474 xfs.inopblog = super.sb_inopblog;
475 xfs.agblklog = super.sb_agblklog;
476 xfs.agnolog = xfs_highbit32 (le32(super.sb_agcount));
478 xfs.btnode_ptr0_off =
479 ((xfs.bsize - sizeof(xfs_btree_block_t)) /
507 if (isinxt (filepos >> xfs.blklog, offset, xadlen)) {
508 endofcur = (offset + xadlen) << xfs.blklog;
514 filepos - (offset << xfs.blklog), toread, buf);
521 toread = ((offset << xfs.blklog) >= endpos)
522 ? len : ((offset - endofprev) << xfs.blklog);
543 char linkbuf[xfs.bsize];
546 parent_ino = ino = xfs.rootino;
558 if (di_size < xfs.bsize - 1) {
567 ino = (linkbuf[0] == '/') ? xfs.rootino : parent_ino;
568 while (n < (xfs.bsize - 1) && (linkbuf[n++] = *dirname++));