All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.