Lines Matching refs:inode
27 void reiserfs_evict_inode(struct inode *inode)
35 2 * REISERFS_QUOTA_INIT_BLOCKS(inode->i_sb);
39 if (!inode->i_nlink && !is_bad_inode(inode))
40 dquot_initialize(inode);
42 truncate_inode_pages_final(&inode->i_data);
43 if (inode->i_nlink)
47 * The = 0 happens when we abort creating a new inode
51 if (!(inode->i_state & I_NEW) && INODE_PKEY(inode)->k_objectid != 0) {
53 reiserfs_delete_xattrs(inode);
55 reiserfs_write_lock(inode->i_sb);
57 if (journal_begin(&th, inode->i_sb, jbegin_count))
59 reiserfs_update_inode_transaction(inode);
61 reiserfs_discard_prealloc(&th, inode);
63 err = reiserfs_delete_object(&th, inode);
71 int depth = reiserfs_write_unlock_nested(inode->i_sb);
72 dquot_free_inode(inode);
73 reiserfs_write_lock_nested(inode->i_sb, depth);
91 remove_save_link(inode, 0 /* not truncate */);
93 reiserfs_write_unlock(inode->i_sb);
100 clear_inode(inode);
102 dquot_drop(inode);
103 inode->i_blocks = 0;
107 clear_inode(inode);
108 dquot_drop(inode);
124 * take base of inode_key (it comes from inode always) (dirid, objectid)
125 * and version from an inode, set offset and type of key
127 void make_cpu_key(struct cpu_key *key, struct inode *inode, loff_t offset,
130 _make_cpu_key(key, get_inode_item_key_version(inode),
131 le32_to_cpu(INODE_PKEY(inode)->k_dir_id),
132 le32_to_cpu(INODE_PKEY(inode)->k_objectid), offset, type,
163 * I don't want a bloated inode struct..., and I don't like code complexity....
232 b_blocknr_t block, struct inode *inode)
234 map_bh(bh, inode->i_sb, block);
241 static int file_capable(struct inode *inode, sector_t block)
244 if (get_inode_item_key_version(inode) != KEY_FORMAT_3_5 ||
246 block < (1 << (31 - inode->i_sb->s_blocksize_bits)))
253 struct inode *inode, struct treepath *path)
267 reiserfs_update_sd(th, inode);
272 reiserfs_update_inode_transaction(inode);
285 static int _get_block_create_0(struct inode *inode, sector_t block,
301 make_cpu_key(&key, inode,
302 (loff_t) block * inode->i_sb->s_blocksize + 1, TYPE_ANY,
305 result = search_for_position_by_key(inode->i_sb, &key, &path);
329 * the inode to avoid search_by_key in case of subsequent
335 map_bh(bh_result, inode->i_sb, blocknr);
395 memset(p, 0, inode->i_sb->s_blocksize);
406 if ((le_ih_k_offset(ih) + path.pos_in_item) > inode->i_size)
408 if ((le_ih_k_offset(ih) - 1 + ih_item_len(ih)) > inode->i_size) {
410 inode->i_size - (le_ih_k_offset(ih) - 1) -
434 result = search_for_position_by_key(inode->i_sb, &key, &path);
455 map_bh(bh_result, inode->i_sb, 0);
464 static int reiserfs_bmap(struct inode *inode, sector_t block,
467 if (!file_capable(inode, block))
470 reiserfs_write_lock(inode->i_sb);
472 _get_block_create_0(inode, block, bh_result, 0);
473 reiserfs_write_unlock(inode->i_sb);
495 static int reiserfs_get_block_create_0(struct inode *inode, sector_t block,
499 return reiserfs_get_block(inode, block, bh_result, GET_BLOCK_NO_HOLE);
506 static int reiserfs_get_blocks_direct_io(struct inode *inode,
520 bh_result->b_size = i_blocksize(inode);
522 ret = reiserfs_get_block(inode, iblock, bh_result,
541 if (REISERFS_I(inode)->i_flags & i_pack_on_close_mask) {
544 reiserfs_write_lock(inode->i_sb);
546 err = reiserfs_commit_for_inode(inode);
547 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask;
549 reiserfs_write_unlock(inode->i_sb);
568 static int convert_tail_for_hole(struct inode *inode,
592 tail_page = grab_cache_page(inode->i_mapping, index);
633 struct inode *inode,
641 return reiserfs_new_unf_blocknrs2(th, inode, allocated_block_nr,
645 return reiserfs_new_unf_blocknrs(th, inode, allocated_block_nr, path,
649 int reiserfs_get_block(struct inode *inode, sector_t block,
674 2 * REISERFS_QUOTA_TRANS_BLOCKS(inode->i_sb);
678 (((loff_t) block) << inode->i_sb->s_blocksize_bits) + 1;
680 reiserfs_write_lock(inode->i_sb);
681 version = get_inode_item_key_version(inode);
683 if (!file_capable(inode, block)) {
684 reiserfs_write_unlock(inode->i_sb);
695 ret = _get_block_create_0(inode, block, bh_result,
697 reiserfs_write_unlock(inode->i_sb);
706 reiserfs_transaction_running(inode->i_sb))
714 if ((have_large_tails(inode->i_sb)
715 && inode->i_size < i_block_size(inode) * 4)
716 || (have_small_tails(inode->i_sb)
717 && inode->i_size < i_block_size(inode)))
718 REISERFS_I(inode)->i_flags |= i_pack_on_close_mask;
721 make_cpu_key(&key, inode, new_offset, TYPE_ANY, 3 /*key length */ );
722 if ((new_offset + inode->i_sb->s_blocksize - 1) > inode->i_size) {
724 th = reiserfs_persistent_transaction(inode->i_sb, jbegin_count);
729 reiserfs_update_inode_transaction(inode);
733 retval = search_for_position_by_key(inode->i_sb, &key, &path);
744 fs_gen = get_generation(inode->i_sb);
756 _allocate_block(th, block, inode, &allocated_block_nr,
765 SB_JOURNAL(inode->i_sb)->j_next_async_flush = 1;
766 retval = restart_transaction(th, inode, &path);
770 _allocate_block(th, block, inode,
783 if (fs_changed(fs_gen, inode->i_sb)
799 reiserfs_prepare_for_journal(inode->i_sb, bh, 1);
800 if (fs_changed(fs_gen, inode->i_sb)
802 reiserfs_restore_prepared_buffer(inode->i_sb,
808 && reiserfs_data_ordered(inode->i_sb))
809 reiserfs_add_ordered_list(inode, bh_result);
813 reiserfs_update_sd(th, inode);
815 set_block_dev_mapped(bh_result, unfm_ptr, inode);
821 reiserfs_write_unlock(inode->i_sb);
825 * there is no need to make sure the inode is updated with this
859 allocated_block_nr, inode);
869 inode, (char *)&unp);
871 reiserfs_free_block(th, inode,
885 1) & ~(inode->i_sb->s_blocksize - 1)) + 1;
894 allocated_block_nr, inode);
921 convert_tail_for_hole(inode, bh_result,
925 reiserfs_error(inode->i_sb,
928 "inode %lu, error %d",
929 inode->i_ino,
937 th = reiserfs_persistent_transaction(inode->i_sb, 3);
940 inode,
949 direct2indirect(th, inode, &path, unbh,
953 reiserfs_free_block(th, inode,
979 reiserfs_add_tail_list(inode, unbh);
983 * from adding this buffer to the inode's
1010 MAX_ITEM_LEN(inode->i_sb->s_blocksize) /
1021 make_cpu_key(&tmp_key, inode,
1025 inode->i_sb->s_blocksize),
1033 cpu_key_k_offset(&tmp_key)) >> inode->i_sb->
1055 allocated_block_nr, inode);
1069 reiserfs_paste_into_item(th, &path, &tmp_key, inode,
1078 reiserfs_free_block(th, inode,
1089 inode->i_size +=
1090 inode->i_sb->s_blocksize * blocks_needed;
1100 * if it is too big or too full. Update the inode so things
1106 retval = restart_transaction(th, inode, &path);
1115 reiserfs_cond_resched(inode->i_sb);
1117 retval = search_for_position_by_key(inode->i_sb, &key, &path);
1123 reiserfs_warning(inode->i_sb, "vs-825",
1127 reiserfs_free_block(th, inode,
1144 reiserfs_update_sd(th, inode);
1150 reiserfs_write_unlock(inode->i_sb);
1165 static int real_space_diff(struct inode *inode, int sd_size)
1168 loff_t blocksize = inode->i_sb->s_blocksize;
1170 if (S_ISLNK(inode->i_mode) || S_ISDIR(inode->i_mode))
1183 ((inode->i_size +
1184 (blocksize - 1)) >> inode->i_sb->s_blocksize_bits) * UNFM_P_SIZE +
1189 static inline loff_t to_real_used_space(struct inode *inode, ulong blocks,
1192 if (S_ISLNK(inode->i_mode) || S_ISDIR(inode->i_mode)) {
1193 return inode->i_size +
1194 (loff_t) (real_space_diff(inode, sd_size));
1196 return ((loff_t) real_space_diff(inode, sd_size)) +
1201 static inline ulong to_fake_used_blocks(struct inode *inode, int sd_size)
1203 loff_t bytes = inode_get_bytes(inode);
1204 loff_t real_space = real_space_diff(inode, sd_size);
1207 if (S_ISLNK(inode->i_mode) || S_ISDIR(inode->i_mode)) {
1223 * of old type. Version stored in the inode says about body items, so
1224 * in update_stat_data we can not rely on inode, but have to check
1229 static void init_inode(struct inode *inode, struct treepath *path)
1238 copy_key(INODE_PKEY(inode), &ih->ih_key);
1240 INIT_LIST_HEAD(&REISERFS_I(inode)->i_prealloc_list);
1241 REISERFS_I(inode)->i_flags = 0;
1242 REISERFS_I(inode)->i_prealloc_block = 0;
1243 REISERFS_I(inode)->i_prealloc_count = 0;
1244 REISERFS_I(inode)->i_trans_id = 0;
1245 REISERFS_I(inode)->i_jl = NULL;
1246 reiserfs_init_xattr_rwsem(inode);
1253 set_inode_item_key_version(inode, KEY_FORMAT_3_5);
1254 set_inode_sd_version(inode, STAT_DATA_V1);
1255 inode->i_mode = sd_v1_mode(sd);
1256 set_nlink(inode, sd_v1_nlink(sd));
1257 i_uid_write(inode, sd_v1_uid(sd));
1258 i_gid_write(inode, sd_v1_gid(sd));
1259 inode->i_size = sd_v1_size(sd);
1260 inode->i_atime.tv_sec = sd_v1_atime(sd);
1261 inode->i_mtime.tv_sec = sd_v1_mtime(sd);
1262 inode_set_ctime(inode, sd_v1_ctime(sd), 0);
1263 inode->i_atime.tv_nsec = 0;
1264 inode->i_mtime.tv_nsec = 0;
1266 inode->i_blocks = sd_v1_blocks(sd);
1267 inode->i_generation = le32_to_cpu(INODE_PKEY(inode)->k_dir_id);
1268 blocks = (inode->i_size + 511) >> 9;
1269 blocks = _ROUND_UP(blocks, inode->i_sb->s_blocksize >> 9);
1277 * updated if file's inode will ever change
1279 if (inode->i_blocks > blocks) {
1280 inode->i_blocks = blocks;
1284 REISERFS_I(inode)->i_first_direct_byte =
1291 if (inode->i_blocks & 1) {
1292 inode->i_blocks++;
1294 inode_set_bytes(inode,
1295 to_real_used_space(inode, inode->i_blocks,
1301 REISERFS_I(inode)->i_flags &= ~i_nopack_mask;
1309 inode->i_mode = sd_v2_mode(sd);
1310 set_nlink(inode, sd_v2_nlink(sd));
1311 i_uid_write(inode, sd_v2_uid(sd));
1312 inode->i_size = sd_v2_size(sd);
1313 i_gid_write(inode, sd_v2_gid(sd));
1314 inode->i_mtime.tv_sec = sd_v2_mtime(sd);
1315 inode->i_atime.tv_sec = sd_v2_atime(sd);
1316 inode_set_ctime(inode, sd_v2_ctime(sd), 0);
1317 inode->i_mtime.tv_nsec = 0;
1318 inode->i_atime.tv_nsec = 0;
1319 inode->i_blocks = sd_v2_blocks(sd);
1321 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
1322 inode->i_generation =
1323 le32_to_cpu(INODE_PKEY(inode)->k_dir_id);
1325 inode->i_generation = sd_v2_generation(sd);
1327 if (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode))
1328 set_inode_item_key_version(inode, KEY_FORMAT_3_5);
1330 set_inode_item_key_version(inode, KEY_FORMAT_3_6);
1331 REISERFS_I(inode)->i_first_direct_byte = 0;
1332 set_inode_sd_version(inode, STAT_DATA_V2);
1333 inode_set_bytes(inode,
1334 to_real_used_space(inode, inode->i_blocks,
1337 * read persistent inode attributes from sd and initialise
1338 * generic inode flags from them
1340 REISERFS_I(inode)->i_attrs = sd_v2_attrs(sd);
1341 sd_attrs_to_i_attrs(sd_v2_attrs(sd), inode);
1345 if (S_ISREG(inode->i_mode)) {
1346 inode->i_op = &reiserfs_file_inode_operations;
1347 inode->i_fop = &reiserfs_file_operations;
1348 inode->i_mapping->a_ops = &reiserfs_address_space_operations;
1349 } else if (S_ISDIR(inode->i_mode)) {
1350 inode->i_op = &reiserfs_dir_inode_operations;
1351 inode->i_fop = &reiserfs_dir_operations;
1352 } else if (S_ISLNK(inode->i_mode)) {
1353 inode->i_op = &reiserfs_symlink_inode_operations;
1354 inode_nohighmem(inode);
1355 inode->i_mapping->a_ops = &reiserfs_address_space_operations;
1357 inode->i_blocks = 0;
1358 inode->i_op = &reiserfs_special_inode_operations;
1359 init_special_inode(inode, inode->i_mode, new_decode_dev(rdev));
1363 /* update new stat data with inode fields */
1364 static void inode2sd(void *sd, struct inode *inode, loff_t size)
1368 set_sd_v2_mode(sd_v2, inode->i_mode);
1369 set_sd_v2_nlink(sd_v2, inode->i_nlink);
1370 set_sd_v2_uid(sd_v2, i_uid_read(inode));
1372 set_sd_v2_gid(sd_v2, i_gid_read(inode));
1373 set_sd_v2_mtime(sd_v2, inode->i_mtime.tv_sec);
1374 set_sd_v2_atime(sd_v2, inode->i_atime.tv_sec);
1375 set_sd_v2_ctime(sd_v2, inode_get_ctime(inode).tv_sec);
1376 set_sd_v2_blocks(sd_v2, to_fake_used_blocks(inode, SD_V2_SIZE));
1377 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
1378 set_sd_v2_rdev(sd_v2, new_encode_dev(inode->i_rdev));
1380 set_sd_v2_generation(sd_v2, inode->i_generation);
1381 set_sd_v2_attrs(sd_v2, REISERFS_I(inode)->i_attrs);
1384 /* used to copy inode's fields to old stat data */
1385 static void inode2sd_v1(void *sd, struct inode *inode, loff_t size)
1389 set_sd_v1_mode(sd_v1, inode->i_mode);
1390 set_sd_v1_uid(sd_v1, i_uid_read(inode));
1391 set_sd_v1_gid(sd_v1, i_gid_read(inode));
1392 set_sd_v1_nlink(sd_v1, inode->i_nlink);
1394 set_sd_v1_atime(sd_v1, inode->i_atime.tv_sec);
1395 set_sd_v1_ctime(sd_v1, inode_get_ctime(inode).tv_sec);
1396 set_sd_v1_mtime(sd_v1, inode->i_mtime.tv_sec);
1398 if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
1399 set_sd_v1_rdev(sd_v1, new_encode_dev(inode->i_rdev));
1401 set_sd_v1_blocks(sd_v1, to_fake_used_blocks(inode, SD_V1_SIZE));
1405 REISERFS_I(inode)->i_first_direct_byte);
1412 static void update_stat_data(struct treepath *path, struct inode *inode,
1422 reiserfs_panic(inode->i_sb, "vs-13065", "key %k, found item %h",
1423 INODE_PKEY(inode), ih);
1427 inode2sd_v1(ih_item_body(bh, ih), inode, size);
1429 inode2sd(ih_item_body(bh, ih), inode, size);
1436 struct inode *inode, loff_t size)
1448 make_cpu_key(&key, inode, SD_OFFSET, TYPE_STAT_DATA, 3);
1453 retval = search_item(inode->i_sb, &key, &path);
1455 reiserfs_error(inode->i_sb, "vs-13050",
1463 if (inode->i_nlink == 0) {
1464 /*reiserfs_warning (inode->i_sb, "vs-13050: reiserfs_update_sd: i_nlink == 0, stat data not found"); */
1467 reiserfs_warning(inode->i_sb, "vs-13060",
1470 INODE_PKEY(inode), inode->i_nlink,
1484 fs_gen = get_generation(inode->i_sb);
1485 reiserfs_prepare_for_journal(inode->i_sb, bh, 1);
1488 if (fs_changed(fs_gen, inode->i_sb)
1490 reiserfs_restore_prepared_buffer(inode->i_sb, bh);
1495 update_stat_data(&path, inode, size);
1502 * reiserfs_read_locked_inode is called to read the inode off disk, and it
1504 * and clear the key in the private portion of the inode, otherwise a
1505 * corresponding iput might try to delete whatever object the inode last
1508 static void reiserfs_make_bad_inode(struct inode *inode)
1510 memset(INODE_PKEY(inode), 0, KEY_SIZE);
1511 make_bad_inode(inode);
1518 int reiserfs_init_locked_inode(struct inode *inode, void *p)
1521 inode->i_ino = args->objectid;
1522 INODE_PKEY(inode)->k_dir_id = cpu_to_le32(args->dirid);
1528 * inode stat data fields
1530 void reiserfs_read_locked_inode(struct inode *inode,
1544 _make_cpu_key(&key, KEY_FORMAT_3_5, dirino, inode->i_ino, 0, 0, 3);
1547 retval = search_item(inode->i_sb, &key, &path_to_sd);
1549 reiserfs_error(inode->i_sb, "vs-13070",
1552 reiserfs_make_bad_inode(inode);
1559 reiserfs_make_bad_inode(inode);
1560 clear_nlink(inode);
1564 init_inode(inode, &path_to_sd);
1567 * It is possible that knfsd is trying to access inode of a file
1574 * More logical fix would require changes in fs/inode.c:iput() to
1575 * remove inode from hash-table _after_ fs cleaned disk stuff up and
1576 * in iget() to return NULL if I_FREEING inode is found in
1581 * Currently there is one place where it's ok to meet inode with
1585 if ((inode->i_nlink == 0) &&
1586 !REISERFS_SB(inode->i_sb)->s_is_unlinked_ok) {
1587 reiserfs_warning(inode->i_sb, "vs-13075",
1588 "dead inode read from disk %K. "
1591 reiserfs_make_bad_inode(inode);
1594 /* init inode should be relsing */
1600 if (get_inode_sd_version(inode) == STAT_DATA_V1)
1601 cache_no_acl(inode);
1607 * @inode: inode from hash table to check
1611 * having the same inode numbers. Such inodes can only exist due to some
1613 * inode numbers (objectids) are distinguished by parent directory ids.
1616 int reiserfs_find_actor(struct inode *inode, void *opaque)
1622 return (inode->i_ino == args->objectid) &&
1623 (le32_to_cpu(INODE_PKEY(inode)->k_dir_id) == args->dirid);
1626 struct inode *reiserfs_iget(struct super_block *s, const struct cpu_key *key)
1628 struct inode *inode;
1635 inode = iget5_locked(s, key->on_disk_key.k_objectid,
1639 if (!inode)
1642 if (inode->i_state & I_NEW) {
1643 reiserfs_read_locked_inode(inode, &args);
1644 unlock_new_inode(inode);
1647 if (comp_short_keys(INODE_PKEY(inode), key) || is_bad_inode(inode)) {
1649 iput(inode);
1650 inode = NULL;
1652 return inode;
1660 struct inode *inode;
1665 inode = reiserfs_iget(sb, &key);
1666 if (inode && !IS_ERR(inode) && generation != 0 &&
1667 generation != inode->i_generation) {
1668 iput(inode);
1669 inode = NULL;
1673 return d_obtain_alias(inode);
1720 int reiserfs_encode_fh(struct inode *inode, __u32 * data, int *lenp,
1721 struct inode *parent)
1733 data[0] = inode->i_ino;
1734 data[1] = le32_to_cpu(INODE_PKEY(inode)->k_dir_id);
1735 data[2] = inode->i_generation;
1754 * reiserfs inodes are never really dirty, since the dirty inode call
1755 * always logs them. This call allows the VFS inode marking routines
1759 int reiserfs_write_inode(struct inode *inode, struct writeback_control *wbc)
1764 if (sb_rdonly(inode->i_sb))
1770 * inode needs to reach disk for safety, and they can safely be
1771 * ignored because the altered inode has already been logged.
1774 reiserfs_write_lock(inode->i_sb);
1775 if (!journal_begin(&th, inode->i_sb, jbegin_count)) {
1776 reiserfs_update_sd(&th, inode);
1779 reiserfs_write_unlock(inode->i_sb);
1789 struct inode *inode,
1791 struct inode *dir)
1844 return reiserfs_insert_item(th, path, &key, ih, inode, body);
1852 struct inode *inode,
1887 return reiserfs_insert_item(th, path, &key, ih, inode, symname);
1896 * NOTE! uid and gid must already be set in the inode. If we return
1898 * for the fresh inode. This can only be done outside a transaction, so
1902 * @dir: parent directory for new inode
1903 * @mode: mode of new inode
1904 * @symname: symlink contents if inode is symlink
1907 * @inode: inode to be filled
1908 * @security: optional security context to associate with this inode
1911 struct inode *dir, umode_t mode, const char *symname,
1915 struct inode *inode,
1931 err = dquot_alloc_inode(inode);
1947 args.objectid = inode->i_ino = le32_to_cpu(ih.ih_key.k_objectid);
1954 memcpy(INODE_PKEY(inode), &ih.ih_key, KEY_SIZE);
1957 depth = reiserfs_write_unlock_nested(inode->i_sb);
1958 err = insert_inode_locked4(inode, args.objectid,
1960 reiserfs_write_lock_nested(inode->i_sb, depth);
1970 * note that the private part of inode isn't filled in yet,
1973 inode->i_generation = le32_to_cpu(INODE_PKEY(dir)->k_objectid);
1976 inode->i_generation =
1979 inode->i_generation = ++event;
1983 set_nlink(inode, (S_ISDIR(mode) ? 2 : 1));
1987 inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
1988 inode->i_size = i_size;
1989 inode->i_blocks = 0;
1990 inode->i_bytes = 0;
1991 REISERFS_I(inode)->i_first_direct_byte = S_ISLNK(mode) ? 1 :
1994 INIT_LIST_HEAD(&REISERFS_I(inode)->i_prealloc_list);
1995 REISERFS_I(inode)->i_flags = 0;
1996 REISERFS_I(inode)->i_prealloc_block = 0;
1997 REISERFS_I(inode)->i_prealloc_count = 0;
1998 REISERFS_I(inode)->i_trans_id = 0;
1999 REISERFS_I(inode)->i_jl = NULL;
2000 REISERFS_I(inode)->i_attrs =
2002 sd_attrs_to_i_attrs(REISERFS_I(inode)->i_attrs, inode);
2003 reiserfs_init_xattr_rwsem(inode);
2023 if (i_uid_read(inode) & ~0xffff || i_gid_read(inode) & ~0xffff) {
2028 inode2sd_v1(&sd, inode, inode->i_size);
2030 inode2sd(&sd, inode, inode->i_size);
2033 * store in in-core inode the key of stat data and version all
2038 set_inode_item_key_version(inode, KEY_FORMAT_3_5);
2040 set_inode_item_key_version(inode, KEY_FORMAT_3_6);
2042 set_inode_sd_version(inode, STAT_DATA_V1);
2044 set_inode_sd_version(inode, STAT_DATA_V2);
2052 reiserfs_insert_item(th, &path_to_key, &key, &ih, inode,
2066 reiserfs_new_directory(th, inode, &ih, &path_to_key, dir);
2074 reiserfs_new_symlink(th, inode, &ih, &path_to_key, symname,
2089 reiserfs_init_priv_inode(inode);
2091 if (reiserfs_posixacl(inode->i_sb)) {
2092 reiserfs_write_unlock(inode->i_sb);
2093 retval = reiserfs_inherit_default_acl(th, dir, dentry, inode);
2094 reiserfs_write_lock(inode->i_sb);
2101 } else if (inode->i_sb->s_flags & SB_POSIXACL) {
2102 reiserfs_warning(inode->i_sb, "jdm-13090",
2108 reiserfs_write_unlock(inode->i_sb);
2109 retval = reiserfs_security_write(th, inode, security);
2110 reiserfs_write_lock(inode->i_sb);
2121 reiserfs_update_sd(th, inode);
2128 INODE_PKEY(inode)->k_objectid = 0;
2131 depth = reiserfs_write_unlock_nested(inode->i_sb);
2132 dquot_free_inode(inode);
2133 reiserfs_write_lock_nested(inode->i_sb, depth);
2141 depth = reiserfs_write_unlock_nested(inode->i_sb);
2142 dquot_drop(inode);
2143 reiserfs_write_lock_nested(inode->i_sb, depth);
2144 inode->i_flags |= S_NOQUOTA;
2145 make_bad_inode(inode);
2148 clear_nlink(inode);
2150 if (inode->i_state & I_NEW)
2151 unlock_new_inode(inode);
2152 iput(inode);
2169 static int grab_tail_page(struct inode *inode,
2178 unsigned long index = (inode->i_size - 1) >> PAGE_SHIFT;
2181 unsigned long blocksize = inode->i_sb->s_blocksize;
2182 unsigned long offset = (inode->i_size) & (PAGE_SIZE - 1);
2189 * we know that we are only called with inode->i_size > 0.
2197 page = grab_cache_page(inode->i_mapping, index);
2227 reiserfs_error(inode->i_sb, "clm-6000",
2250 int reiserfs_truncate_file(struct inode *inode, int update_timestamps)
2254 unsigned long offset = inode->i_size & (PAGE_SIZE - 1);
2255 unsigned blocksize = inode->i_sb->s_blocksize;
2262 reiserfs_write_lock(inode->i_sb);
2264 if (inode->i_size > 0) {
2265 error = grab_tail_page(inode, &page, &bh);
2273 reiserfs_error(inode->i_sb, "clm-6001",
2293 error = journal_begin(&th, inode->i_sb,
2297 reiserfs_update_inode_transaction(inode);
2305 add_save_link(&th, inode, 1);
2306 err2 = reiserfs_do_truncate(&th, inode, page, update_timestamps);
2318 error = remove_save_link(inode, 1 /* truncate */);
2337 reiserfs_write_unlock(inode->i_sb);
2346 reiserfs_write_unlock(inode->i_sb);
2351 static int map_block_for_writepage(struct inode *inode,
2365 loff_t byte_offset = ((loff_t)block << inode->i_sb->s_blocksize_bits)+1;
2384 reiserfs_write_lock(inode->i_sb);
2385 make_cpu_key(&key, inode, byte_offset, TYPE_ANY, 3);
2388 retval = search_for_position_by_key(inode->i_sb, &key, &path);
2402 reiserfs_warning(inode->i_sb, "clm-6002",
2411 get_block_num(item, pos_in_item), inode);
2418 fs_gen = get_generation(inode->i_sb);
2423 retval = journal_begin(&th, inode->i_sb, jbegin_count);
2426 reiserfs_update_inode_transaction(inode);
2428 if (fs_changed(fs_gen, inode->i_sb)
2430 reiserfs_restore_prepared_buffer(inode->i_sb,
2436 reiserfs_prepare_for_journal(inode->i_sb, bh, 1);
2438 if (fs_changed(fs_gen, inode->i_sb)
2440 reiserfs_restore_prepared_buffer(inode->i_sb, bh);
2449 set_block_dev_mapped(bh_result, 0, inode);
2453 (byte_offset + bytes_copied) < inode->i_size) {
2460 reiserfs_warning(inode->i_sb, "clm-6003",
2461 "bad item inode %lu", inode->i_ino);
2475 reiserfs_write_unlock(inode->i_sb);
2479 retval = reiserfs_get_block(inode, block, bh_result,
2513 struct inode *inode = page->mapping->host;
2514 unsigned long end_index = inode->i_size >> PAGE_SHIFT;
2523 struct super_block *s = inode->i_sb;
2553 last_offset = inode->i_size & (PAGE_SIZE - 1);
2563 last_block = (i_size_read(inode) - 1) >> inode->i_blkbits;
2581 if ((error = map_block_for_writepage(inode, bh, block))) {
2603 reiserfs_update_inode_transaction(inode);
2731 struct inode *inode = page->mapping->host;
2732 reiserfs_wait_on_write_block(inode->i_sb);
2736 static void reiserfs_truncate_failed_write(struct inode *inode)
2738 truncate_inode_pages(inode->i_mapping, inode->i_size);
2739 reiserfs_truncate_file(inode, 0);
2747 struct inode *inode;
2753 inode = mapping->host;
2760 reiserfs_wait_on_write_block(inode->i_sb);
2762 if (reiserfs_transaction_running(inode->i_sb)) {
2772 if (ret && reiserfs_transaction_running(inode->i_sb)) {
2792 reiserfs_write_lock(inode->i_sb);
2794 reiserfs_write_unlock(inode->i_sb);
2804 reiserfs_truncate_failed_write(inode);
2811 struct inode *inode = page->mapping->host;
2816 depth = reiserfs_write_unlock_nested(inode->i_sb);
2817 reiserfs_wait_on_write_block(inode->i_sb);
2818 reiserfs_write_lock_nested(inode->i_sb, depth);
2821 if (reiserfs_transaction_running(inode->i_sb)) {
2832 if (ret && reiserfs_transaction_running(inode->i_sb)) {
2852 reiserfs_write_lock(inode->i_sb);
2854 reiserfs_write_unlock(inode->i_sb);
2874 struct inode *inode = page->mapping->host;
2881 reiserfs_wait_on_write_block(inode->i_sb);
2882 if (reiserfs_transaction_running(inode->i_sb))
2896 reiserfs_commit_page(inode, page, start, start + copied);
2903 if (pos + copied > inode->i_size) {
2905 reiserfs_write_lock(inode->i_sb);
2912 if ((have_large_tails(inode->i_sb)
2913 && inode->i_size > i_block_size(inode) * 4)
2914 || (have_small_tails(inode->i_sb)
2915 && inode->i_size > i_block_size(inode)))
2916 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask;
2918 ret = journal_begin(&myth, inode->i_sb, 1);
2922 reiserfs_update_inode_transaction(inode);
2923 inode->i_size = pos + copied;
2926 * to use mark_inode_dirty so the inode gets pushed around on
2929 mark_inode_dirty(inode);
2930 reiserfs_update_sd(&myth, inode);
2938 reiserfs_write_lock(inode->i_sb);
2942 mark_inode_dirty(inode);
2950 reiserfs_write_unlock(inode->i_sb);
2954 if (pos + len > inode->i_size)
2955 reiserfs_truncate_failed_write(inode);
2960 reiserfs_write_unlock(inode->i_sb);
2964 reiserfs_update_sd(th, inode);
2973 struct inode *inode = page->mapping->host;
2980 depth = reiserfs_write_unlock_nested(inode->i_sb);
2981 reiserfs_wait_on_write_block(inode->i_sb);
2982 reiserfs_write_lock_nested(inode->i_sb, depth);
2984 if (reiserfs_transaction_running(inode->i_sb)) {
2987 reiserfs_commit_page(inode, page, from, to);
2994 if (pos > inode->i_size) {
3001 if ((have_large_tails(inode->i_sb)
3002 && inode->i_size > i_block_size(inode) * 4)
3003 || (have_small_tails(inode->i_sb)
3004 && inode->i_size > i_block_size(inode)))
3005 REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask;
3007 ret = journal_begin(&myth, inode->i_sb, 1);
3011 reiserfs_update_inode_transaction(inode);
3012 inode->i_size = pos;
3015 * to use mark_inode_dirty so the inode gets pushed around
3018 mark_inode_dirty(inode);
3019 reiserfs_update_sd(&myth, inode);
3027 mark_inode_dirty(inode);
3039 reiserfs_update_sd(th, inode);
3046 void sd_attrs_to_i_attrs(__u16 sd_attrs, struct inode *inode)
3048 if (reiserfs_attrs(inode->i_sb)) {
3050 inode->i_flags |= S_SYNC;
3052 inode->i_flags &= ~S_SYNC;
3054 inode->i_flags |= S_IMMUTABLE;
3056 inode->i_flags &= ~S_IMMUTABLE;
3058 inode->i_flags |= S_APPEND;
3060 inode->i_flags &= ~S_APPEND;
3062 inode->i_flags |= S_NOATIME;
3064 inode->i_flags &= ~S_NOATIME;
3066 REISERFS_I(inode)->i_flags |= i_nopack_mask;
3068 REISERFS_I(inode)->i_flags &= ~i_nopack_mask;
3076 static int invalidate_folio_can_drop(struct inode *inode, struct buffer_head *bh)
3079 struct reiserfs_journal *j = SB_JOURNAL(inode->i_sb);
3090 if (reiserfs_file_data_log(inode)) {
3117 && jl != SB_JOURNAL(inode->i_sb)->j_current_jl)
3134 struct inode *inode = folio->mapping->host;
3161 if (invalidate_folio_can_drop(inode, bh))
3204 struct inode *inode = folio->mapping->host;
3205 struct reiserfs_journal *j = SB_JOURNAL(inode->i_sb);
3238 struct inode *inode = file->f_mapping->host;
3242 ret = blockdev_direct_IO(iocb, inode, iter,
3250 loff_t isize = i_size_read(inode);
3253 if ((end > isize) && inode_newsize_ok(inode, isize) == 0) {
3254 truncate_setsize(inode, isize);
3255 reiserfs_vfs_truncate_file(inode);
3265 struct inode *inode = d_inode(dentry);
3276 if (is_quota_modification(&nop_mnt_idmap, inode, attr)) {
3277 error = dquot_initialize(inode);
3281 reiserfs_write_lock(inode->i_sb);
3287 if (get_inode_item_key_version(inode) == KEY_FORMAT_3_5 &&
3289 reiserfs_write_unlock(inode->i_sb);
3294 inode_dio_wait(inode);
3297 if (attr->ia_size > inode->i_size) {
3300 if ((pos & (inode->i_sb->s_blocksize - 1)) == 0)
3302 error = generic_cont_expand_simple(inode, pos);
3303 if (REISERFS_I(inode)->i_prealloc_count > 0) {
3306 /* we're changing at most 2 bitmaps, inode + super */
3307 err = journal_begin(&th, inode->i_sb, 4);
3309 reiserfs_discard_prealloc(&th, inode);
3316 reiserfs_write_unlock(inode->i_sb);
3326 reiserfs_write_unlock(inode->i_sb);
3330 (get_inode_sd_version(inode) == STAT_DATA_V1)) {
3336 if ((ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid)) ||
3337 (ia_valid & ATTR_GID && !gid_eq(attr->ia_gid, inode->i_gid))) {
3341 (REISERFS_QUOTA_INIT_BLOCKS(inode->i_sb) +
3342 REISERFS_QUOTA_DEL_BLOCKS(inode->i_sb)) +
3345 error = reiserfs_chown_xattrs(inode, attr);
3352 * info and , inode write (sb, inode)
3354 reiserfs_write_lock(inode->i_sb);
3355 error = journal_begin(&th, inode->i_sb, jbegin_count);
3356 reiserfs_write_unlock(inode->i_sb);
3359 error = dquot_transfer(&nop_mnt_idmap, inode, attr);
3360 reiserfs_write_lock(inode->i_sb);
3363 reiserfs_write_unlock(inode->i_sb);
3368 * Update corresponding info in inode so that everything
3372 inode->i_uid = attr->ia_uid;
3374 inode->i_gid = attr->ia_gid;
3375 mark_inode_dirty(inode);
3377 reiserfs_write_unlock(inode->i_sb);
3383 attr->ia_size != i_size_read(inode)) {
3384 error = inode_newsize_ok(inode, attr->ia_size);
3390 mutex_lock(&REISERFS_I(inode)->tailpack);
3391 truncate_setsize(inode, attr->ia_size);
3392 reiserfs_truncate_file(inode, 1);
3393 mutex_unlock(&REISERFS_I(inode)->tailpack);
3398 setattr_copy(&nop_mnt_idmap, inode, attr);
3399 mark_inode_dirty(inode);
3402 if (!error && reiserfs_posixacl(inode->i_sb)) {