Home | History | Annotate | Download | only in fs

Lines Matching refs:inode

38  * inode->next_extent.pstart and inode->next_extent.len (the caller
39 * will store the initial sector number into inode->next_extent.lstart
42 * If inode->next_extent.len != 0 on entry then the routine is allowed
43 * to assume inode->next_extent contains valid data from the previous
48 * information into inode->next_extent at searchdir/iget time, and leave
74 static void get_next_extent(struct inode *inode)
77 uint32_t lstart = inode->this_extent.lstart + inode->this_extent.len;
79 if (inode->fs->fs_ops->next_extent(inode, lstart))
80 inode->next_extent.len = 0; /* ERROR */
81 inode->next_extent.lstart = lstart;
83 dprintf("Extent: inode %p @ %u start %llu len %u\n",
84 inode, inode->next_extent.lstart,
85 inode->next_extent.pstart, inode->next_extent.len);
91 struct inode *inode = file->inode;
95 uint32_t bytes_left = inode->size - file->offset;
109 if (lsector < inode->this_extent.lstart ||
110 lsector >= inode->this_extent.lstart + inode->this_extent.len) {
111 /* inode->this_extent unusable, maybe next_extent is... */
112 inode->this_extent = inode->next_extent;
115 if (lsector < inode->this_extent.lstart ||
116 lsector >= inode->this_extent.lstart + inode->this_extent.len) {
118 inode->this_extent.lstart = lsector;
119 inode->this_extent.len = 0;
122 uint32_t delta = lsector - inode->this_extent.lstart;
123 inode->this_extent.lstart = lsector;
124 inode->this_extent.len -= delta;
125 inode->this_extent.pstart
126 = next_psector(inode->this_extent.pstart, delta);
130 inode->this_extent.lstart,
131 inode->this_extent.pstart,
132 inode->this_extent.len);
138 while (sectors > inode->this_extent.len) {
139 if (!inode->next_extent.len ||
140 inode->next_extent.lstart !=
141 inode->this_extent.lstart + inode->this_extent.len)
142 get_next_extent(inode);
144 if (!inode->this_extent.len) {
146 inode->this_extent = inode->next_extent;
147 if (!inode->next_extent.len) {
151 } else if (inode->next_extent.len &&
152 inode->next_extent.pstart == next_pstart(&inode->this_extent)) {
154 inode->this_extent.len += inode->next_extent.len;
162 inode->this_extent.lstart,
163 inode->this_extent.pstart,
164 inode->this_extent.len);
166 chunk = min(sectors, inode->this_extent.len);
169 dprintf(" I/O: inode %p @ %u start %llu len %u\n",
170 inode, inode->this_extent.lstart,
171 inode->this_extent.pstart, chunk);
173 if (inode->this_extent.pstart == EXTENT_ZERO) {
176 disk->rdwr_sectors(disk, buf, inode->this_extent.pstart, chunk, 0);
177 inode->this_extent.pstart += chunk;
183 inode->this_extent.lstart += chunk;
184 inode->this_extent.len -= chunk;