quota: Fix dquot_transfer for filesystems different from ext4
Commit fd8fbfc1
modified the way we find amount of reserved space
belonging to an inode. The amount of reserved space is checked
from dquot_transfer and thus inode_reserved_space gets called
even for filesystems that don't provide get_reserved_space callback
which results in a BUG.
Fix the problem by checking get_reserved_space callback and return 0 if
the filesystem does not provide it.
CC: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
3c8ad49b01
commit
05b5d89823
1 changed files with 3 additions and 0 deletions
|
@ -1377,6 +1377,9 @@ static void inode_sub_rsv_space(struct inode *inode, qsize_t number)
|
||||||
static qsize_t inode_get_rsv_space(struct inode *inode)
|
static qsize_t inode_get_rsv_space(struct inode *inode)
|
||||||
{
|
{
|
||||||
qsize_t ret;
|
qsize_t ret;
|
||||||
|
|
||||||
|
if (!inode->i_sb->dq_op->get_reserved_space)
|
||||||
|
return 0;
|
||||||
spin_lock(&inode->i_lock);
|
spin_lock(&inode->i_lock);
|
||||||
ret = *inode_reserved_space(inode);
|
ret = *inode_reserved_space(inode);
|
||||||
spin_unlock(&inode->i_lock);
|
spin_unlock(&inode->i_lock);
|
||||||
|
|
Loading…
Reference in a new issue