[Ocfs2-devel] ocfs2 quota qs.
Tao Ma
tao.ma at oracle.com
Wed Jul 29 07:29:17 PDT 2009
Jan Kara wrote:
> On Wed 29-07-09 17:04:14, Tao Ma wrote:
>
>> Hi Jan,
>> I am now reading quota support in ocfs2 and have some qs. Wish you can
>> help me clarify it. Thanks.
>>
>> ocfs2_quota_write:
>> In the comment, you said that "we know the transaction is already
>> started", so it should be called within a transaction. But in this
>> function, we call ocfs2_extend_no_holes and ocfs2_simple_size_update which
>> will start another transaction. So we can survive with nested transaction
>> or this scenario will never happen?
>>
> The comment is right, we absolutely require a transaction being started
> when when entering ocfs2_quota_write(), otherwise deadlocks could occur.
> JBD supports nested transactions - when journal_start() is called and
> the current process already has a transaction open, it just returns the
> currently open transaction. So you only have to be sure to initially ask
> for enough credits when opening the transaction - and quota code hopefully
> gets this right.
> Hmm, but looking at the code again, there's one catch - normally,
> allocator locks nest outside the transaction and in ocfs2_quota_write()
> they are acquired inside the transaction and that can lead to deadlocks.
> Aw, that's going to be nasty to fix... I have to rethink the locking
> logic...
> Thanks for your inquiry :)
>
Thank you for the explanation.
Regards,
Tao
More information about the Ocfs2-devel
mailing list