From: Zheng Liu <gnehzuil.liu@gmail.com>
To: "Lukáš Czerner" <lczerner@redhat.com>
Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
xiaoqiangnk@gmail.com, achender@linux.vnet.ibm.com,
wenqing.lz@taobao.com
Subject: Re: [RFC][PATCH 09/10 v1][RESEND] ext4: don't need to writeout all dirty pages in punch hole
Date: Mon, 23 Jul 2012 21:18:01 +0800 [thread overview]
Message-ID: <20120723131801.GA4254@gmail.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1207231354220.20857@localhost>
On Mon, Jul 23, 2012 at 02:20:57PM +0200, Lukáš Czerner wrote:
[cut...]
> > > Moreover I think that we should avoid taking i_mutex if we can and I
> > > believe that we can in this case, because we only need to prevent
> > > allocation. So I just want to let you know that this part is
> > > probably going to change anyway.
> >
> > It seems that we need to take i_mutex locking to prevent from buffered
> > writes after page cache has been truncated by truncate_pagecache_range.
> > If a buffered write without delalloc occurs after truncating page cache
> > and before taking i_data_sem, that means that the allocated block for
> > this buffered write will be removed in ext4_ext_remove_space when the
> > offset is within the range of the hole. Am I missing something?
>
> You're absolutely right, currently this is possible. But I think that we
> can take i_data_sem before truncating the pagecache hence preventing anyone
> from mapping new blocks. However this is not yet implemented in my
> patch set.
>
> ...
> hmm, looking at the ext4_write_begin() it seems like it might not be
> such good idea after all. It seems to take page lock before
> i_data_sem so we might get deadlock, moreover if the punch hole
> happened in the middle of the ext4_write_begin() we might have only
> part of the data written, moreover this does not have to be hole
> aligned, which is bad. I need to revise that.
Yes, this is why I think that i_mutex locking should be taken. At least
we are safty when we take the i_mutex. :-)
Regards,
Zheng
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-07-23 13:09 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-22 7:59 [RFC][PATCH 00/10 v1][RESEND] ext4: extent status tree (step 1) Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 01/10 v1][RESEND] ext4: add two structures supporting extent status tree Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 02/10 v1][RESEND] ext4: add operations on " Zheng Liu
2012-07-31 11:55 ` Lukáš Czerner
2012-07-31 13:18 ` Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 03/10 v1][RESEND] ext4: initialize " Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 04/10 v1][RESEND] ext4: let ext4 maintain " Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 05/10 v1][RESEND] ext4: add some tracepoints in " Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 06/10 v1][RESEND] ext4: reimplement fiemap on " Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 07/10 v1][RESEND] ext4: reimplement ext4_find_delay_alloc_range " Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 08/10 v1][RESEND] ext4: introduce lseek SEEK_DATA/SEEK_HOLE support Zheng Liu
2012-07-22 7:59 ` [RFC][PATCH 09/10 v1][RESEND] ext4: don't need to writeout all dirty pages in punch hole Zheng Liu
2012-07-23 11:01 ` Lukáš Czerner
2012-07-23 11:57 ` Zheng Liu
2012-07-23 12:20 ` Lukáš Czerner
2012-07-23 13:18 ` Zheng Liu [this message]
2012-07-22 7:59 ` [RFC][PATCH 10/10 v1][RESEND] ext4: add two tracepoints in punching hole Zheng Liu
2012-07-27 13:43 ` Lukáš Czerner
2012-07-30 2:15 ` Zheng Liu
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=20120723131801.GA4254@gmail.com \
--to=gnehzuil.liu@gmail.com \
--cc=achender@linux.vnet.ibm.com \
--cc=lczerner@redhat.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=wenqing.lz@taobao.com \
--cc=xiaoqiangnk@gmail.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.