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 --- |