* [Ocfs2-devel] ocfs2 quota qs.
@ 2009-07-29 9:04 Tao Ma
2009-07-29 10:37 ` Jan Kara
0 siblings, 1 reply; 3+ messages in thread
From: Tao Ma @ 2009-07-29 9:04 UTC (permalink / raw)
To: ocfs2-devel
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?
Regards,
Tao
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Ocfs2-devel] ocfs2 quota qs.
2009-07-29 9:04 [Ocfs2-devel] ocfs2 quota qs Tao Ma
@ 2009-07-29 10:37 ` Jan Kara
2009-07-29 14:29 ` Tao Ma
0 siblings, 1 reply; 3+ messages in thread
From: Jan Kara @ 2009-07-29 10:37 UTC (permalink / raw)
To: ocfs2-devel
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 :)
Honza
--
Jan Kara <jack@suse.cz>
SUSE Labs, CR
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Ocfs2-devel] ocfs2 quota qs.
2009-07-29 10:37 ` Jan Kara
@ 2009-07-29 14:29 ` Tao Ma
0 siblings, 0 replies; 3+ messages in thread
From: Tao Ma @ 2009-07-29 14:29 UTC (permalink / raw)
To: ocfs2-devel
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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-07-29 14:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-29 9:04 [Ocfs2-devel] ocfs2 quota qs Tao Ma
2009-07-29 10:37 ` Jan Kara
2009-07-29 14:29 ` Tao Ma
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.