All of lore.kernel.org
 help / color / mirror / Atom feed
From: yangwenfang <vicky.yangwenfang@huawei.com>
To: ocfs2-devel@oss.oracle.com
Subject: [Ocfs2-devel] [patch 03/15] ocfs2: call ocfs2_journal_access_di() before ocfs2_journal_dirty() in ocfs2_write_end_nolock()
Date: Mon, 22 Dec 2014 20:01:56 +0800	[thread overview]
Message-ID: <54980834.7040006@huawei.com> (raw)
In-Reply-To: <20141217230032.GS7238@wotan.suse.de>

On 2014/12/18 7:00, Mark Fasheh wrote:
> On Wed, Dec 17, 2014 at 01:33:31PM -0800, Andrew Morton wrote:
>>
>> So I now have a mess on my hands due to reordering
>> ocfs2-fix-journal-commit-deadlock.patch ahead of this patch.
>>
>> It concerns the label "out:".  Should it be placed before or after the
>> call to ocfs2_unlock_pages()?
>>
>> My current copy of ocfs2_write_end_nolock() is below, followed by my
>> current version of
>> ocfs2-call-ocfs2_journal_access_di-before-ocfs2_journal_dirty-in-ocfs2_write_end_nolock.patch
> 
> You want "out:" after ocfs2_unlock_pages() to give us a chance to free any
> locked pages on the write contesxt.
> 
> Btw, I have the following notes for this patch:
> 
> 
> Putting the journal_access_di in ocfs2_write_end is the correct thing to do,                                                  
> thanks. I think we want to keep the journal_access_di in ocfs2_write_begin                                                    
> though as we may change the disk inode when marking unwritten extents                                                         
> (see the call to ocfs2_mark_extent_written()). So:                                                                            
>                                                                                                                               
> - I would remove the comment above journal_access_di in write_begin but not                                                   
>   the actual call as we may dirty the inode buffer later.                                                                     
>
Hi, Mark,
About this patch, do you mean that: keep the journal_access_di() in ocfs2_write_begin,
and call journal_access_di() in the top ocfs2_write_end() again?
But I don't think it as a good idea. In some scenario, jbd2_journal_restart() might be
called after we call ocfs2_journal_access_di. and jbd2_journal_commit_transaction()
will commit the transaction. So calling ocfs2_journal_access_di() in ocfs2_write_end()
will lead to buffer_uptodate(bh) == 0, so BUG.

Am I right?

Thanks,
yangwenfang

> - Move the call to journal_access_di to the top of ocfs2_write_end_nolock as                                                  
>   I believe you might be missing some inode buffer updates there too.                                                         
> 
> 
> Thanks Andrew,
> 	--Mark
> 
> --
> Mark Fasheh
> 
> .
> 

      reply	other threads:[~2014-12-22 12:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-15 22:50 [Ocfs2-devel] [patch 03/15] ocfs2: call ocfs2_journal_access_di() before ocfs2_journal_dirty() in ocfs2_write_end_nolock() akpm at linux-foundation.org
2014-12-17 21:33 ` Andrew Morton
2014-12-17 23:00   ` Mark Fasheh
2014-12-22 12:01     ` yangwenfang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54980834.7040006@huawei.com \
    --to=vicky.yangwenfang@huawei.com \
    --cc=ocfs2-devel@oss.oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.