ocfs2: fix quota file corruption
authorJan Kara <jack@suse.cz>
Mon, 3 Mar 2014 23:38:32 +0000 (15:38 -0800)
committerJiri Slaby <jslaby@suse.cz>
Sat, 22 Mar 2014 21:01:48 +0000 (22:01 +0100)
commit5a131c1d03f6a7bcb81101994038a4945a47c32e
tree0c7188ed6699a8f234ff6f0bb3f0a2d131582ddf
parentae865ad6db4dd82ed74f313ff0dd89f187318bc8
ocfs2: fix quota file corruption

commit 15c34a760630ca2c803848fba90ca0646a9907dd upstream.

Global quota files are accessed from different nodes.  Thus we cannot
cache offset of quota structure in the quota file after we drop our node
reference count to it because after that moment quota structure may be
freed and reallocated elsewhere by a different node resulting in
corruption of quota file.

Fix the problem by clearing dq_off when we are releasing dquot structure.
We also remove the DB_READ_B handling because it is useless -
DQ_ACTIVE_B is set iff DQ_READ_B is set.

Signed-off-by: Jan Kara <jack@suse.cz>
Cc: Goldwyn Rodrigues <rgoldwyn@suse.de>
Cc: Joel Becker <jlbec@evilplan.org>
Reviewed-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
fs/ocfs2/quota_global.c
fs/ocfs2/quota_local.c