aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2010-05-13 19:58:50 +0200
committerJan Kara <jack@suse.cz>2010-05-21 19:30:45 +0200
commitbc8e5f07392f05c47c8bdeff4f7098db440d065c (patch)
tree5ab56dabd75912267764849a594ec2f271fd4352 /kernel/rcutree.c
parent12755627bdcddcdb30a1bfb9a09395a52b1d6838 (diff)
downloadkernel_samsung_crespo-bc8e5f07392f05c47c8bdeff4f7098db440d065c.zip
kernel_samsung_crespo-bc8e5f07392f05c47c8bdeff4f7098db440d065c.tar.gz
kernel_samsung_crespo-bc8e5f07392f05c47c8bdeff4f7098db440d065c.tar.bz2
quota: Refactor dquot_transfer code so that OCFS2 can pass in its references
Currently, __dquot_transfer() acquires its own references of dquot structures that will be put into inode. But for OCFS2, this creates a lock inversion between dq_lock (waited on in dqget) and transaction start (started in ocfs2_setattr). Currently, deadlock is impossible because dq_lock is acquired only during dquot_acquire and dquot_release and we already hold a reference to dquot structures in ocfs2_setattr so neither of these functions can be called while we call dquot_transfer. But this is rather subtle and it is hard to teach lockdep about it. So provide __dquot_transfer function that can be passed dquot references directly. OCFS2 can then pass acquired dquot references directly to __dquot_transfer with proper locking. Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'kernel/rcutree.c')
0 files changed, 0 insertions, 0 deletions