inode.c (04782ca20a8ebb5acf0c35756a38964ae5ea7321) inode.c (c94c2acf84dc16cf4b989bb0bc849785b7ff52f5)
1/*
2 * linux/fs/ext4/inode.c
3 *
4 * Copyright (C) 1992, 1993, 1994, 1995
5 * Remy Card (card@masi.ibp.fr)
6 * Laboratoire MASI - Institut Blaise Pascal
7 * Universite Pierre et Marie Curie (Paris VI)
8 *

--- 8 unchanged lines hidden (view full) ---

17 *
18 * Assorted race fixes, rewrite of ext4_get_block() by Al Viro, 2000
19 */
20
21#include <linux/fs.h>
22#include <linux/time.h>
23#include <linux/highuid.h>
24#include <linux/pagemap.h>
1/*
2 * linux/fs/ext4/inode.c
3 *
4 * Copyright (C) 1992, 1993, 1994, 1995
5 * Remy Card (card@masi.ibp.fr)
6 * Laboratoire MASI - Institut Blaise Pascal
7 * Universite Pierre et Marie Curie (Paris VI)
8 *

--- 8 unchanged lines hidden (view full) ---

17 *
18 * Assorted race fixes, rewrite of ext4_get_block() by Al Viro, 2000
19 */
20
21#include <linux/fs.h>
22#include <linux/time.h>
23#include <linux/highuid.h>
24#include <linux/pagemap.h>
25#include <linux/dax.h>
25#include <linux/quotaops.h>
26#include <linux/string.h>
27#include <linux/buffer_head.h>
28#include <linux/writeback.h>
29#include <linux/pagevec.h>
30#include <linux/mpage.h>
31#include <linux/namei.h>
32#include <linux/uio.h>

--- 4623 unchanged lines hidden (view full) ---

4656 int error, rc = 0;
4657 int orphan = 0;
4658 const unsigned int ia_valid = attr->ia_valid;
4659
4660 error = inode_change_ok(inode, attr);
4661 if (error)
4662 return error;
4663
26#include <linux/quotaops.h>
27#include <linux/string.h>
28#include <linux/buffer_head.h>
29#include <linux/writeback.h>
30#include <linux/pagevec.h>
31#include <linux/mpage.h>
32#include <linux/namei.h>
33#include <linux/uio.h>

--- 4623 unchanged lines hidden (view full) ---

4657 int error, rc = 0;
4658 int orphan = 0;
4659 const unsigned int ia_valid = attr->ia_valid;
4660
4661 error = inode_change_ok(inode, attr);
4662 if (error)
4663 return error;
4664
4664 if (is_quota_modification(inode, attr))
4665 dquot_initialize(inode);
4665 if (is_quota_modification(inode, attr)) {
4666 error = dquot_initialize(inode);
4667 if (error)
4668 return error;
4669 }
4666 if ((ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid)) ||
4667 (ia_valid & ATTR_GID && !gid_eq(attr->ia_gid, inode->i_gid))) {
4668 handle_t *handle;
4669
4670 /* (user+group)*(old+new) structure, inode write (sb,
4671 * inode block, ? - but truncate inode update has it) */
4672 handle = ext4_journal_start(inode, EXT4_HT_QUOTA,
4673 (EXT4_MAXQUOTAS_INIT_BLOCKS(inode->i_sb) +

--- 46 unchanged lines hidden (view full) ---

4720 if (IS_ERR(handle)) {
4721 error = PTR_ERR(handle);
4722 goto err_out;
4723 }
4724 if (ext4_handle_valid(handle) && shrink) {
4725 error = ext4_orphan_add(handle, inode);
4726 orphan = 1;
4727 }
4670 if ((ia_valid & ATTR_UID && !uid_eq(attr->ia_uid, inode->i_uid)) ||
4671 (ia_valid & ATTR_GID && !gid_eq(attr->ia_gid, inode->i_gid))) {
4672 handle_t *handle;
4673
4674 /* (user+group)*(old+new) structure, inode write (sb,
4675 * inode block, ? - but truncate inode update has it) */
4676 handle = ext4_journal_start(inode, EXT4_HT_QUOTA,
4677 (EXT4_MAXQUOTAS_INIT_BLOCKS(inode->i_sb) +

--- 46 unchanged lines hidden (view full) ---

4724 if (IS_ERR(handle)) {
4725 error = PTR_ERR(handle);
4726 goto err_out;
4727 }
4728 if (ext4_handle_valid(handle) && shrink) {
4729 error = ext4_orphan_add(handle, inode);
4730 orphan = 1;
4731 }
4732 /*
4733 * Update c/mtime on truncate up, ext4_truncate() will
4734 * update c/mtime in shrink case below
4735 */
4736 if (!shrink) {
4737 inode->i_mtime = ext4_current_time(inode);
4738 inode->i_ctime = inode->i_mtime;
4739 }
4728 down_write(&EXT4_I(inode)->i_data_sem);
4729 EXT4_I(inode)->i_disksize = attr->ia_size;
4730 rc = ext4_mark_inode_dirty(handle, inode);
4731 if (!error)
4732 error = rc;
4733 /*
4734 * We have to update i_size under i_data_sem together
4735 * with i_disksize to avoid races with writeback code

--- 555 unchanged lines hidden ---
4740 down_write(&EXT4_I(inode)->i_data_sem);
4741 EXT4_I(inode)->i_disksize = attr->ia_size;
4742 rc = ext4_mark_inode_dirty(handle, inode);
4743 if (!error)
4744 error = rc;
4745 /*
4746 * We have to update i_size under i_data_sem together
4747 * with i_disksize to avoid races with writeback code

--- 555 unchanged lines hidden ---