From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Monakhov Subject: [PATCH 3/7] vfs: do not allow inode_setattr() to fail after vfs_dq_transfer() Date: Fri, 19 Feb 2010 22:47:21 +0300 Message-ID: <1266608845-13212-4-git-send-email-dmonakhov@openvz.org> References: <1266608845-13212-1-git-send-email-dmonakhov@openvz.org> <1266608845-13212-2-git-send-email-dmonakhov@openvz.org> <1266608845-13212-3-git-send-email-dmonakhov@openvz.org> Cc: linux-fsdevel@vger.kernel.org, Dmitry Monakhov To: linux-kernel@vger.kernel.org Return-path: Received: from mail-bw0-f209.google.com ([209.85.218.209]:38652 "EHLO mail-bw0-f209.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750890Ab0BSTrk (ORCPT ); Fri, 19 Feb 2010 14:47:40 -0500 In-Reply-To: <1266608845-13212-3-git-send-email-dmonakhov@openvz.org> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: After quota was transfered, inode_setattr() may fail. This is tricky situation because it may be impossible to roll-back quota changes. But we have already done all necessery changes in inode_change_ok() so it is safe to use nofail version of inode_seattr() here. Signed-off-by: Dmitry Monakhov --- fs/attr.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/fs/attr.c b/fs/attr.c index cc2a801..c1ae61c 100644 --- a/fs/attr.c +++ b/fs/attr.c @@ -243,7 +243,11 @@ int notify_change(struct dentry * dentry, struct iattr * attr) error = vfs_dq_transfer(inode, attr) ? -EDQUOT : 0; if (!error) - error = inode_setattr(inode, attr); + /* + * All necessery check already done, it is + * safe to use nofail version here. + */ + __inode_setattr(inode, attr); } } -- 1.6.6