diff options
Diffstat (limited to 'fs/reiserfs/stree.c')
-rw-r--r-- | fs/reiserfs/stree.c | 103 |
1 files changed, 53 insertions, 50 deletions
diff --git a/fs/reiserfs/stree.c b/fs/reiserfs/stree.c index eb6856f6d323..8f220fb777d7 100644 --- a/fs/reiserfs/stree.c +++ b/fs/reiserfs/stree.c | |||
@@ -1143,10 +1143,11 @@ char head2type(struct item_head *ih) | |||
1143 | /* Delete object item. */ | 1143 | /* Delete object item. */ |
1144 | int reiserfs_delete_item(struct reiserfs_transaction_handle *th, struct treepath *p_s_path, /* Path to the deleted item. */ | 1144 | int reiserfs_delete_item(struct reiserfs_transaction_handle *th, struct treepath *p_s_path, /* Path to the deleted item. */ |
1145 | const struct cpu_key *p_s_item_key, /* Key to search for the deleted item. */ | 1145 | const struct cpu_key *p_s_item_key, /* Key to search for the deleted item. */ |
1146 | struct inode *p_s_inode, /* inode is here just to update i_blocks and quotas */ | 1146 | struct inode *inode, /* inode is here just to update |
1147 | * i_blocks and quotas */ | ||
1147 | struct buffer_head *p_s_un_bh) | 1148 | struct buffer_head *p_s_un_bh) |
1148 | { /* NULL or unformatted node pointer. */ | 1149 | { /* NULL or unformatted node pointer. */ |
1149 | struct super_block *sb = p_s_inode->i_sb; | 1150 | struct super_block *sb = inode->i_sb; |
1150 | struct tree_balance s_del_balance; | 1151 | struct tree_balance s_del_balance; |
1151 | struct item_head s_ih; | 1152 | struct item_head s_ih; |
1152 | struct item_head *q_ih; | 1153 | struct item_head *q_ih; |
@@ -1170,10 +1171,10 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th, struct treepath | |||
1170 | n_iter++; | 1171 | n_iter++; |
1171 | c_mode = | 1172 | c_mode = |
1172 | #endif | 1173 | #endif |
1173 | prepare_for_delete_or_cut(th, p_s_inode, p_s_path, | 1174 | prepare_for_delete_or_cut(th, inode, p_s_path, |
1174 | p_s_item_key, &n_removed, | 1175 | p_s_item_key, &n_removed, |
1175 | &n_del_size, | 1176 | &n_del_size, |
1176 | max_reiserfs_offset(p_s_inode)); | 1177 | max_reiserfs_offset(inode)); |
1177 | 1178 | ||
1178 | RFALSE(c_mode != M_DELETE, "PAP-5320: mode must be M_DELETE"); | 1179 | RFALSE(c_mode != M_DELETE, "PAP-5320: mode must be M_DELETE"); |
1179 | 1180 | ||
@@ -1214,7 +1215,7 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th, struct treepath | |||
1214 | ** split into multiple items, and we only want to decrement for | 1215 | ** split into multiple items, and we only want to decrement for |
1215 | ** the unfm node once | 1216 | ** the unfm node once |
1216 | */ | 1217 | */ |
1217 | if (!S_ISLNK(p_s_inode->i_mode) && is_direct_le_ih(q_ih)) { | 1218 | if (!S_ISLNK(inode->i_mode) && is_direct_le_ih(q_ih)) { |
1218 | if ((le_ih_k_offset(q_ih) & (sb->s_blocksize - 1)) == 1) { | 1219 | if ((le_ih_k_offset(q_ih) & (sb->s_blocksize - 1)) == 1) { |
1219 | quota_cut_bytes = sb->s_blocksize + UNFM_P_SIZE; | 1220 | quota_cut_bytes = sb->s_blocksize + UNFM_P_SIZE; |
1220 | } else { | 1221 | } else { |
@@ -1259,9 +1260,9 @@ int reiserfs_delete_item(struct reiserfs_transaction_handle *th, struct treepath | |||
1259 | #ifdef REISERQUOTA_DEBUG | 1260 | #ifdef REISERQUOTA_DEBUG |
1260 | reiserfs_debug(sb, REISERFS_DEBUG_CODE, | 1261 | reiserfs_debug(sb, REISERFS_DEBUG_CODE, |
1261 | "reiserquota delete_item(): freeing %u, id=%u type=%c", | 1262 | "reiserquota delete_item(): freeing %u, id=%u type=%c", |
1262 | quota_cut_bytes, p_s_inode->i_uid, head2type(&s_ih)); | 1263 | quota_cut_bytes, inode->i_uid, head2type(&s_ih)); |
1263 | #endif | 1264 | #endif |
1264 | DQUOT_FREE_SPACE_NODIRTY(p_s_inode, quota_cut_bytes); | 1265 | DQUOT_FREE_SPACE_NODIRTY(inode, quota_cut_bytes); |
1265 | 1266 | ||
1266 | /* Return deleted body length */ | 1267 | /* Return deleted body length */ |
1267 | return n_ret_value; | 1268 | return n_ret_value; |
@@ -1423,25 +1424,25 @@ static void unmap_buffers(struct page *page, loff_t pos) | |||
1423 | } | 1424 | } |
1424 | 1425 | ||
1425 | static int maybe_indirect_to_direct(struct reiserfs_transaction_handle *th, | 1426 | static int maybe_indirect_to_direct(struct reiserfs_transaction_handle *th, |
1426 | struct inode *p_s_inode, | 1427 | struct inode *inode, |
1427 | struct page *page, | 1428 | struct page *page, |
1428 | struct treepath *p_s_path, | 1429 | struct treepath *p_s_path, |
1429 | const struct cpu_key *p_s_item_key, | 1430 | const struct cpu_key *p_s_item_key, |
1430 | loff_t n_new_file_size, char *p_c_mode) | 1431 | loff_t n_new_file_size, char *p_c_mode) |
1431 | { | 1432 | { |
1432 | struct super_block *sb = p_s_inode->i_sb; | 1433 | struct super_block *sb = inode->i_sb; |
1433 | int n_block_size = sb->s_blocksize; | 1434 | int n_block_size = sb->s_blocksize; |
1434 | int cut_bytes; | 1435 | int cut_bytes; |
1435 | BUG_ON(!th->t_trans_id); | 1436 | BUG_ON(!th->t_trans_id); |
1436 | BUG_ON(n_new_file_size != p_s_inode->i_size); | 1437 | BUG_ON(n_new_file_size != inode->i_size); |
1437 | 1438 | ||
1438 | /* the page being sent in could be NULL if there was an i/o error | 1439 | /* the page being sent in could be NULL if there was an i/o error |
1439 | ** reading in the last block. The user will hit problems trying to | 1440 | ** reading in the last block. The user will hit problems trying to |
1440 | ** read the file, but for now we just skip the indirect2direct | 1441 | ** read the file, but for now we just skip the indirect2direct |
1441 | */ | 1442 | */ |
1442 | if (atomic_read(&p_s_inode->i_count) > 1 || | 1443 | if (atomic_read(&inode->i_count) > 1 || |
1443 | !tail_has_to_be_packed(p_s_inode) || | 1444 | !tail_has_to_be_packed(inode) || |
1444 | !page || (REISERFS_I(p_s_inode)->i_flags & i_nopack_mask)) { | 1445 | !page || (REISERFS_I(inode)->i_flags & i_nopack_mask)) { |
1445 | /* leave tail in an unformatted node */ | 1446 | /* leave tail in an unformatted node */ |
1446 | *p_c_mode = M_SKIP_BALANCING; | 1447 | *p_c_mode = M_SKIP_BALANCING; |
1447 | cut_bytes = | 1448 | cut_bytes = |
@@ -1450,8 +1451,9 @@ static int maybe_indirect_to_direct(struct reiserfs_transaction_handle *th, | |||
1450 | return cut_bytes; | 1451 | return cut_bytes; |
1451 | } | 1452 | } |
1452 | /* Permorm the conversion to a direct_item. */ | 1453 | /* Permorm the conversion to a direct_item. */ |
1453 | /*return indirect_to_direct (p_s_inode, p_s_path, p_s_item_key, n_new_file_size, p_c_mode); */ | 1454 | /* return indirect_to_direct(inode, p_s_path, p_s_item_key, |
1454 | return indirect2direct(th, p_s_inode, page, p_s_path, p_s_item_key, | 1455 | n_new_file_size, p_c_mode); */ |
1456 | return indirect2direct(th, inode, page, p_s_path, p_s_item_key, | ||
1455 | n_new_file_size, p_c_mode); | 1457 | n_new_file_size, p_c_mode); |
1456 | } | 1458 | } |
1457 | 1459 | ||
@@ -1505,10 +1507,10 @@ static void indirect_to_direct_roll_back(struct reiserfs_transaction_handle *th, | |||
1505 | int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, | 1507 | int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, |
1506 | struct treepath *p_s_path, | 1508 | struct treepath *p_s_path, |
1507 | struct cpu_key *p_s_item_key, | 1509 | struct cpu_key *p_s_item_key, |
1508 | struct inode *p_s_inode, | 1510 | struct inode *inode, |
1509 | struct page *page, loff_t n_new_file_size) | 1511 | struct page *page, loff_t n_new_file_size) |
1510 | { | 1512 | { |
1511 | struct super_block *sb = p_s_inode->i_sb; | 1513 | struct super_block *sb = inode->i_sb; |
1512 | /* Every function which is going to call do_balance must first | 1514 | /* Every function which is going to call do_balance must first |
1513 | create a tree_balance structure. Then it must fill up this | 1515 | create a tree_balance structure. Then it must fill up this |
1514 | structure by using the init_tb_struct and fix_nodes functions. | 1516 | structure by using the init_tb_struct and fix_nodes functions. |
@@ -1525,7 +1527,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, | |||
1525 | 1527 | ||
1526 | BUG_ON(!th->t_trans_id); | 1528 | BUG_ON(!th->t_trans_id); |
1527 | 1529 | ||
1528 | init_tb_struct(th, &s_cut_balance, p_s_inode->i_sb, p_s_path, | 1530 | init_tb_struct(th, &s_cut_balance, inode->i_sb, p_s_path, |
1529 | n_cut_size); | 1531 | n_cut_size); |
1530 | 1532 | ||
1531 | /* Repeat this loop until we either cut the item without needing | 1533 | /* Repeat this loop until we either cut the item without needing |
@@ -1537,7 +1539,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, | |||
1537 | pointers. */ | 1539 | pointers. */ |
1538 | 1540 | ||
1539 | c_mode = | 1541 | c_mode = |
1540 | prepare_for_delete_or_cut(th, p_s_inode, p_s_path, | 1542 | prepare_for_delete_or_cut(th, inode, p_s_path, |
1541 | p_s_item_key, &n_removed, | 1543 | p_s_item_key, &n_removed, |
1542 | &n_cut_size, n_new_file_size); | 1544 | &n_cut_size, n_new_file_size); |
1543 | if (c_mode == M_CONVERT) { | 1545 | if (c_mode == M_CONVERT) { |
@@ -1547,7 +1549,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, | |||
1547 | "PAP-5570: can not convert twice"); | 1549 | "PAP-5570: can not convert twice"); |
1548 | 1550 | ||
1549 | n_ret_value = | 1551 | n_ret_value = |
1550 | maybe_indirect_to_direct(th, p_s_inode, page, | 1552 | maybe_indirect_to_direct(th, inode, page, |
1551 | p_s_path, p_s_item_key, | 1553 | p_s_path, p_s_item_key, |
1552 | n_new_file_size, &c_mode); | 1554 | n_new_file_size, &c_mode); |
1553 | if (c_mode == M_SKIP_BALANCING) | 1555 | if (c_mode == M_SKIP_BALANCING) |
@@ -1612,7 +1614,7 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, | |||
1612 | if (n_is_inode_locked) { | 1614 | if (n_is_inode_locked) { |
1613 | // FIXME: this seems to be not needed: we are always able | 1615 | // FIXME: this seems to be not needed: we are always able |
1614 | // to cut item | 1616 | // to cut item |
1615 | indirect_to_direct_roll_back(th, p_s_inode, p_s_path); | 1617 | indirect_to_direct_roll_back(th, inode, p_s_path); |
1616 | } | 1618 | } |
1617 | if (n_ret_value == NO_DISK_SPACE) | 1619 | if (n_ret_value == NO_DISK_SPACE) |
1618 | reiserfs_warning(sb, "reiserfs-5092", | 1620 | reiserfs_warning(sb, "reiserfs-5092", |
@@ -1639,12 +1641,12 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, | |||
1639 | ** item. | 1641 | ** item. |
1640 | */ | 1642 | */ |
1641 | p_le_ih = PATH_PITEM_HEAD(s_cut_balance.tb_path); | 1643 | p_le_ih = PATH_PITEM_HEAD(s_cut_balance.tb_path); |
1642 | if (!S_ISLNK(p_s_inode->i_mode) && is_direct_le_ih(p_le_ih)) { | 1644 | if (!S_ISLNK(inode->i_mode) && is_direct_le_ih(p_le_ih)) { |
1643 | if (c_mode == M_DELETE && | 1645 | if (c_mode == M_DELETE && |
1644 | (le_ih_k_offset(p_le_ih) & (sb->s_blocksize - 1)) == | 1646 | (le_ih_k_offset(p_le_ih) & (sb->s_blocksize - 1)) == |
1645 | 1) { | 1647 | 1) { |
1646 | // FIXME: this is to keep 3.5 happy | 1648 | // FIXME: this is to keep 3.5 happy |
1647 | REISERFS_I(p_s_inode)->i_first_direct_byte = U32_MAX; | 1649 | REISERFS_I(inode)->i_first_direct_byte = U32_MAX; |
1648 | quota_cut_bytes = sb->s_blocksize + UNFM_P_SIZE; | 1650 | quota_cut_bytes = sb->s_blocksize + UNFM_P_SIZE; |
1649 | } else { | 1651 | } else { |
1650 | quota_cut_bytes = 0; | 1652 | quota_cut_bytes = 0; |
@@ -1687,14 +1689,14 @@ int reiserfs_cut_from_item(struct reiserfs_transaction_handle *th, | |||
1687 | ** unmap and invalidate it | 1689 | ** unmap and invalidate it |
1688 | */ | 1690 | */ |
1689 | unmap_buffers(page, tail_pos); | 1691 | unmap_buffers(page, tail_pos); |
1690 | REISERFS_I(p_s_inode)->i_flags &= ~i_pack_on_close_mask; | 1692 | REISERFS_I(inode)->i_flags &= ~i_pack_on_close_mask; |
1691 | } | 1693 | } |
1692 | #ifdef REISERQUOTA_DEBUG | 1694 | #ifdef REISERQUOTA_DEBUG |
1693 | reiserfs_debug(p_s_inode->i_sb, REISERFS_DEBUG_CODE, | 1695 | reiserfs_debug(inode->i_sb, REISERFS_DEBUG_CODE, |
1694 | "reiserquota cut_from_item(): freeing %u id=%u type=%c", | 1696 | "reiserquota cut_from_item(): freeing %u id=%u type=%c", |
1695 | quota_cut_bytes, p_s_inode->i_uid, '?'); | 1697 | quota_cut_bytes, inode->i_uid, '?'); |
1696 | #endif | 1698 | #endif |
1697 | DQUOT_FREE_SPACE_NODIRTY(p_s_inode, quota_cut_bytes); | 1699 | DQUOT_FREE_SPACE_NODIRTY(inode, quota_cut_bytes); |
1698 | return n_ret_value; | 1700 | return n_ret_value; |
1699 | } | 1701 | } |
1700 | 1702 | ||
@@ -1715,8 +1717,8 @@ static void truncate_directory(struct reiserfs_transaction_handle *th, | |||
1715 | 1717 | ||
1716 | /* Truncate file to the new size. Note, this must be called with a transaction | 1718 | /* Truncate file to the new size. Note, this must be called with a transaction |
1717 | already started */ | 1719 | already started */ |
1718 | int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, struct inode *p_s_inode, /* ->i_size contains new | 1720 | int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, |
1719 | size */ | 1721 | struct inode *inode, /* ->i_size contains new size */ |
1720 | struct page *page, /* up to date for last block */ | 1722 | struct page *page, /* up to date for last block */ |
1721 | int update_timestamps /* when it is called by | 1723 | int update_timestamps /* when it is called by |
1722 | file_release to convert | 1724 | file_release to convert |
@@ -1735,35 +1737,35 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, struct inode *p | |||
1735 | 1737 | ||
1736 | BUG_ON(!th->t_trans_id); | 1738 | BUG_ON(!th->t_trans_id); |
1737 | if (! | 1739 | if (! |
1738 | (S_ISREG(p_s_inode->i_mode) || S_ISDIR(p_s_inode->i_mode) | 1740 | (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) |
1739 | || S_ISLNK(p_s_inode->i_mode))) | 1741 | || S_ISLNK(inode->i_mode))) |
1740 | return 0; | 1742 | return 0; |
1741 | 1743 | ||
1742 | if (S_ISDIR(p_s_inode->i_mode)) { | 1744 | if (S_ISDIR(inode->i_mode)) { |
1743 | // deletion of directory - no need to update timestamps | 1745 | // deletion of directory - no need to update timestamps |
1744 | truncate_directory(th, p_s_inode); | 1746 | truncate_directory(th, inode); |
1745 | return 0; | 1747 | return 0; |
1746 | } | 1748 | } |
1747 | 1749 | ||
1748 | /* Get new file size. */ | 1750 | /* Get new file size. */ |
1749 | n_new_file_size = p_s_inode->i_size; | 1751 | n_new_file_size = inode->i_size; |
1750 | 1752 | ||
1751 | // FIXME: note, that key type is unimportant here | 1753 | // FIXME: note, that key type is unimportant here |
1752 | make_cpu_key(&s_item_key, p_s_inode, max_reiserfs_offset(p_s_inode), | 1754 | make_cpu_key(&s_item_key, inode, max_reiserfs_offset(inode), |
1753 | TYPE_DIRECT, 3); | 1755 | TYPE_DIRECT, 3); |
1754 | 1756 | ||
1755 | retval = | 1757 | retval = |
1756 | search_for_position_by_key(p_s_inode->i_sb, &s_item_key, | 1758 | search_for_position_by_key(inode->i_sb, &s_item_key, |
1757 | &s_search_path); | 1759 | &s_search_path); |
1758 | if (retval == IO_ERROR) { | 1760 | if (retval == IO_ERROR) { |
1759 | reiserfs_error(p_s_inode->i_sb, "vs-5657", | 1761 | reiserfs_error(inode->i_sb, "vs-5657", |
1760 | "i/o failure occurred trying to truncate %K", | 1762 | "i/o failure occurred trying to truncate %K", |
1761 | &s_item_key); | 1763 | &s_item_key); |
1762 | err = -EIO; | 1764 | err = -EIO; |
1763 | goto out; | 1765 | goto out; |
1764 | } | 1766 | } |
1765 | if (retval == POSITION_FOUND || retval == FILE_NOT_FOUND) { | 1767 | if (retval == POSITION_FOUND || retval == FILE_NOT_FOUND) { |
1766 | reiserfs_error(p_s_inode->i_sb, "PAP-5660", | 1768 | reiserfs_error(inode->i_sb, "PAP-5660", |
1767 | "wrong result %d of search for %K", retval, | 1769 | "wrong result %d of search for %K", retval, |
1768 | &s_item_key); | 1770 | &s_item_key); |
1769 | 1771 | ||
@@ -1780,7 +1782,7 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, struct inode *p | |||
1780 | else { | 1782 | else { |
1781 | loff_t offset = le_ih_k_offset(p_le_ih); | 1783 | loff_t offset = le_ih_k_offset(p_le_ih); |
1782 | int bytes = | 1784 | int bytes = |
1783 | op_bytes_number(p_le_ih, p_s_inode->i_sb->s_blocksize); | 1785 | op_bytes_number(p_le_ih, inode->i_sb->s_blocksize); |
1784 | 1786 | ||
1785 | /* this may mismatch with real file size: if last direct item | 1787 | /* this may mismatch with real file size: if last direct item |
1786 | had no padding zeros and last unformatted node had no free | 1788 | had no padding zeros and last unformatted node had no free |
@@ -1805,9 +1807,9 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, struct inode *p | |||
1805 | /* Cut or delete file item. */ | 1807 | /* Cut or delete file item. */ |
1806 | n_deleted = | 1808 | n_deleted = |
1807 | reiserfs_cut_from_item(th, &s_search_path, &s_item_key, | 1809 | reiserfs_cut_from_item(th, &s_search_path, &s_item_key, |
1808 | p_s_inode, page, n_new_file_size); | 1810 | inode, page, n_new_file_size); |
1809 | if (n_deleted < 0) { | 1811 | if (n_deleted < 0) { |
1810 | reiserfs_warning(p_s_inode->i_sb, "vs-5665", | 1812 | reiserfs_warning(inode->i_sb, "vs-5665", |
1811 | "reiserfs_cut_from_item failed"); | 1813 | "reiserfs_cut_from_item failed"); |
1812 | reiserfs_check_path(&s_search_path); | 1814 | reiserfs_check_path(&s_search_path); |
1813 | return 0; | 1815 | return 0; |
@@ -1837,22 +1839,22 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, struct inode *p | |||
1837 | pathrelse(&s_search_path); | 1839 | pathrelse(&s_search_path); |
1838 | 1840 | ||
1839 | if (update_timestamps) { | 1841 | if (update_timestamps) { |
1840 | p_s_inode->i_mtime = p_s_inode->i_ctime = | 1842 | inode->i_mtime = CURRENT_TIME_SEC; |
1841 | CURRENT_TIME_SEC; | 1843 | inode->i_ctime = CURRENT_TIME_SEC; |
1842 | } | 1844 | } |
1843 | reiserfs_update_sd(th, p_s_inode); | 1845 | reiserfs_update_sd(th, inode); |
1844 | 1846 | ||
1845 | err = journal_end(th, p_s_inode->i_sb, orig_len_alloc); | 1847 | err = journal_end(th, inode->i_sb, orig_len_alloc); |
1846 | if (err) | 1848 | if (err) |
1847 | goto out; | 1849 | goto out; |
1848 | err = journal_begin(th, p_s_inode->i_sb, | 1850 | err = journal_begin(th, inode->i_sb, |
1849 | JOURNAL_FOR_FREE_BLOCK_AND_UPDATE_SD + JOURNAL_PER_BALANCE_CNT * 4) ; | 1851 | JOURNAL_FOR_FREE_BLOCK_AND_UPDATE_SD + JOURNAL_PER_BALANCE_CNT * 4) ; |
1850 | if (err) | 1852 | if (err) |
1851 | goto out; | 1853 | goto out; |
1852 | reiserfs_update_inode_transaction(p_s_inode); | 1854 | reiserfs_update_inode_transaction(inode); |
1853 | } | 1855 | } |
1854 | } while (n_file_size > ROUND_UP(n_new_file_size) && | 1856 | } while (n_file_size > ROUND_UP(n_new_file_size) && |
1855 | search_for_position_by_key(p_s_inode->i_sb, &s_item_key, | 1857 | search_for_position_by_key(inode->i_sb, &s_item_key, |
1856 | &s_search_path) == POSITION_FOUND); | 1858 | &s_search_path) == POSITION_FOUND); |
1857 | 1859 | ||
1858 | RFALSE(n_file_size > ROUND_UP(n_new_file_size), | 1860 | RFALSE(n_file_size > ROUND_UP(n_new_file_size), |
@@ -1862,9 +1864,10 @@ int reiserfs_do_truncate(struct reiserfs_transaction_handle *th, struct inode *p | |||
1862 | update_and_out: | 1864 | update_and_out: |
1863 | if (update_timestamps) { | 1865 | if (update_timestamps) { |
1864 | // this is truncate, not file closing | 1866 | // this is truncate, not file closing |
1865 | p_s_inode->i_mtime = p_s_inode->i_ctime = CURRENT_TIME_SEC; | 1867 | inode->i_mtime = CURRENT_TIME_SEC; |
1868 | inode->i_ctime = CURRENT_TIME_SEC; | ||
1866 | } | 1869 | } |
1867 | reiserfs_update_sd(th, p_s_inode); | 1870 | reiserfs_update_sd(th, inode); |
1868 | 1871 | ||
1869 | out: | 1872 | out: |
1870 | pathrelse(&s_search_path); | 1873 | pathrelse(&s_search_path); |