• Jan Kara's avatar
    quota: Refactor dquot_transfer code so that OCFS2 can pass in its references · bc8e5f07
    Jan Kara authored
    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: default avatarJan Kara <jack@suse.cz>
    bc8e5f07
dquot.c 71.7 KB