Lines Matching defs:inode

8  * inode.c
14 * Inodes in Squashfs are identified by a 48-bit inode which encodes the
15 * location of the compressed metadata block containing the inode, and the byte
16 * offset into that block where the inode is placed (<block, offset>).
19 * (regular file, directory, device, etc.), the inode contents and length
22 * To further maximise compression, two types of regular file inode and
23 * directory inode are defined: inodes optimised for frequently occurring
40 * Initialise VFS inode with the base inode information common to all
41 * Squashfs inode types. Sqsh_ino contains the unswapped base inode
44 static int squashfs_new_inode(struct super_block *sb, struct inode *inode,
51 inode->i_ino = le32_to_cpu(sqsh_ino->inode_number);
52 if (inode->i_ino == 0)
63 i_uid_write(inode, i_uid);
64 i_gid_write(inode, i_gid);
65 inode_set_mtime(inode, le32_to_cpu(sqsh_ino->mtime), 0);
66 inode_set_atime(inode, inode_get_mtime_sec(inode), 0);
67 inode_set_ctime(inode, inode_get_mtime_sec(inode), 0);
68 inode->i_mode = le16_to_cpu(sqsh_ino->mode);
69 inode->i_size = 0;
75 struct inode *squashfs_iget(struct super_block *sb, long long ino,
78 struct inode *inode = iget_locked(sb, ino_number);
83 if (!inode)
85 if (!(inode->i_state & I_NEW))
86 return inode;
88 err = squashfs_read_inode(inode, ino);
90 iget_failed(inode);
94 unlock_new_inode(inode);
95 return inode;
100 * Initialise VFS inode by reading inode from inode table (compressed
103 int squashfs_read_inode(struct inode *inode, long long ino)
105 struct super_block *sb = inode->i_sb;
116 * Read inode base common to all inode types.
123 err = squashfs_new_inode(sb, inode, sqshb_ino);
157 set_nlink(inode, 1);
158 inode->i_size = le32_to_cpu(sqsh_ino->file_size);
159 inode->i_fop = &generic_ro_fops;
160 inode->i_mode |= S_IFREG;
161 inode->i_blocks = ((inode->i_size - 1) >> 9) + 1;
162 squashfs_i(inode)->fragment_block = frag_blk;
163 squashfs_i(inode)->fragment_size = frag_size;
164 squashfs_i(inode)->fragment_offset = frag_offset;
165 squashfs_i(inode)->start = le32_to_cpu(sqsh_ino->start_block);
166 squashfs_i(inode)->block_list_start = block;
167 squashfs_i(inode)->offset = offset;
168 inode->i_data.a_ops = &squashfs_aops;
170 TRACE("File inode %x:%x, start_block %llx, block_list_start "
172 offset, squashfs_i(inode)->start, block, offset);
201 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
202 inode->i_size = le64_to_cpu(sqsh_ino->file_size);
203 inode->i_op = &squashfs_inode_ops;
204 inode->i_fop = &generic_ro_fops;
205 inode->i_mode |= S_IFREG;
206 inode->i_blocks = (inode->i_size -
209 squashfs_i(inode)->fragment_block = frag_blk;
210 squashfs_i(inode)->fragment_size = frag_size;
211 squashfs_i(inode)->fragment_offset = frag_offset;
212 squashfs_i(inode)->start = le64_to_cpu(sqsh_ino->start_block);
213 squashfs_i(inode)->block_list_start = block;
214 squashfs_i(inode)->offset = offset;
215 inode->i_data.a_ops = &squashfs_aops;
217 TRACE("File inode %x:%x, start_block %llx, block_list_start "
219 offset, squashfs_i(inode)->start, block, offset);
230 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
231 inode->i_size = le16_to_cpu(sqsh_ino->file_size);
232 inode->i_op = &squashfs_dir_inode_ops;
233 inode->i_fop = &squashfs_dir_ops;
234 inode->i_mode |= S_IFDIR;
235 squashfs_i(inode)->start = le32_to_cpu(sqsh_ino->start_block);
236 squashfs_i(inode)->offset = le16_to_cpu(sqsh_ino->offset);
237 squashfs_i(inode)->dir_idx_cnt = 0;
238 squashfs_i(inode)->parent = le32_to_cpu(sqsh_ino->parent_inode);
240 TRACE("Directory inode %x:%x, start_block %llx, offset %x\n",
242 squashfs_i(inode)->start,
255 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
256 inode->i_size = le32_to_cpu(sqsh_ino->file_size);
257 inode->i_op = &squashfs_dir_inode_ops;
258 inode->i_fop = &squashfs_dir_ops;
259 inode->i_mode |= S_IFDIR;
260 squashfs_i(inode)->start = le32_to_cpu(sqsh_ino->start_block);
261 squashfs_i(inode)->offset = le16_to_cpu(sqsh_ino->offset);
262 squashfs_i(inode)->dir_idx_start = block;
263 squashfs_i(inode)->dir_idx_offset = offset;
264 squashfs_i(inode)->dir_idx_cnt = le16_to_cpu(sqsh_ino->i_count);
265 squashfs_i(inode)->parent = le32_to_cpu(sqsh_ino->parent_inode);
267 TRACE("Long directory inode %x:%x, start_block %llx, offset "
269 squashfs_i(inode)->start,
282 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
283 inode->i_size = le32_to_cpu(sqsh_ino->symlink_size);
284 inode->i_op = &squashfs_symlink_inode_ops;
285 inode_nohighmem(inode);
286 inode->i_data.a_ops = &squashfs_symlink_aops;
287 inode->i_mode |= S_IFLNK;
288 squashfs_i(inode)->start = block;
289 squashfs_i(inode)->offset = offset;
295 &offset, inode->i_size);
305 TRACE("Symbolic link inode %x:%x, start_block %llx, offset "
321 inode->i_mode |= S_IFCHR;
323 inode->i_mode |= S_IFBLK;
324 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
326 init_special_inode(inode, inode->i_mode, new_decode_dev(rdev));
328 TRACE("Device inode %x:%x, rdev %x\n",
343 inode->i_mode |= S_IFCHR;
345 inode->i_mode |= S_IFBLK;
347 inode->i_op = &squashfs_inode_ops;
348 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
350 init_special_inode(inode, inode->i_mode, new_decode_dev(rdev));
352 TRACE("Device inode %x:%x, rdev %x\n",
366 inode->i_mode |= S_IFIFO;
368 inode->i_mode |= S_IFSOCK;
369 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
370 init_special_inode(inode, inode->i_mode, 0);
383 inode->i_mode |= S_IFIFO;
385 inode->i_mode |= S_IFSOCK;
387 inode->i_op = &squashfs_inode_ops;
388 set_nlink(inode, le32_to_cpu(sqsh_ino->nlink));
389 init_special_inode(inode, inode->i_mode, 0);
393 ERROR("Unknown inode type %d in squashfs_iget!\n", type);
399 &squashfs_i(inode)->xattr_count,
400 &squashfs_i(inode)->xattr_size,
401 &squashfs_i(inode)->xattr);
404 inode->i_blocks += ((squashfs_i(inode)->xattr_size - 1) >> 9)
407 squashfs_i(inode)->xattr_count = 0;
412 ERROR("Unable to read inode 0x%llx\n", ino);