Lines Matching refs:inode
5 * inode.c
32 #include "inode.h"
57 static int ocfs2_read_locked_inode(struct inode *inode,
59 static int ocfs2_init_locked_inode(struct inode *inode, void *opaque);
60 static int ocfs2_find_actor(struct inode *inode, void *opaque);
62 struct inode *inode,
65 static int ocfs2_filecheck_read_inode_block_full(struct inode *inode,
73 void ocfs2_set_inode_flags(struct inode *inode)
75 unsigned int flags = OCFS2_I(inode)->ip_attr;
77 inode->i_flags &= ~(S_IMMUTABLE |
81 inode->i_flags |= S_IMMUTABLE;
84 inode->i_flags |= S_SYNC;
86 inode->i_flags |= S_APPEND;
88 inode->i_flags |= S_NOATIME;
90 inode->i_flags |= S_DIRSYNC;
93 /* Propagate flags from i_flags to OCFS2_I(inode)->ip_attr */
112 struct inode *ocfs2_ilookup(struct super_block *sb, u64 blkno)
123 struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, unsigned flags,
127 struct inode *inode = NULL;
139 inode = ERR_PTR(-EINVAL);
140 mlog_errno(PTR_ERR(inode));
149 inode = iget5_locked(sb, args.fi_ino, ocfs2_find_actor,
151 /* inode was *not* in the inode cache. 2.6.x requires
154 if (inode == NULL) {
155 inode = ERR_PTR(-ENOMEM);
156 mlog_errno(PTR_ERR(inode));
159 trace_ocfs2_iget5_locked(inode->i_state);
160 if (inode->i_state & I_NEW) {
161 rc = ocfs2_read_locked_inode(inode, &args);
162 unlock_new_inode(inode);
164 if (is_bad_inode(inode)) {
165 iput(inode);
166 inode = ERR_PTR(rc);
173 * as we cannot be sure that the inode or some of its metadata isn't
174 * part of the transaction - the inode could have been reclaimed and
180 struct ocfs2_inode_info *oi = OCFS2_I(inode);
197 if (!IS_ERR(inode)) {
198 trace_ocfs2_iget_end(inode,
199 (unsigned long long)OCFS2_I(inode)->ip_blkno);
202 return inode;
209 * found? : return the in-memory inode
213 static int ocfs2_find_actor(struct inode *inode, void *opaque)
216 struct ocfs2_inode_info *oi = OCFS2_I(inode);
221 mlog_bug_on_msg(!inode, "No inode in find actor!\n");
223 trace_ocfs2_find_actor(inode, inode->i_ino, opaque, args->fi_blkno);
234 * initialize the new inode, but don't do anything that would cause
238 static int ocfs2_init_locked_inode(struct inode *inode, void *opaque)
244 inode->i_ino = args->fi_ino;
245 OCFS2_I(inode)->ip_blkno = args->fi_blkno;
247 lockdep_set_class(&inode->i_rwsem,
253 lockdep_set_class(&OCFS2_I(inode)->ip_alloc_sem,
256 lockdep_set_class(&OCFS2_I(inode)->ip_alloc_sem,
262 void ocfs2_populate_inode(struct inode *inode, struct ocfs2_dinode *fe,
269 sb = inode->i_sb;
282 inode today. change if
288 OCFS2_I(inode)->ip_clusters = le32_to_cpu(fe->i_clusters);
289 OCFS2_I(inode)->ip_attr = le32_to_cpu(fe->i_attr);
290 OCFS2_I(inode)->ip_dyn_features = le16_to_cpu(fe->i_dyn_features);
292 inode_set_iversion(inode, 1);
293 inode->i_generation = le32_to_cpu(fe->i_generation);
294 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev));
295 inode->i_mode = le16_to_cpu(fe->i_mode);
296 i_uid_write(inode, le32_to_cpu(fe->i_uid));
297 i_gid_write(inode, le32_to_cpu(fe->i_gid));
300 if (S_ISLNK(inode->i_mode) && !fe->i_clusters) {
301 inode->i_blocks = 0;
302 inode->i_mapping->a_ops = &ocfs2_fast_symlink_aops;
304 inode->i_blocks = ocfs2_inode_sector_count(inode);
305 inode->i_mapping->a_ops = &ocfs2_aops;
307 inode->i_atime.tv_sec = le64_to_cpu(fe->i_atime);
308 inode->i_atime.tv_nsec = le32_to_cpu(fe->i_atime_nsec);
309 inode->i_mtime.tv_sec = le64_to_cpu(fe->i_mtime);
310 inode->i_mtime.tv_nsec = le32_to_cpu(fe->i_mtime_nsec);
311 inode->i_ctime.tv_sec = le64_to_cpu(fe->i_ctime);
312 inode->i_ctime.tv_nsec = le32_to_cpu(fe->i_ctime_nsec);
314 if (OCFS2_I(inode)->ip_blkno != le64_to_cpu(fe->i_blkno))
317 (unsigned long long)OCFS2_I(inode)->ip_blkno,
320 set_nlink(inode, ocfs2_read_links_count(fe));
322 trace_ocfs2_populate_inode(OCFS2_I(inode)->ip_blkno,
325 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_SYSTEM_FILE;
326 inode->i_flags |= S_NOQUOTA;
330 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_BITMAP;
332 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_BITMAP;
334 inode->i_flags |= S_NOQUOTA;
341 switch (inode->i_mode & S_IFMT) {
344 inode->i_fop = &ocfs2_fops;
346 inode->i_fop = &ocfs2_fops_no_plocks;
347 inode->i_op = &ocfs2_file_iops;
348 i_size_write(inode, le64_to_cpu(fe->i_size));
351 inode->i_op = &ocfs2_dir_iops;
353 inode->i_fop = &ocfs2_dops;
355 inode->i_fop = &ocfs2_dops_no_plocks;
356 i_size_write(inode, le64_to_cpu(fe->i_size));
357 OCFS2_I(inode)->ip_dir_lock_gen = 1;
360 inode->i_op = &ocfs2_symlink_inode_operations;
361 inode_nohighmem(inode);
362 i_size_write(inode, le64_to_cpu(fe->i_size));
365 inode->i_op = &ocfs2_special_file_iops;
366 init_special_inode(inode, inode->i_mode,
367 inode->i_rdev);
372 inode->i_ino = ino_from_blkno(inode->i_sb,
382 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_inode_lockres,
383 OCFS2_LOCK_TYPE_META, 0, inode);
385 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_open_lockres,
386 OCFS2_LOCK_TYPE_OPEN, 0, inode);
389 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_rw_lockres,
390 OCFS2_LOCK_TYPE_RW, inode->i_generation,
391 inode);
393 ocfs2_set_inode_flags(inode);
395 OCFS2_I(inode)->ip_last_used_slot = 0;
396 OCFS2_I(inode)->ip_last_used_group = 0;
398 if (S_ISDIR(inode->i_mode))
399 ocfs2_resv_set_type(&OCFS2_I(inode)->ip_la_data_resv,
403 static int ocfs2_read_locked_inode(struct inode *inode,
414 sb = inode->i_sb;
418 * To improve performance of cold-cache inode stats, we take
421 * Generally, OCFS2 never trusts the contents of an inode
451 (unsigned long long)OCFS2_I(inode)->ip_blkno, can_lock);
463 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_inode_lockres,
465 generation, inode);
467 ocfs2_inode_lock_res_init(&OCFS2_I(inode)->ip_open_lockres,
469 0, inode);
472 status = ocfs2_open_lock(inode);
474 make_bad_inode(inode);
478 status = ocfs2_inode_lock(inode, NULL, lock_level);
480 make_bad_inode(inode);
487 status = ocfs2_try_open_lock(inode, 0);
489 make_bad_inode(inode);
496 status = ocfs2_filecheck_read_inode_block_full(inode,
499 status = ocfs2_filecheck_read_inode_block_full(inode,
502 status = ocfs2_read_inode_block_full(inode,
532 * understand whether it is asking for a system file inode or
542 inode->i_rdev = huge_decode_dev(le64_to_cpu(fe->id1.dev1.i_rdev));
544 ocfs2_populate_inode(inode, fe, 0);
550 ocfs2_inode_unlock(inode, lock_level);
552 ocfs2_inode_lock(inode, NULL, lock_level);
554 status = ocfs2_write_block(osb, bh, INODE_CACHE(inode));
565 ocfs2_inode_unlock(inode, lock_level);
568 make_bad_inode(inode);
581 struct inode *inode,
595 if (ocfs2_should_order_data(inode))
596 ocfs2_begin_ordered_truncate(inode, 0);
606 status = ocfs2_journal_access_di(handle, INODE_CACHE(inode),
614 i_size_write(inode, 0);
616 status = ocfs2_mark_inode_dirty(handle, inode, fe_bh);
625 status = ocfs2_commit_truncate(osb, inode, fe_bh);
636 static int ocfs2_remove_inode(struct inode *inode,
638 struct inode *orphan_dir_inode,
642 struct inode *inode_alloc_inode = NULL;
645 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
667 ocfs2_quota_trans_credits(inode->i_sb));
674 if (!(OCFS2_I(inode)->ip_flags & OCFS2_INODE_SKIP_ORPHAN_DIR)) {
675 status = ocfs2_orphan_del(osb, handle, orphan_dir_inode, inode,
684 status = ocfs2_journal_access_di(handle, INODE_CACHE(inode), di_bh,
695 ocfs2_remove_from_cache(INODE_CACHE(inode), di_bh);
696 dquot_free_inode(inode);
719 * and exit early - recovery will wipe this inode for us.
750 static int ocfs2_wipe_inode(struct inode *inode,
754 struct inode *orphan_dir_inode = NULL;
756 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
759 if (!(OCFS2_I(inode)->ip_flags & OCFS2_INODE_SKIP_ORPHAN_DIR)) {
790 * inode delete underneath us -- this will result in two nodes
792 status = ocfs2_truncate_for_delete(osb, inode, di_bh);
799 if (S_ISDIR(inode->i_mode)) {
800 status = ocfs2_dx_dir_truncate(inode, di_bh);
807 /*Free extended attribute resources associated with this inode.*/
808 status = ocfs2_xattr_remove(inode, di_bh);
814 status = ocfs2_remove_refcount_tree(inode, di_bh);
820 status = ocfs2_remove_inode(inode, di_bh, orphan_dir_inode,
826 if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_SKIP_ORPHAN_DIR)
841 static int ocfs2_inode_is_valid_to_delete(struct inode *inode)
844 struct ocfs2_inode_info *oi = OCFS2_I(inode);
845 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
852 * inode.. */
853 if (inode == osb->root_inode) {
854 mlog(ML_ERROR, "Skipping delete of root inode.\n");
860 * voting [hello, deadlock city!] so we cannot delete the inode. But
861 * since we dropped last inode ref when downconverting dentry lock,
863 * take care of deleting the inode.
885 /* Query the cluster to determine whether we should wipe an inode from
888 * Requires the inode to have the cluster lock. */
889 static int ocfs2_query_inode_wipe(struct inode *inode,
894 struct ocfs2_inode_info *oi = OCFS2_I(inode);
900 inode->i_nlink);
904 * the inode. Recheck our flags to catch this. */
905 if (!ocfs2_inode_is_valid_to_delete(inode)) {
910 /* Now that we have an up to date inode, we can double check
912 if (inode->i_nlink)
915 /* Do some basic inode verification... */
936 "Disk flags 0x%x, inode flags 0x%x\n",
951 * This is how ocfs2 determines whether an inode is still live
953 * the inode open lock in ocfs2_read_locked_inode(). When we
955 * lock to an exclusive. Trylocks are serialized by the inode
956 * meta data lock. If the upconvert succeeds, we know the inode
962 status = ocfs2_try_open_lock(inode, 1);
982 * inode data in a consistent state for clear_inode. Always truncates
984 static void ocfs2_cleanup_delete_inode(struct inode *inode,
988 (unsigned long long)OCFS2_I(inode)->ip_blkno, sync_data);
990 filemap_write_and_wait(inode->i_mapping);
991 truncate_inode_pages_final(&inode->i_data);
994 static void ocfs2_delete_inode(struct inode *inode)
1001 trace_ocfs2_delete_inode(inode->i_ino,
1002 (unsigned long long)OCFS2_I(inode)->ip_blkno,
1003 is_bad_inode(inode));
1005 /* When we fail in read_inode() we mark inode as bad. The second test
1006 * catches the case when inode allocation fails before allocating
1007 * a block for inode. */
1008 if (is_bad_inode(inode) || !OCFS2_I(inode)->ip_blkno)
1011 if (!ocfs2_inode_is_valid_to_delete(inode)) {
1015 ocfs2_cleanup_delete_inode(inode, 0);
1019 dquot_initialize(inode);
1032 status = ocfs2_nfs_sync_lock(OCFS2_SB(inode->i_sb), 0);
1035 ocfs2_cleanup_delete_inode(inode, 0);
1038 /* Lock down the inode. This gives us an up to date view of
1046 status = ocfs2_inode_lock(inode, &di_bh, 1);
1050 ocfs2_cleanup_delete_inode(inode, 0);
1055 /* Skip inode deletion and wait for dio orphan entry recovered
1058 ocfs2_cleanup_delete_inode(inode, 0);
1063 * before we go ahead and wipe the inode. */
1064 status = ocfs2_query_inode_wipe(inode, di_bh, &wipe);
1066 /* Error and remote inode busy both mean we won't be
1067 * removing the inode, so they take almost the same
1073 * this inode, or it was never completely
1075 ocfs2_cleanup_delete_inode(inode, 1);
1079 ocfs2_cleanup_delete_inode(inode, 0);
1081 status = ocfs2_wipe_inode(inode, di_bh);
1089 * Mark the inode as successfully deleted.
1097 OCFS2_I(inode)->ip_flags |= OCFS2_INODE_DELETED;
1100 ocfs2_inode_unlock(inode, 1);
1104 ocfs2_nfs_sync_unlock(OCFS2_SB(inode->i_sb), 0);
1112 static void ocfs2_clear_inode(struct inode *inode)
1115 struct ocfs2_inode_info *oi = OCFS2_I(inode);
1116 struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
1118 clear_inode(inode);
1120 inode->i_nlink);
1123 "Inode=%lu\n", inode->i_ino);
1125 dquot_drop(inode);
1129 ocfs2_open_unlock(inode);
1148 ocfs2_checkpoint_inode(inode);
1151 "Clear inode of %llu, inode has io markers\n",
1154 "Clear inode of %llu, inode has unwritten extents\n",
1157 ocfs2_extent_map_trunc(inode, 0);
1159 status = ocfs2_drop_inode_locks(inode);
1167 ocfs2_metadata_cache_exit(INODE_CACHE(inode));
1169 mlog_bug_on_msg(INODE_CACHE(inode)->ci_num_cached,
1170 "Clear inode of %llu, inode has %u cache items\n",
1172 INODE_CACHE(inode)->ci_num_cached);
1174 mlog_bug_on_msg(!(INODE_CACHE(inode)->ci_flags & OCFS2_CACHE_FL_INLINE),
1175 "Clear inode of %llu, inode has a bad flag\n",
1179 "Clear inode of %llu, inode is locked\n",
1183 "Clear inode of %llu, io_mutex is locked\n",
1192 "Clear inode of %llu, alloc_sem is locked\n",
1197 "Clear inode of %llu has open count %d\n",
1206 * ip_jinode is used to track txns against this inode. We ensure that
1214 void ocfs2_evict_inode(struct inode *inode)
1216 if (!inode->i_nlink ||
1217 (OCFS2_I(inode)->ip_flags & OCFS2_INODE_MAYBE_ORPHANED)) {
1218 ocfs2_delete_inode(inode);
1220 truncate_inode_pages_final(&inode->i_data);
1222 ocfs2_clear_inode(inode);
1226 * struct inode, so it's safe here to check the flags field
1228 int ocfs2_drop_inode(struct inode *inode)
1230 struct ocfs2_inode_info *oi = OCFS2_I(inode);
1233 inode->i_nlink, oi->ip_flags);
1235 assert_spin_locked(&inode->i_lock);
1236 inode->i_state |= I_WILL_FREE;
1237 spin_unlock(&inode->i_lock);
1238 write_inode_now(inode, 1);
1239 spin_lock(&inode->i_lock);
1240 WARN_ON(inode->i_state & I_NEW);
1241 inode->i_state &= ~I_WILL_FREE;
1251 struct inode *inode = d_inode(dentry);
1254 trace_ocfs2_inode_revalidate(inode,
1255 inode ? (unsigned long long)OCFS2_I(inode)->ip_blkno : 0ULL,
1256 inode ? (unsigned long long)OCFS2_I(inode)->ip_flags : 0);
1258 if (!inode) {
1263 spin_lock(&OCFS2_I(inode)->ip_lock);
1264 if (OCFS2_I(inode)->ip_flags & OCFS2_INODE_DELETED) {
1265 spin_unlock(&OCFS2_I(inode)->ip_lock);
1269 spin_unlock(&OCFS2_I(inode)->ip_lock);
1272 * inode for us. */
1273 status = ocfs2_inode_lock(inode, NULL, 0);
1279 ocfs2_inode_unlock(inode, 0);
1285 * Updates a disk inode from a
1286 * struct inode.
1290 struct inode *inode,
1296 trace_ocfs2_mark_inode_dirty((unsigned long long)OCFS2_I(inode)->ip_blkno);
1298 status = ocfs2_journal_access_di(handle, INODE_CACHE(inode), bh,
1305 spin_lock(&OCFS2_I(inode)->ip_lock);
1306 fe->i_clusters = cpu_to_le32(OCFS2_I(inode)->ip_clusters);
1307 ocfs2_get_inode_flags(OCFS2_I(inode));
1308 fe->i_attr = cpu_to_le32(OCFS2_I(inode)->ip_attr);
1309 fe->i_dyn_features = cpu_to_le16(OCFS2_I(inode)->ip_dyn_features);
1310 spin_unlock(&OCFS2_I(inode)->ip_lock);
1312 fe->i_size = cpu_to_le64(i_size_read(inode));
1313 ocfs2_set_links_count(fe, inode->i_nlink);
1314 fe->i_uid = cpu_to_le32(i_uid_read(inode));
1315 fe->i_gid = cpu_to_le32(i_gid_read(inode));
1316 fe->i_mode = cpu_to_le16(inode->i_mode);
1317 fe->i_atime = cpu_to_le64(inode->i_atime.tv_sec);
1318 fe->i_atime_nsec = cpu_to_le32(inode->i_atime.tv_nsec);
1319 fe->i_ctime = cpu_to_le64(inode->i_ctime.tv_sec);
1320 fe->i_ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec);
1321 fe->i_mtime = cpu_to_le64(inode->i_mtime.tv_sec);
1322 fe->i_mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec);
1325 ocfs2_update_inode_fsync_trans(handle, inode, 1);
1332 * Updates a struct inode from a disk inode.
1335 void ocfs2_refresh_inode(struct inode *inode,
1338 spin_lock(&OCFS2_I(inode)->ip_lock);
1340 OCFS2_I(inode)->ip_clusters = le32_to_cpu(fe->i_clusters);
1341 OCFS2_I(inode)->ip_attr = le32_to_cpu(fe->i_attr);
1342 OCFS2_I(inode)->ip_dyn_features = le16_to_cpu(fe->i_dyn_features);
1343 ocfs2_set_inode_flags(inode);
1344 i_size_write(inode, le64_to_cpu(fe->i_size));
1345 set_nlink(inode, ocfs2_read_links_count(fe));
1346 i_uid_write(inode, le32_to_cpu(fe->i_uid));
1347 i_gid_write(inode, le32_to_cpu(fe->i_gid));
1348 inode->i_mode = le16_to_cpu(fe->i_mode);
1349 if (S_ISLNK(inode->i_mode) && le32_to_cpu(fe->i_clusters) == 0)
1350 inode->i_blocks = 0;
1352 inode->i_blocks = ocfs2_inode_sector_count(inode);
1353 inode->i_atime.tv_sec = le64_to_cpu(fe->i_atime);
1354 inode->i_atime.tv_nsec = le32_to_cpu(fe->i_atime_nsec);
1355 inode->i_mtime.tv_sec = le64_to_cpu(fe->i_mtime);
1356 inode->i_mtime.tv_nsec = le32_to_cpu(fe->i_mtime_nsec);
1357 inode->i_ctime.tv_sec = le64_to_cpu(fe->i_ctime);
1358 inode->i_ctime.tv_nsec = le32_to_cpu(fe->i_ctime_nsec);
1360 spin_unlock(&OCFS2_I(inode)->ip_lock);
1442 * inode number inputed.
1522 /* Cannot fix invalid inode block */
1564 ocfs2_filecheck_read_inode_block_full(struct inode *inode,
1571 if (!type) /* Check inode block */
1572 rc = ocfs2_read_blocks(INODE_CACHE(inode),
1573 OCFS2_I(inode)->ip_blkno,
1576 else /* Repair inode block */
1577 rc = ocfs2_read_blocks(INODE_CACHE(inode),
1578 OCFS2_I(inode)->ip_blkno,
1589 int ocfs2_read_inode_block_full(struct inode *inode, struct buffer_head **bh,
1595 rc = ocfs2_read_blocks(INODE_CACHE(inode), OCFS2_I(inode)->ip_blkno,
1605 int ocfs2_read_inode_block(struct inode *inode, struct buffer_head **bh)
1607 return ocfs2_read_inode_block_full(inode, bh, 0);