From: Chris Wedgwood <cw@f00f.org>
To: Alexander Viro <viro@math.psu.edu>
Cc: Linus Torvalds <torvalds@transmeta.com>,
linux-kernel@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>,
Chris Mason <mason@suse.com>
Subject: Re: [PATCH] 2.4.8-pre3 fsync entire path (+reiserfs fsync semantic change patch)
Date: Sat, 4 Aug 2001 11:16:45 +1200 [thread overview]
Message-ID: <20010804111645.C17925@weta.f00f.org> (raw)
In-Reply-To: <20010804100143.A17774@weta.f00f.org> <Pine.GSO.4.21.0108031814510.5264-100000@weyl.math.psu.edu>
In-Reply-To: <Pine.GSO.4.21.0108031814510.5264-100000@weyl.math.psu.edu>
On Fri, Aug 03, 2001 at 06:33:37PM -0400, Alexander Viro wrote:
Like an oopsable race absolutely trivial to exploit for any user
with write access to fs?
:(
a) dentry can freed under you. Just rename the parent while
you are syncing it. Then you'll block on attempt to take ->i_sem
on grandparent and merrily go to hell when parent will be moved
away and rename(2) will do dput() on grandparent.
Can I lock a dentry to prevent this?
b) access to ->d_parent requires at least one of the
following: dcache_lock, BKL, i_sem or ->i_zombie on inode of
parent.
I assume BLK lock is undesirable here? dcache_lock seems quite
reasonable and very cheap. I can't see how else to do it as getting
inode of parent required d_parent.
c) as it is, you will get a hell of IO load on a dumb fs.
dumb == anything that uses file_fsync() as ->fsync() of
directories. You'll do full sync of fs on every bloody step.
Yes, but it reality it's not that bad. As is, reiserfs and ext3 (used
to, might not now) sync pending transaction on fsync anyhow. Run lilo
recently on reiserfs of ext3? Ever seemed slow? strace -f and you'll
see it calls fsync after writing to the map files each time (no idea
why) and it it still acceptable.
d) sequence of inodes you sync has only one property
guaranteed: at some moment nth inode is a parent of
(n-1)th. That's it. E.g. it's easy to get a situation when _none_
of the inodes you sync had ever been a grandparent of the original
inode.
I'm not sure I follow you hear... is this because of bind semantics or
somethng else? I can see it relevant in the case of a fs mount in
/var/somewhere/blah when you fsync /var/somewhere/blah/dir/file, you
don't need to go past blah --- but how would I detect this 'edge'?
Thanks!
--cw
next prev parent reply other threads:[~2001-08-03 23:16 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <0108030507330F.00440@starship>
[not found] ` <Pine.GSO.4.21.0108022312211.1494-100000@weyl.math.psu.edu>
2001-08-03 13:09 ` intermediate summary of ext3-2.4-0.9.4 thread Daniel Phillips
2001-08-03 14:43 ` Horst von Brand
2001-08-03 17:49 ` Mike Castle
2001-08-04 3:23 ` Daniel Phillips
2001-08-03 18:08 ` Alexander Viro
2001-08-03 18:26 ` Daniel Phillips
2001-08-03 18:53 ` Alexander Viro
2001-08-03 20:50 ` Daniel Phillips
2001-08-04 3:43 ` Matthias Andree
2001-08-03 18:34 ` Linus Torvalds
2001-08-03 22:01 ` [PATCH] 2.4.8-pre3 fsync entire path (+reiserfs fsync semantic change patch) Chris Wedgwood
2001-08-03 22:33 ` Alexander Viro
2001-08-03 23:16 ` Chris Wedgwood [this message]
2001-08-03 23:23 ` Alexander Viro
2001-08-04 3:53 ` Matthias Andree
2001-08-04 5:48 ` Alexander Viro
2001-08-03 22:45 ` Alexander Viro
2001-08-03 23:09 ` Chris Wedgwood
2001-08-03 23:15 ` Alexander Viro
2001-08-03 23:20 ` Chris Wedgwood
2001-08-03 23:25 ` Alexander Viro
2001-08-03 23:35 ` Chris Wedgwood
2001-08-03 23:41 ` Alexander Viro
2001-08-03 23:46 ` Chris Wedgwood
2001-08-03 23:53 ` Alexander Viro
2001-08-04 7:45 ` [PATCH] 2.4.8-pre3 fsync entire path (+reiserfs fsync semanticchange patch) Hans Reiser
2001-08-04 18:31 ` Chris Wedgwood
2001-08-05 1:47 ` Alexander Viro
2001-08-08 17:22 ` [PATCH] 2.4.8-pre3 fsync entire path (+reiserfs fsync semanticchangepatch) Hans Reiser
2001-08-03 23:42 ` [PATCH] 2.4.8-pre3 fsync entire path (+reiserfs fsync semantic change patch) Alan Cox
2001-08-03 23:44 ` Chris Wedgwood
2001-08-04 1:08 ` Andrew Morton
2001-08-04 1:19 ` Chris Wedgwood
2001-08-04 1:45 ` Andrew Morton
2001-08-04 4:04 ` Matthias Andree
2001-08-04 18:30 ` Chris Wedgwood
2001-08-05 12:15 ` Matthias Andree
2001-08-05 12:32 ` Chris Wedgwood
2001-08-05 13:02 ` Matti Aarnio
2001-08-04 21:07 ` Andrew Morton
2001-08-04 21:07 ` Andrew Morton
2001-08-05 7:25 ` Chris Wedgwood
2001-08-09 13:25 ` Matthias Andree
2001-08-04 17:35 ` Jan Harkes
2001-08-04 18:18 ` Chris Wedgwood
2001-08-06 15:02 ` Chris Mason
2001-08-06 20:48 ` Chris Wedgwood
2001-08-03 22:29 ` Anton Altaparmakov
2001-08-03 23:06 ` Chris Wedgwood
2001-08-06 15:23 ` looking for resources for designing loopback filesystem dave-mlist
2001-08-06 16:11 ` Ville Herva
2001-08-03 18:36 ` intermediate summary of ext3-2.4-0.9.4 thread Matthias Andree
2001-08-03 19:16 ` Alexander Viro
2001-08-04 3:40 ` fdatasync(2) is also there (was: intermediate summary of ext3-2.4-0.9.4 thread) Matthias Andree
2001-08-05 0:28 ` Mike Castle
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=20010804111645.C17925@weta.f00f.org \
--to=cw@f00f.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=mason@suse.com \
--cc=torvalds@transmeta.com \
--cc=viro@math.psu.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®