From: Chris Mason <chris.mason@oracle.com>
To: Mike Waychison <mikew@google.com>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
Mike Waychison <mikew@google.com>
Subject: Re: [patch 4/6][RFC] Attempt to plug race with truncate
Date: Mon, 29 Oct 2007 09:36:18 -0400 [thread overview]
Message-ID: <20071029093618.2c671643@think.oraclecorp.com> (raw)
In-Reply-To: <20071026233848.693899140@crlf.corp.google.com>
On Fri, 26 Oct 2007 16:37:36 -0700
Mike Waychison <mikew@google.com> wrote:
> Attempt to deal with races with truncate paths.
>
> I'm not really sure on the locking here, but these seem to be taken
> by the truncate path. BKL is left as some filesystem may(?) still
> require it.
>
> Signed-off-by: Mike Waychison <mikew@google.com>
> fs/ioctl.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> Index: linux-2.6.23/fs/ioctl.c
> ===================================================================
> --- linux-2.6.23.orig/fs/ioctl.c 2007-10-26 15:27:29.000000000
> -0700 +++ linux-2.6.23/fs/ioctl.c 2007-10-26
> 16:16:28.000000000 -0700 @@ -43,13 +43,21 @@ static long
> do_ioctl(struct file *filp, static int do_fibmap(struct address_space
> *mapping, sector_t block, sector_t *phys_block)
> {
> + struct inode *inode = mapping->host;
> +
> if (!capable(CAP_SYS_RAWIO))
> return -EPERM;
> if (!mapping->a_ops->bmap)
> return -EINVAL;
>
> lock_kernel();
> + /* Avoid races with truncate */
> + mutex_lock(&inode->i_mutex);
> + /* FIXME: Do we really need i_alloc_sem? */
> + down_read(&inode->i_alloc_sem);
i_alloc_sem will avoid races with filesystems filling holes inside
writepage (where i_mutex isn't held). I'd expect everyone to currently
give some consistent result (either the old value or the new but not
garbage), but I wouldn't expect taking the semaphore to hurt anything.
-chris
next prev parent reply other threads:[~2007-10-29 13:36 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-26 23:37 [patch 0/6][RFC] Cleanup FIBMAP Mike Waychison
2007-10-26 23:37 ` [patch 1/6][RFC] Keep FIBMAP from looking at negative block nrs Mike Waychison
2007-10-26 23:37 ` [patch 2/6][RFC] Allow FIBMAP to return EFBIG on large filesystems Mike Waychison
2007-10-26 23:37 ` [patch 3/6][RFC] Move FIBMAP logic Mike Waychison
2007-10-26 23:37 ` [patch 4/6][RFC] Attempt to plug race with truncate Mike Waychison
2007-10-29 13:36 ` Chris Mason [this message]
2007-10-26 23:37 ` [patch 5/6][RFC] Introduce FIBMAP64 Mike Waychison
2007-10-29 13:45 ` Chris Mason
2007-10-26 23:37 ` [patch 6/6][RFC] Drop CAP_SYS_RAWIO requirement on FIBMAP Mike Waychison
2007-10-27 17:57 ` [patch 0/6][RFC] Cleanup FIBMAP Anton Altaparmakov
2007-10-27 21:45 ` Szabolcs Szakacsits
2007-10-29 14:10 ` Chris Mason
2007-10-29 16:30 ` Zach Brown
2007-10-29 19:18 ` Mike Waychison
2007-10-29 19:46 ` Chris Mason
2007-10-29 20:01 ` Zach Brown
2007-10-29 20:00 ` Zach Brown
2007-10-31 11:06 ` Ric Wheeler
2007-10-31 16:16 ` Zach Brown
2007-10-31 17:17 ` Ric Wheeler
2007-10-29 19:16 ` Mike Waychison
2007-10-29 19:47 ` Andreas Dilger
2007-10-28 0:43 ` H. Peter Anvin
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=20071029093618.2c671643@think.oraclecorp.com \
--to=chris.mason@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mikew@google.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.