28 if (clink->u.inode->next_segment.number)
29 return pfsCacheGetData(clink->pfsMount,
30 clink->u.inode->next_segment.subpart,
31 clink->u.inode->next_segment.number << clink->pfsMount->inode_scale,
32 PFS_CACHE_FLAG_SEGI, result);
34 PFS_PRINTF(PFS_DRV_NAME
": Error: There is no next segment descriptor\n");
46 if (blockpos->byte_offset)
48 PFS_PRINTF(PFS_DRV_NAME
": Panic: This is a bug!\n");
54 if (pfsFixIndex(blockpos->block_segment+1)==0)
56 if ((nextSegment=pfsBlockGetNextSegment(pfsCacheUsedAdd(blockpos->inode), &result)) == NULL)
58 pfsCacheFree(blockpos->inode);
59 blockpos->inode=nextSegment;
60 if (clink->u.inode->number_data-1 == ++blockpos->block_segment)
64 blockpos->block_offset=0;
65 blockpos->block_segment++;
73 i = (u32)(size / blockpos->inode->pfsMount->zsize);
74 blockpos->byte_offset += size % blockpos->inode->pfsMount->zsize;
76 if (blockpos->byte_offset >= blockpos->inode->pfsMount->zsize)
78 blockpos->byte_offset -= blockpos->inode->pfsMount->zsize;
86 blockpos->inode=pfsCacheUsedAdd(clink);
87 blockpos->byte_offset=0;
89 if (clink->u.inode->size)
91 blockpos->block_segment=1;
92 blockpos->block_offset=0;
94 blockpos->block_segment=0;
95 blockpos->block_offset=1;
97 return pfsInodeSync(blockpos, position, clink->u.inode->number_data);