• Home
  • Raw
  • Download

Lines Matching refs:inode

27 void reiserfs_delete_inode(struct inode *inode)  in reiserfs_delete_inode()  argument
32 2 * REISERFS_QUOTA_INIT_BLOCKS(inode->i_sb); in reiserfs_delete_inode()
36 truncate_inode_pages(&inode->i_data, 0); in reiserfs_delete_inode()
38 reiserfs_write_lock(inode->i_sb); in reiserfs_delete_inode()
41 …if (!(inode->i_state & I_NEW) && INODE_PKEY(inode)->k_objectid != 0) { /* also handles bad_inode c… in reiserfs_delete_inode()
42 reiserfs_delete_xattrs(inode); in reiserfs_delete_inode()
44 if (journal_begin(&th, inode->i_sb, jbegin_count)) in reiserfs_delete_inode()
46 reiserfs_update_inode_transaction(inode); in reiserfs_delete_inode()
48 reiserfs_discard_prealloc(&th, inode); in reiserfs_delete_inode()
50 err = reiserfs_delete_object(&th, inode); in reiserfs_delete_inode()
56 DQUOT_FREE_INODE(inode); in reiserfs_delete_inode()
58 if (journal_end(&th, inode->i_sb, jbegin_count)) in reiserfs_delete_inode()
68 remove_save_link(inode, 0 /* not truncate */ ); /* we can't do anything in reiserfs_delete_inode()
75 clear_inode(inode); /* note this must go after the journal_end to prevent deadlock */ in reiserfs_delete_inode()
76 inode->i_blocks = 0; in reiserfs_delete_inode()
77 reiserfs_write_unlock(inode->i_sb); in reiserfs_delete_inode()
94 void make_cpu_key(struct cpu_key *key, struct inode *inode, loff_t offset, in make_cpu_key() argument
97 _make_cpu_key(key, get_inode_item_key_version(inode), in make_cpu_key()
98 le32_to_cpu(INODE_PKEY(inode)->k_dir_id), in make_cpu_key()
99 le32_to_cpu(INODE_PKEY(inode)->k_objectid), offset, type, in make_cpu_key()
195 b_blocknr_t block, struct inode *inode) in set_block_dev_mapped() argument
197 map_bh(bh, inode->i_sb, block); in set_block_dev_mapped()
204 static int file_capable(struct inode *inode, sector_t block) in file_capable() argument
206 if (get_inode_item_key_version(inode) != KEY_FORMAT_3_5 || // it is new file. in file_capable()
207 block < (1 << (31 - inode->i_sb->s_blocksize_bits))) // old file, but 'block' is inside of 2gb in file_capable()
214 struct inode *inode, struct treepath *path) in restart_transaction() argument
229 reiserfs_update_sd(th, inode); in restart_transaction()
234 reiserfs_update_inode_transaction(inode); in restart_transaction()
247 static int _get_block_create_0(struct inode *inode, sector_t block, in _get_block_create_0() argument
264 make_cpu_key(&key, inode, in _get_block_create_0()
265 (loff_t) block * inode->i_sb->s_blocksize + 1, TYPE_ANY, in _get_block_create_0()
269 result = search_for_position_by_key(inode->i_sb, &key, &path); in _get_block_create_0()
296 map_bh(bh_result, inode->i_sb, blocknr); in _get_block_create_0()
343 fs_gen = get_generation(inode->i_sb); in _get_block_create_0()
353 if (fs_changed(fs_gen, inode->i_sb) in _get_block_create_0()
359 memset(p, 0, inode->i_sb->s_blocksize); in _get_block_create_0()
369 if ((le_ih_k_offset(ih) + path.pos_in_item) > inode->i_size) in _get_block_create_0()
371 if ((le_ih_k_offset(ih) - 1 + ih_item_len(ih)) > inode->i_size) { in _get_block_create_0()
373 inode->i_size - (le_ih_k_offset(ih) - 1) - in _get_block_create_0()
395 result = search_for_position_by_key(inode->i_sb, &key, &path); in _get_block_create_0()
415 map_bh(bh_result, inode->i_sb, 0); in _get_block_create_0()
422 static int reiserfs_bmap(struct inode *inode, sector_t block, in reiserfs_bmap() argument
425 if (!file_capable(inode, block)) in reiserfs_bmap()
428 reiserfs_write_lock(inode->i_sb); in reiserfs_bmap()
430 _get_block_create_0(inode, block, bh_result, 0); in reiserfs_bmap()
431 reiserfs_write_unlock(inode->i_sb); in reiserfs_bmap()
452 static int reiserfs_get_block_create_0(struct inode *inode, sector_t block, in reiserfs_get_block_create_0() argument
456 return reiserfs_get_block(inode, block, bh_result, GET_BLOCK_NO_HOLE); in reiserfs_get_block_create_0()
461 static int reiserfs_get_blocks_direct_io(struct inode *inode, in reiserfs_get_blocks_direct_io() argument
473 bh_result->b_size = (1 << inode->i_blkbits); in reiserfs_get_blocks_direct_io()
475 ret = reiserfs_get_block(inode, iblock, bh_result, in reiserfs_get_blocks_direct_io()
490 if (REISERFS_I(inode)->i_flags & i_pack_on_close_mask) { in reiserfs_get_blocks_direct_io()
493 err = reiserfs_commit_for_inode(inode); in reiserfs_get_blocks_direct_io()
494 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask; in reiserfs_get_blocks_direct_io()
513 static int convert_tail_for_hole(struct inode *inode, in convert_tail_for_hole() argument
536 tail_page = grab_cache_page(inode->i_mapping, index); in convert_tail_for_hole()
575 struct inode *inode, in _allocate_block() argument
583 return reiserfs_new_unf_blocknrs2(th, inode, allocated_block_nr, in _allocate_block()
587 return reiserfs_new_unf_blocknrs(th, inode, allocated_block_nr, path, in _allocate_block()
591 int reiserfs_get_block(struct inode *inode, sector_t block, in reiserfs_get_block() argument
613 2 * REISERFS_QUOTA_TRANS_BLOCKS(inode->i_sb); in reiserfs_get_block()
617 (((loff_t) block) << inode->i_sb->s_blocksize_bits) + 1; in reiserfs_get_block()
620 reiserfs_write_lock(inode->i_sb); in reiserfs_get_block()
621 version = get_inode_item_key_version(inode); in reiserfs_get_block()
623 if (!file_capable(inode, block)) { in reiserfs_get_block()
624 reiserfs_write_unlock(inode->i_sb); in reiserfs_get_block()
634 ret = _get_block_create_0(inode, block, bh_result, in reiserfs_get_block()
636 reiserfs_write_unlock(inode->i_sb); in reiserfs_get_block()
644 reiserfs_transaction_running(inode->i_sb)) in reiserfs_get_block()
650 if ((have_large_tails(inode->i_sb) in reiserfs_get_block()
651 && inode->i_size < i_block_size(inode) * 4) in reiserfs_get_block()
652 || (have_small_tails(inode->i_sb) in reiserfs_get_block()
653 && inode->i_size < i_block_size(inode))) in reiserfs_get_block()
654 REISERFS_I(inode)->i_flags |= i_pack_on_close_mask; in reiserfs_get_block()
657 make_cpu_key(&key, inode, new_offset, TYPE_ANY, 3 /*key length */ ); in reiserfs_get_block()
658 if ((new_offset + inode->i_sb->s_blocksize - 1) > inode->i_size) { in reiserfs_get_block()
660 th = reiserfs_persistent_transaction(inode->i_sb, jbegin_count); in reiserfs_get_block()
665 reiserfs_update_inode_transaction(inode); in reiserfs_get_block()
669 retval = search_for_position_by_key(inode->i_sb, &key, &path); in reiserfs_get_block()
680 fs_gen = get_generation(inode->i_sb); in reiserfs_get_block()
692 _allocate_block(th, block, inode, &allocated_block_nr, in reiserfs_get_block()
700 SB_JOURNAL(inode->i_sb)->j_next_async_flush = 1; in reiserfs_get_block()
701 retval = restart_transaction(th, inode, &path); in reiserfs_get_block()
705 _allocate_block(th, block, inode, in reiserfs_get_block()
718 if (fs_changed(fs_gen, inode->i_sb) in reiserfs_get_block()
732 reiserfs_prepare_for_journal(inode->i_sb, bh, 1); in reiserfs_get_block()
733 if (fs_changed(fs_gen, inode->i_sb) in reiserfs_get_block()
735 reiserfs_restore_prepared_buffer(inode->i_sb, in reiserfs_get_block()
741 && reiserfs_data_ordered(inode->i_sb)) in reiserfs_get_block()
742 reiserfs_add_ordered_list(inode, bh_result); in reiserfs_get_block()
745 journal_mark_dirty(th, inode->i_sb, bh); in reiserfs_get_block()
746 reiserfs_update_sd(th, inode); in reiserfs_get_block()
748 set_block_dev_mapped(bh_result, unfm_ptr, inode); in reiserfs_get_block()
754 reiserfs_write_unlock(inode->i_sb); in reiserfs_get_block()
787 allocated_block_nr, inode); in reiserfs_get_block()
797 inode, (char *)&unp); in reiserfs_get_block()
799 reiserfs_free_block(th, inode, in reiserfs_get_block()
810 1) & ~(inode->i_sb->s_blocksize - 1)) + 1; in reiserfs_get_block()
816 allocated_block_nr, inode); in reiserfs_get_block()
840 convert_tail_for_hole(inode, bh_result, in reiserfs_get_block()
844 reiserfs_warning(inode->i_sb, in reiserfs_get_block()
846 inode->i_ino, in reiserfs_get_block()
851 th = reiserfs_persistent_transaction(inode->i_sb, 3); in reiserfs_get_block()
854 inode, in reiserfs_get_block()
863 direct2indirect(th, inode, &path, unbh, in reiserfs_get_block()
867 reiserfs_free_block(th, inode, in reiserfs_get_block()
888 reiserfs_add_tail_list(inode, unbh); in reiserfs_get_block()
910 MAX_ITEM_LEN(inode->i_sb->s_blocksize) / in reiserfs_get_block()
917 make_cpu_key(&tmp_key, inode, in reiserfs_get_block()
921 inode->i_sb->s_blocksize), in reiserfs_get_block()
930 cpu_key_k_offset(&tmp_key)) >> inode->i_sb-> in reiserfs_get_block()
949 allocated_block_nr, inode); in reiserfs_get_block()
960 reiserfs_paste_into_item(th, &path, &tmp_key, inode, in reiserfs_get_block()
969 reiserfs_free_block(th, inode, in reiserfs_get_block()
977 inode->i_size += in reiserfs_get_block()
978 inode->i_sb->s_blocksize * blocks_needed; in reiserfs_get_block()
994 retval = restart_transaction(th, inode, &path); in reiserfs_get_block()
1003 retval = search_for_position_by_key(inode->i_sb, &key, &path); in reiserfs_get_block()
1009 reiserfs_warning(inode->i_sb, in reiserfs_get_block()
1014 reiserfs_free_block(th, inode, in reiserfs_get_block()
1031 reiserfs_update_sd(th, inode); in reiserfs_get_block()
1037 reiserfs_write_unlock(inode->i_sb); in reiserfs_get_block()
1052 static int real_space_diff(struct inode *inode, int sd_size) in real_space_diff() argument
1055 loff_t blocksize = inode->i_sb->s_blocksize; in real_space_diff()
1057 if (S_ISLNK(inode->i_mode) || S_ISDIR(inode->i_mode)) in real_space_diff()
1069 ((inode->i_size + in real_space_diff()
1070 (blocksize - 1)) >> inode->i_sb->s_blocksize_bits) * UNFM_P_SIZE + in real_space_diff()
1075 static inline loff_t to_real_used_space(struct inode *inode, ulong blocks, in to_real_used_space() argument
1078 if (S_ISLNK(inode->i_mode) || S_ISDIR(inode->i_mode)) { in to_real_used_space()
1079 return inode->i_size + in to_real_used_space()
1080 (loff_t) (real_space_diff(inode, sd_size)); in to_real_used_space()
1082 return ((loff_t) real_space_diff(inode, sd_size)) + in to_real_used_space()
1087 static inline ulong to_fake_used_blocks(struct inode *inode, int sd_size) in to_fake_used_blocks() argument
1089 loff_t bytes = inode_get_bytes(inode); in to_fake_used_blocks()
1090 loff_t real_space = real_space_diff(inode, sd_size); in to_fake_used_blocks()
1093 if (S_ISLNK(inode->i_mode) || S_ISDIR(inode->i_mode)) { in to_fake_used_blocks()
1114 static void init_inode(struct inode *inode, struct treepath *path) in init_inode() argument
1124 copy_key(INODE_PKEY(inode), &(ih->ih_key)); in init_inode()
1126 INIT_LIST_HEAD(&(REISERFS_I(inode)->i_prealloc_list)); in init_inode()
1127 REISERFS_I(inode)->i_flags = 0; in init_inode()
1128 REISERFS_I(inode)->i_prealloc_block = 0; in init_inode()
1129 REISERFS_I(inode)->i_prealloc_count = 0; in init_inode()
1130 REISERFS_I(inode)->i_trans_id = 0; in init_inode()
1131 REISERFS_I(inode)->i_jl = NULL; in init_inode()
1132 mutex_init(&(REISERFS_I(inode)->i_mmap)); in init_inode()
1133 reiserfs_init_acl_access(inode); in init_inode()
1134 reiserfs_init_acl_default(inode); in init_inode()
1135 reiserfs_init_xattr_rwsem(inode); in init_inode()
1142 set_inode_item_key_version(inode, KEY_FORMAT_3_5); in init_inode()
1143 set_inode_sd_version(inode, STAT_DATA_V1); in init_inode()
1144 inode->i_mode = sd_v1_mode(sd); in init_inode()
1145 inode->i_nlink = sd_v1_nlink(sd); in init_inode()
1146 inode->i_uid = sd_v1_uid(sd); in init_inode()
1147 inode->i_gid = sd_v1_gid(sd); in init_inode()
1148 inode->i_size = sd_v1_size(sd); in init_inode()
1149 inode->i_atime.tv_sec = sd_v1_atime(sd); in init_inode()
1150 inode->i_mtime.tv_sec = sd_v1_mtime(sd); in init_inode()
1151 inode->i_ctime.tv_sec = sd_v1_ctime(sd); in init_inode()
1152 inode->i_atime.tv_nsec = 0; in init_inode()
1153 inode->i_ctime.tv_nsec = 0; in init_inode()
1154 inode->i_mtime.tv_nsec = 0; in init_inode()
1156 inode->i_blocks = sd_v1_blocks(sd); in init_inode()
1157 inode->i_generation = le32_to_cpu(INODE_PKEY(inode)->k_dir_id); in init_inode()
1158 blocks = (inode->i_size + 511) >> 9; in init_inode()
1159 blocks = _ROUND_UP(blocks, inode->i_sb->s_blocksize >> 9); in init_inode()
1160 if (inode->i_blocks > blocks) { in init_inode()
1166 inode->i_blocks = blocks; in init_inode()
1170 REISERFS_I(inode)->i_first_direct_byte = in init_inode()
1175 if (inode->i_blocks & 1) { in init_inode()
1176 inode->i_blocks++; in init_inode()
1178 inode_set_bytes(inode, in init_inode()
1179 to_real_used_space(inode, inode->i_blocks, in init_inode()
1183 REISERFS_I(inode)->i_flags &= ~i_nopack_mask; in init_inode()
1189 inode->i_mode = sd_v2_mode(sd); in init_inode()
1190 inode->i_nlink = sd_v2_nlink(sd); in init_inode()
1191 inode->i_uid = sd_v2_uid(sd); in init_inode()
1192 inode->i_size = sd_v2_size(sd); in init_inode()
1193 inode->i_gid = sd_v2_gid(sd); in init_inode()
1194 inode->i_mtime.tv_sec = sd_v2_mtime(sd); in init_inode()
1195 inode->i_atime.tv_sec = sd_v2_atime(sd); in init_inode()
1196 inode->i_ctime.tv_sec = sd_v2_ctime(sd); in init_inode()
1197 inode->i_ctime.tv_nsec = 0; in init_inode()
1198 inode->i_mtime.tv_nsec = 0; in init_inode()
1199 inode->i_atime.tv_nsec = 0; in init_inode()
1200 inode->i_blocks = sd_v2_blocks(sd); in init_inode()
1202 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in init_inode()
1203 inode->i_generation = in init_inode()
1204 le32_to_cpu(INODE_PKEY(inode)->k_dir_id); in init_inode()
1206 inode->i_generation = sd_v2_generation(sd); in init_inode()
1208 if (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode)) in init_inode()
1209 set_inode_item_key_version(inode, KEY_FORMAT_3_5); in init_inode()
1211 set_inode_item_key_version(inode, KEY_FORMAT_3_6); in init_inode()
1212 REISERFS_I(inode)->i_first_direct_byte = 0; in init_inode()
1213 set_inode_sd_version(inode, STAT_DATA_V2); in init_inode()
1214 inode_set_bytes(inode, in init_inode()
1215 to_real_used_space(inode, inode->i_blocks, in init_inode()
1219 REISERFS_I(inode)->i_attrs = sd_v2_attrs(sd); in init_inode()
1220 sd_attrs_to_i_attrs(sd_v2_attrs(sd), inode); in init_inode()
1224 if (S_ISREG(inode->i_mode)) { in init_inode()
1225 inode->i_op = &reiserfs_file_inode_operations; in init_inode()
1226 inode->i_fop = &reiserfs_file_operations; in init_inode()
1227 inode->i_mapping->a_ops = &reiserfs_address_space_operations; in init_inode()
1228 } else if (S_ISDIR(inode->i_mode)) { in init_inode()
1229 inode->i_op = &reiserfs_dir_inode_operations; in init_inode()
1230 inode->i_fop = &reiserfs_dir_operations; in init_inode()
1231 } else if (S_ISLNK(inode->i_mode)) { in init_inode()
1232 inode->i_op = &reiserfs_symlink_inode_operations; in init_inode()
1233 inode->i_mapping->a_ops = &reiserfs_address_space_operations; in init_inode()
1235 inode->i_blocks = 0; in init_inode()
1236 inode->i_op = &reiserfs_special_inode_operations; in init_inode()
1237 init_special_inode(inode, inode->i_mode, new_decode_dev(rdev)); in init_inode()
1242 static void inode2sd(void *sd, struct inode *inode, loff_t size) in inode2sd() argument
1247 set_sd_v2_mode(sd_v2, inode->i_mode); in inode2sd()
1248 set_sd_v2_nlink(sd_v2, inode->i_nlink); in inode2sd()
1249 set_sd_v2_uid(sd_v2, inode->i_uid); in inode2sd()
1251 set_sd_v2_gid(sd_v2, inode->i_gid); in inode2sd()
1252 set_sd_v2_mtime(sd_v2, inode->i_mtime.tv_sec); in inode2sd()
1253 set_sd_v2_atime(sd_v2, inode->i_atime.tv_sec); in inode2sd()
1254 set_sd_v2_ctime(sd_v2, inode->i_ctime.tv_sec); in inode2sd()
1255 set_sd_v2_blocks(sd_v2, to_fake_used_blocks(inode, SD_V2_SIZE)); in inode2sd()
1256 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in inode2sd()
1257 set_sd_v2_rdev(sd_v2, new_encode_dev(inode->i_rdev)); in inode2sd()
1259 set_sd_v2_generation(sd_v2, inode->i_generation); in inode2sd()
1260 flags = REISERFS_I(inode)->i_attrs; in inode2sd()
1261 i_attrs_to_sd_attrs(inode, &flags); in inode2sd()
1266 static void inode2sd_v1(void *sd, struct inode *inode, loff_t size) in inode2sd_v1() argument
1270 set_sd_v1_mode(sd_v1, inode->i_mode); in inode2sd_v1()
1271 set_sd_v1_uid(sd_v1, inode->i_uid); in inode2sd_v1()
1272 set_sd_v1_gid(sd_v1, inode->i_gid); in inode2sd_v1()
1273 set_sd_v1_nlink(sd_v1, inode->i_nlink); in inode2sd_v1()
1275 set_sd_v1_atime(sd_v1, inode->i_atime.tv_sec); in inode2sd_v1()
1276 set_sd_v1_ctime(sd_v1, inode->i_ctime.tv_sec); in inode2sd_v1()
1277 set_sd_v1_mtime(sd_v1, inode->i_mtime.tv_sec); in inode2sd_v1()
1279 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) in inode2sd_v1()
1280 set_sd_v1_rdev(sd_v1, new_encode_dev(inode->i_rdev)); in inode2sd_v1()
1282 set_sd_v1_blocks(sd_v1, to_fake_used_blocks(inode, SD_V1_SIZE)); in inode2sd_v1()
1286 REISERFS_I(inode)->i_first_direct_byte); in inode2sd_v1()
1292 static void update_stat_data(struct treepath *path, struct inode *inode, in update_stat_data() argument
1302 reiserfs_panic(inode->i_sb, in update_stat_data()
1304 INODE_PKEY(inode), ih); in update_stat_data()
1308 inode2sd_v1(B_I_PITEM(bh, ih), inode, size); in update_stat_data()
1310 inode2sd(B_I_PITEM(bh, ih), inode, size); in update_stat_data()
1317 struct inode *inode, loff_t size) in reiserfs_update_sd_size() argument
1328 make_cpu_key(&key, inode, SD_OFFSET, TYPE_STAT_DATA, 3); //key type is unimportant in reiserfs_update_sd_size()
1333 retval = search_item(inode->i_sb, &key, &path); in reiserfs_update_sd_size()
1335 reiserfs_warning(inode->i_sb, in reiserfs_update_sd_size()
1344 if (inode->i_nlink == 0) { in reiserfs_update_sd_size()
1348 reiserfs_warning(inode->i_sb, in reiserfs_update_sd_size()
1351 INODE_PKEY(inode), inode->i_nlink, in reiserfs_update_sd_size()
1364 fs_gen = get_generation(inode->i_sb); in reiserfs_update_sd_size()
1365 reiserfs_prepare_for_journal(inode->i_sb, bh, 1); in reiserfs_update_sd_size()
1366 if (fs_changed(fs_gen, inode->i_sb) in reiserfs_update_sd_size()
1368 reiserfs_restore_prepared_buffer(inode->i_sb, bh); in reiserfs_update_sd_size()
1373 update_stat_data(&path, inode, size); in reiserfs_update_sd_size()
1385 static void reiserfs_make_bad_inode(struct inode *inode) in reiserfs_make_bad_inode() argument
1387 memset(INODE_PKEY(inode), 0, KEY_SIZE); in reiserfs_make_bad_inode()
1388 make_bad_inode(inode); in reiserfs_make_bad_inode()
1396 int reiserfs_init_locked_inode(struct inode *inode, void *p) in reiserfs_init_locked_inode() argument
1399 inode->i_ino = args->objectid; in reiserfs_init_locked_inode()
1400 INODE_PKEY(inode)->k_dir_id = cpu_to_le32(args->dirid); in reiserfs_init_locked_inode()
1406 void reiserfs_read_locked_inode(struct inode *inode, in reiserfs_read_locked_inode() argument
1420 key.on_disk_key.k_objectid = inode->i_ino; in reiserfs_read_locked_inode()
1425 retval = search_item(inode->i_sb, &key, &path_to_sd); in reiserfs_read_locked_inode()
1427 reiserfs_warning(inode->i_sb, in reiserfs_read_locked_inode()
1431 reiserfs_make_bad_inode(inode); in reiserfs_read_locked_inode()
1437 reiserfs_make_bad_inode(inode); in reiserfs_read_locked_inode()
1438 inode->i_nlink = 0; in reiserfs_read_locked_inode()
1442 init_inode(inode, &path_to_sd); in reiserfs_read_locked_inode()
1458 if ((inode->i_nlink == 0) && in reiserfs_read_locked_inode()
1459 !REISERFS_SB(inode->i_sb)->s_is_unlinked_ok) { in reiserfs_read_locked_inode()
1460 reiserfs_warning(inode->i_sb, in reiserfs_read_locked_inode()
1465 reiserfs_make_bad_inode(inode); in reiserfs_read_locked_inode()
1484 int reiserfs_find_actor(struct inode *inode, void *opaque) in reiserfs_find_actor() argument
1490 return (inode->i_ino == args->objectid) && in reiserfs_find_actor()
1491 (le32_to_cpu(INODE_PKEY(inode)->k_dir_id) == args->dirid); in reiserfs_find_actor()
1494 struct inode *reiserfs_iget(struct super_block *s, const struct cpu_key *key) in reiserfs_iget()
1496 struct inode *inode; in reiserfs_iget() local
1501 inode = iget5_locked(s, key->on_disk_key.k_objectid, in reiserfs_iget()
1504 if (!inode) in reiserfs_iget()
1507 if (inode->i_state & I_NEW) { in reiserfs_iget()
1508 reiserfs_read_locked_inode(inode, &args); in reiserfs_iget()
1509 unlock_new_inode(inode); in reiserfs_iget()
1512 if (comp_short_keys(INODE_PKEY(inode), key) || is_bad_inode(inode)) { in reiserfs_iget()
1514 iput(inode); in reiserfs_iget()
1515 inode = NULL; in reiserfs_iget()
1517 return inode; in reiserfs_iget()
1525 struct inode *inode; in reiserfs_get_dentry() local
1530 inode = reiserfs_iget(sb, &key); in reiserfs_get_dentry()
1531 if (inode && !IS_ERR(inode) && generation != 0 && in reiserfs_get_dentry()
1532 generation != inode->i_generation) { in reiserfs_get_dentry()
1533 iput(inode); in reiserfs_get_dentry()
1534 inode = NULL; in reiserfs_get_dentry()
1538 return d_obtain_alias(inode); in reiserfs_get_dentry()
1583 struct inode *inode = dentry->d_inode; in reiserfs_encode_fh() local
1589 data[0] = inode->i_ino; in reiserfs_encode_fh()
1590 data[1] = le32_to_cpu(INODE_PKEY(inode)->k_dir_id); in reiserfs_encode_fh()
1591 data[2] = inode->i_generation; in reiserfs_encode_fh()
1598 inode = dentry->d_parent->d_inode; in reiserfs_encode_fh()
1599 data[3] = inode->i_ino; in reiserfs_encode_fh()
1600 data[4] = le32_to_cpu(INODE_PKEY(inode)->k_dir_id); in reiserfs_encode_fh()
1603 data[5] = inode->i_generation; in reiserfs_encode_fh()
1617 int reiserfs_write_inode(struct inode *inode, int do_sync) in reiserfs_write_inode() argument
1622 if (inode->i_sb->s_flags & MS_RDONLY) in reiserfs_write_inode()
1630 reiserfs_write_lock(inode->i_sb); in reiserfs_write_inode()
1631 if (!journal_begin(&th, inode->i_sb, jbegin_count)) { in reiserfs_write_inode()
1632 reiserfs_update_sd(&th, inode); in reiserfs_write_inode()
1633 journal_end_sync(&th, inode->i_sb, jbegin_count); in reiserfs_write_inode()
1635 reiserfs_write_unlock(inode->i_sb); in reiserfs_write_inode()
1643 struct inode *inode, in reiserfs_new_directory() argument
1645 struct inode *dir) in reiserfs_new_directory()
1696 return reiserfs_insert_item(th, path, &key, ih, inode, body); in reiserfs_new_directory()
1701 static int reiserfs_new_symlink(struct reiserfs_transaction_handle *th, struct inode *inode, /* Ino… in reiserfs_new_symlink() argument
1736 return reiserfs_insert_item(th, path, &key, ih, inode, symname); in reiserfs_new_symlink()
1749 struct inode *dir, int mode, const char *symname, in reiserfs_new_inode()
1753 struct inode *inode) in reiserfs_new_inode() argument
1766 if (DQUOT_ALLOC_INODE(inode)) { in reiserfs_new_inode()
1784 args.objectid = inode->i_ino = le32_to_cpu(ih.ih_key.k_objectid); in reiserfs_new_inode()
1791 memcpy(INODE_PKEY(inode), &(ih.ih_key), KEY_SIZE); in reiserfs_new_inode()
1793 if (insert_inode_locked4(inode, args.objectid, in reiserfs_new_inode()
1804 inode->i_generation = le32_to_cpu(INODE_PKEY(dir)->k_objectid); in reiserfs_new_inode()
1807 inode->i_generation = in reiserfs_new_inode()
1810 inode->i_generation = ++event; in reiserfs_new_inode()
1814 inode->i_nlink = (S_ISDIR(mode) ? 2 : 1); in reiserfs_new_inode()
1819 if (S_ISLNK(inode->i_mode)) in reiserfs_new_inode()
1820 inode->i_flags &= ~(S_IMMUTABLE | S_APPEND); in reiserfs_new_inode()
1822 inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC; in reiserfs_new_inode()
1823 inode->i_size = i_size; in reiserfs_new_inode()
1824 inode->i_blocks = 0; in reiserfs_new_inode()
1825 inode->i_bytes = 0; in reiserfs_new_inode()
1826 REISERFS_I(inode)->i_first_direct_byte = S_ISLNK(mode) ? 1 : in reiserfs_new_inode()
1829 INIT_LIST_HEAD(&(REISERFS_I(inode)->i_prealloc_list)); in reiserfs_new_inode()
1830 REISERFS_I(inode)->i_flags = 0; in reiserfs_new_inode()
1831 REISERFS_I(inode)->i_prealloc_block = 0; in reiserfs_new_inode()
1832 REISERFS_I(inode)->i_prealloc_count = 0; in reiserfs_new_inode()
1833 REISERFS_I(inode)->i_trans_id = 0; in reiserfs_new_inode()
1834 REISERFS_I(inode)->i_jl = NULL; in reiserfs_new_inode()
1835 REISERFS_I(inode)->i_attrs = in reiserfs_new_inode()
1837 sd_attrs_to_i_attrs(REISERFS_I(inode)->i_attrs, inode); in reiserfs_new_inode()
1838 mutex_init(&(REISERFS_I(inode)->i_mmap)); in reiserfs_new_inode()
1839 reiserfs_init_acl_access(inode); in reiserfs_new_inode()
1840 reiserfs_init_acl_default(inode); in reiserfs_new_inode()
1841 reiserfs_init_xattr_rwsem(inode); in reiserfs_new_inode()
1860 if (inode->i_uid & ~0xffff || inode->i_gid & ~0xffff) { in reiserfs_new_inode()
1866 inode2sd_v1(&sd, inode, inode->i_size); in reiserfs_new_inode()
1868 inode2sd(&sd, inode, inode->i_size); in reiserfs_new_inode()
1874 set_inode_item_key_version(inode, KEY_FORMAT_3_5); in reiserfs_new_inode()
1876 set_inode_item_key_version(inode, KEY_FORMAT_3_6); in reiserfs_new_inode()
1878 set_inode_sd_version(inode, STAT_DATA_V1); in reiserfs_new_inode()
1880 set_inode_sd_version(inode, STAT_DATA_V2); in reiserfs_new_inode()
1888 reiserfs_insert_item(th, &path_to_key, &key, &ih, inode, in reiserfs_new_inode()
1902 reiserfs_new_directory(th, inode, &ih, &path_to_key, dir); in reiserfs_new_inode()
1910 reiserfs_new_symlink(th, inode, &ih, &path_to_key, symname, in reiserfs_new_inode()
1921 if (reiserfs_posixacl(inode->i_sb)) { in reiserfs_new_inode()
1922 retval = reiserfs_inherit_default_acl(dir, dentry, inode); in reiserfs_new_inode()
1929 } else if (inode->i_sb->s_flags & MS_POSIXACL) { in reiserfs_new_inode()
1930 reiserfs_warning(inode->i_sb, "ACLs aren't enabled in the fs, " in reiserfs_new_inode()
1933 reiserfs_mark_inode_private(inode); in reiserfs_new_inode()
1936 reiserfs_update_sd(th, inode); in reiserfs_new_inode()
1947 INODE_PKEY(inode)->k_objectid = 0; in reiserfs_new_inode()
1950 DQUOT_FREE_INODE(inode); in reiserfs_new_inode()
1955 DQUOT_DROP(inode); in reiserfs_new_inode()
1956 inode->i_flags |= S_NOQUOTA; in reiserfs_new_inode()
1957 make_bad_inode(inode); in reiserfs_new_inode()
1960 inode->i_nlink = 0; in reiserfs_new_inode()
1962 unlock_new_inode(inode); /* OK to do even if we hadn't locked it */ in reiserfs_new_inode()
1971 iput(inode); in reiserfs_new_inode()
1975 iput(inode); in reiserfs_new_inode()
1992 static int grab_tail_page(struct inode *p_s_inode, in grab_tail_page()
2072 int reiserfs_truncate_file(struct inode *p_s_inode, int update_timestamps) in reiserfs_truncate_file()
2163 static int map_block_for_writepage(struct inode *inode, in map_block_for_writepage() argument
2177 loff_t byte_offset = ((loff_t)block << inode->i_sb->s_blocksize_bits)+1; in map_block_for_writepage()
2193 reiserfs_write_lock(inode->i_sb); in map_block_for_writepage()
2194 make_cpu_key(&key, inode, byte_offset, TYPE_ANY, 3); in map_block_for_writepage()
2197 retval = search_for_position_by_key(inode->i_sb, &key, &path); in map_block_for_writepage()
2211 reiserfs_warning(inode->i_sb, in map_block_for_writepage()
2221 get_block_num(item, pos_in_item), inode); in map_block_for_writepage()
2228 fs_gen = get_generation(inode->i_sb); in map_block_for_writepage()
2233 retval = journal_begin(&th, inode->i_sb, jbegin_count); in map_block_for_writepage()
2236 reiserfs_update_inode_transaction(inode); in map_block_for_writepage()
2238 if (fs_changed(fs_gen, inode->i_sb) in map_block_for_writepage()
2240 reiserfs_restore_prepared_buffer(inode->i_sb, in map_block_for_writepage()
2246 reiserfs_prepare_for_journal(inode->i_sb, bh, 1); in map_block_for_writepage()
2248 if (fs_changed(fs_gen, inode->i_sb) in map_block_for_writepage()
2250 reiserfs_restore_prepared_buffer(inode->i_sb, bh); in map_block_for_writepage()
2257 journal_mark_dirty(&th, inode->i_sb, bh); in map_block_for_writepage()
2259 set_block_dev_mapped(bh_result, 0, inode); in map_block_for_writepage()
2263 (byte_offset + bytes_copied) < inode->i_size) { in map_block_for_writepage()
2270 reiserfs_warning(inode->i_sb, in map_block_for_writepage()
2272 inode->i_ino, reiserfs_bdevname(inode->i_sb)); in map_block_for_writepage()
2281 int err = journal_end(&th, inode->i_sb, jbegin_count); in map_block_for_writepage()
2286 reiserfs_write_unlock(inode->i_sb); in map_block_for_writepage()
2290 retval = reiserfs_get_block(inode, block, bh_result, in map_block_for_writepage()
2323 struct inode *inode = page->mapping->host; in reiserfs_write_full_page() local
2324 unsigned long end_index = inode->i_size >> PAGE_CACHE_SHIFT; in reiserfs_write_full_page()
2333 struct super_block *s = inode->i_sb; in reiserfs_write_full_page()
2361 last_offset = inode->i_size & (PAGE_CACHE_SIZE - 1); in reiserfs_write_full_page()
2371 last_block = (i_size_read(inode) - 1) >> inode->i_blkbits; in reiserfs_write_full_page()
2390 if ((error = map_block_for_writepage(inode, bh, block))) { in reiserfs_write_full_page()
2412 reiserfs_update_inode_transaction(inode); in reiserfs_write_full_page()
2538 struct inode *inode = page->mapping->host; in reiserfs_writepage() local
2539 reiserfs_wait_on_write_block(inode->i_sb); in reiserfs_writepage()
2548 struct inode *inode; in reiserfs_write_begin() local
2554 inode = mapping->host; in reiserfs_write_begin()
2557 (pos & (inode->i_sb->s_blocksize - 1)) == 0) { in reiserfs_write_begin()
2568 reiserfs_wait_on_write_block(inode->i_sb); in reiserfs_write_begin()
2570 if (reiserfs_transaction_running(inode->i_sb)) { in reiserfs_write_begin()
2581 if (ret && reiserfs_transaction_running(inode->i_sb)) { in reiserfs_write_begin()
2598 reiserfs_write_lock(inode->i_sb); in reiserfs_write_begin()
2600 reiserfs_write_unlock(inode->i_sb); in reiserfs_write_begin()
2616 struct inode *inode = page->mapping->host; in reiserfs_prepare_write() local
2620 reiserfs_wait_on_write_block(inode->i_sb); in reiserfs_prepare_write()
2622 if (reiserfs_transaction_running(inode->i_sb)) { in reiserfs_prepare_write()
2633 if (ret && reiserfs_transaction_running(inode->i_sb)) { in reiserfs_prepare_write()
2650 reiserfs_write_lock(inode->i_sb); in reiserfs_prepare_write()
2652 reiserfs_write_unlock(inode->i_sb); in reiserfs_prepare_write()
2671 struct inode *inode = page->mapping->host; in reiserfs_write_end() local
2680 reiserfs_wait_on_write_block(inode->i_sb); in reiserfs_write_end()
2681 if (reiserfs_transaction_running(inode->i_sb)) in reiserfs_write_end()
2695 reiserfs_commit_page(inode, page, start, start + copied); in reiserfs_write_end()
2702 if (pos > inode->i_size) { in reiserfs_write_end()
2704 reiserfs_write_lock(inode->i_sb); in reiserfs_write_end()
2708 if ((have_large_tails(inode->i_sb) in reiserfs_write_end()
2709 && inode->i_size > i_block_size(inode) * 4) in reiserfs_write_end()
2710 || (have_small_tails(inode->i_sb) in reiserfs_write_end()
2711 && inode->i_size > i_block_size(inode))) in reiserfs_write_end()
2712 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask; in reiserfs_write_end()
2714 ret = journal_begin(&myth, inode->i_sb, 1); in reiserfs_write_end()
2716 reiserfs_write_unlock(inode->i_sb); in reiserfs_write_end()
2719 reiserfs_update_inode_transaction(inode); in reiserfs_write_end()
2720 inode->i_size = pos; in reiserfs_write_end()
2726 mark_inode_dirty(inode); in reiserfs_write_end()
2727 reiserfs_update_sd(&myth, inode); in reiserfs_write_end()
2729 ret = journal_end(&myth, inode->i_sb, 1); in reiserfs_write_end()
2730 reiserfs_write_unlock(inode->i_sb); in reiserfs_write_end()
2735 reiserfs_write_lock(inode->i_sb); in reiserfs_write_end()
2737 mark_inode_dirty(inode); in reiserfs_write_end()
2739 reiserfs_write_unlock(inode->i_sb); in reiserfs_write_end()
2751 reiserfs_write_lock(inode->i_sb); in reiserfs_write_end()
2753 reiserfs_update_sd(th, inode); in reiserfs_write_end()
2755 reiserfs_write_unlock(inode->i_sb); in reiserfs_write_end()
2764 struct inode *inode = page->mapping->host; in reiserfs_commit_write() local
2770 reiserfs_wait_on_write_block(inode->i_sb); in reiserfs_commit_write()
2771 if (reiserfs_transaction_running(inode->i_sb)) { in reiserfs_commit_write()
2774 reiserfs_commit_page(inode, page, from, to); in reiserfs_commit_write()
2780 if (pos > inode->i_size) { in reiserfs_commit_write()
2782 reiserfs_write_lock(inode->i_sb); in reiserfs_commit_write()
2786 if ((have_large_tails(inode->i_sb) in reiserfs_commit_write()
2787 && inode->i_size > i_block_size(inode) * 4) in reiserfs_commit_write()
2788 || (have_small_tails(inode->i_sb) in reiserfs_commit_write()
2789 && inode->i_size > i_block_size(inode))) in reiserfs_commit_write()
2790 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask; in reiserfs_commit_write()
2792 ret = journal_begin(&myth, inode->i_sb, 1); in reiserfs_commit_write()
2794 reiserfs_write_unlock(inode->i_sb); in reiserfs_commit_write()
2797 reiserfs_update_inode_transaction(inode); in reiserfs_commit_write()
2798 inode->i_size = pos; in reiserfs_commit_write()
2804 mark_inode_dirty(inode); in reiserfs_commit_write()
2805 reiserfs_update_sd(&myth, inode); in reiserfs_commit_write()
2807 ret = journal_end(&myth, inode->i_sb, 1); in reiserfs_commit_write()
2808 reiserfs_write_unlock(inode->i_sb); in reiserfs_commit_write()
2813 reiserfs_write_lock(inode->i_sb); in reiserfs_commit_write()
2815 mark_inode_dirty(inode); in reiserfs_commit_write()
2817 reiserfs_write_unlock(inode->i_sb); in reiserfs_commit_write()
2827 reiserfs_write_lock(inode->i_sb); in reiserfs_commit_write()
2829 reiserfs_update_sd(th, inode); in reiserfs_commit_write()
2831 reiserfs_write_unlock(inode->i_sb); in reiserfs_commit_write()
2837 void sd_attrs_to_i_attrs(__u16 sd_attrs, struct inode *inode) in sd_attrs_to_i_attrs() argument
2839 if (reiserfs_attrs(inode->i_sb)) { in sd_attrs_to_i_attrs()
2841 inode->i_flags |= S_SYNC; in sd_attrs_to_i_attrs()
2843 inode->i_flags &= ~S_SYNC; in sd_attrs_to_i_attrs()
2845 inode->i_flags |= S_IMMUTABLE; in sd_attrs_to_i_attrs()
2847 inode->i_flags &= ~S_IMMUTABLE; in sd_attrs_to_i_attrs()
2849 inode->i_flags |= S_APPEND; in sd_attrs_to_i_attrs()
2851 inode->i_flags &= ~S_APPEND; in sd_attrs_to_i_attrs()
2853 inode->i_flags |= S_NOATIME; in sd_attrs_to_i_attrs()
2855 inode->i_flags &= ~S_NOATIME; in sd_attrs_to_i_attrs()
2857 REISERFS_I(inode)->i_flags |= i_nopack_mask; in sd_attrs_to_i_attrs()
2859 REISERFS_I(inode)->i_flags &= ~i_nopack_mask; in sd_attrs_to_i_attrs()
2863 void i_attrs_to_sd_attrs(struct inode *inode, __u16 * sd_attrs) in i_attrs_to_sd_attrs() argument
2865 if (reiserfs_attrs(inode->i_sb)) { in i_attrs_to_sd_attrs()
2866 if (inode->i_flags & S_IMMUTABLE) in i_attrs_to_sd_attrs()
2870 if (inode->i_flags & S_SYNC) in i_attrs_to_sd_attrs()
2874 if (inode->i_flags & S_NOATIME) in i_attrs_to_sd_attrs()
2878 if (REISERFS_I(inode)->i_flags & i_nopack_mask) in i_attrs_to_sd_attrs()
2888 static int invalidatepage_can_drop(struct inode *inode, struct buffer_head *bh) in invalidatepage_can_drop() argument
2891 struct reiserfs_journal *j = SB_JOURNAL(inode->i_sb); in invalidatepage_can_drop()
2901 if (reiserfs_file_data_log(inode)) { in invalidatepage_can_drop()
2927 && jl != SB_JOURNAL(inode->i_sb)->j_current_jl) in invalidatepage_can_drop()
2943 struct inode *inode = page->mapping->host; in reiserfs_invalidatepage() local
2965 if (invalidatepage_can_drop(inode, bh)) in reiserfs_invalidatepage()
2989 struct inode *inode = page->mapping->host; in reiserfs_set_page_dirty() local
2990 if (reiserfs_file_data_log(inode)) { in reiserfs_set_page_dirty()
3008 struct inode *inode = page->mapping->host; in reiserfs_releasepage() local
3009 struct reiserfs_journal *j = SB_JOURNAL(inode->i_sb); in reiserfs_releasepage()
3042 struct inode *inode = file->f_mapping->host; in reiserfs_direct_IO() local
3044 return blockdev_direct_IO(rw, iocb, inode, inode->i_sb->s_bdev, iov, in reiserfs_direct_IO()
3051 struct inode *inode = dentry->d_inode; in reiserfs_setattr() local
3058 reiserfs_write_lock(inode->i_sb); in reiserfs_setattr()
3063 if (get_inode_item_key_version(inode) == KEY_FORMAT_3_5 && in reiserfs_setattr()
3069 if (attr->ia_size > inode->i_size) { in reiserfs_setattr()
3070 error = generic_cont_expand_simple(inode, attr->ia_size); in reiserfs_setattr()
3071 if (REISERFS_I(inode)->i_prealloc_count > 0) { in reiserfs_setattr()
3075 err = journal_begin(&th, inode->i_sb, 4); in reiserfs_setattr()
3077 reiserfs_discard_prealloc(&th, inode); in reiserfs_setattr()
3078 err = journal_end(&th, inode->i_sb, 4); in reiserfs_setattr()
3095 (get_inode_sd_version(inode) == STAT_DATA_V1)) { in reiserfs_setattr()
3101 error = inode_change_ok(inode, attr); in reiserfs_setattr()
3103 if ((ia_valid & ATTR_UID && attr->ia_uid != inode->i_uid) || in reiserfs_setattr()
3104 (ia_valid & ATTR_GID && attr->ia_gid != inode->i_gid)) { in reiserfs_setattr()
3105 error = reiserfs_chown_xattrs(inode, attr); in reiserfs_setattr()
3111 (REISERFS_QUOTA_INIT_BLOCKS(inode->i_sb) + in reiserfs_setattr()
3112 REISERFS_QUOTA_DEL_BLOCKS(inode->i_sb)) + in reiserfs_setattr()
3117 journal_begin(&th, inode->i_sb, in reiserfs_setattr()
3122 DQUOT_TRANSFER(inode, attr) ? -EDQUOT : 0; in reiserfs_setattr()
3124 journal_end(&th, inode->i_sb, in reiserfs_setattr()
3131 inode->i_uid = attr->ia_uid; in reiserfs_setattr()
3133 inode->i_gid = attr->ia_gid; in reiserfs_setattr()
3134 mark_inode_dirty(inode); in reiserfs_setattr()
3136 journal_end(&th, inode->i_sb, jbegin_count); in reiserfs_setattr()
3140 error = inode_setattr(inode, attr); in reiserfs_setattr()
3143 if (!error && reiserfs_posixacl(inode->i_sb)) { in reiserfs_setattr()
3145 error = reiserfs_acl_chmod(inode); in reiserfs_setattr()
3149 reiserfs_write_unlock(inode->i_sb); in reiserfs_setattr()