]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/2.6.31.12/quota-fix-dquot_transfer-for-filesystems-different-from-ext4.patch
Linux 2.6.31.12
[thirdparty/kernel/stable-queue.git] / releases / 2.6.31.12 / quota-fix-dquot_transfer-for-filesystems-different-from-ext4.patch
CommitLineData
a5dc67e6
GKH
1From 05b5d898235401c489c68e1f3bc5706a29ad5713 Mon Sep 17 00:00:00 2001
2From: Jan Kara <jack@suse.cz>
3Date: Wed, 6 Jan 2010 18:03:36 +0100
4Subject: quota: Fix dquot_transfer for filesystems different from ext4
5
6From: Jan Kara <jack@suse.cz>
7
8commit 05b5d898235401c489c68e1f3bc5706a29ad5713 upstream.
9
10Commit fd8fbfc1 modified the way we find amount of reserved space
11belonging to an inode. The amount of reserved space is checked
12from dquot_transfer and thus inode_reserved_space gets called
13even for filesystems that don't provide get_reserved_space callback
14which results in a BUG.
15
16Fix the problem by checking get_reserved_space callback and return 0 if
17the filesystem does not provide it.
18
19CC: Dmitry Monakhov <dmonakhov@openvz.org>
20Signed-off-by: Jan Kara <jack@suse.cz>
21Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
22
23---
24 fs/quota/dquot.c | 3 +++
25 1 file changed, 3 insertions(+)
26
27--- a/fs/quota/dquot.c
28+++ b/fs/quota/dquot.c
29@@ -1425,6 +1425,9 @@ static void inode_sub_rsv_space(struct i
30 static qsize_t inode_get_rsv_space(struct inode *inode)
31 {
32 qsize_t ret;
33+
34+ if (!inode->i_sb->dq_op->get_reserved_space)
35+ return 0;
36 spin_lock(&inode->i_lock);
37 ret = *inode_reserved_space(inode);
38 spin_unlock(&inode->i_lock);