From: Christoph Hellwig <hch@infradead.org>
To: "Adam J. Richter" <adam@yggdrasil.com>
Cc: aia21@cantab.net, kernel@bonin.ca, linux-kernel@vger.kernel.org
Subject: Re: Loop devices under NTFS
Date: Tue, 27 Aug 2002 18:04:27 +0100 [thread overview]
Message-ID: <20020827180427.A30606@infradead.org> (raw)
In-Reply-To: <200208271353.GAA04875@adam.yggdrasil.com>; from adam@yggdrasil.com on Tue, Aug 27, 2002 at 06:53:19AM -0700
On Tue, Aug 27, 2002 at 06:53:19AM -0700, Adam J. Richter wrote:
> Why?
>
> According to linux-2.5.31/Documentation/Locking,
> "->prepare_write(), ->commit_write(), ->sync_page() and ->readpage()
> may be called from the request handler (/dev/loop)."
Just because it's present in current code it doesn't mean it's right.
Calling aops directly from generic code is a layering violation and
it will not survive 2.5.
> Using the page cache in loop.c saves a copy when there is a
> data transformation (such as encryption) involved, and that can be
> important for reducing the cost of privacy.
Separating a stackalbe encryption block device from the loop driver is
a good idea. The current loop code is a horrible mess because it tries
to do the job of three drivers in one.
> >Depending on the filesystem implementation _anything_ may happen.
> >With current intree filesystems the only real life problem is that
> >it doesn't work on certain filesystems.
>
> Sorry for repeating myself here: If you're referring to the
> stock loop.c not working with tmpfs because tmpfs lacks
> {prepare,commit}_write which my patch works around (based on Jari's
> patch before mine, and a patch by Andrew Morton as well). I have yet
> to hear a clear reason why any writable plain file on any given file
> system could not have {prepare,commit}_write operations available.
No, tmpfs also does not use generic_file_read but a sligh variation,
calling do_generic_file_read on tmpfs inodes will not always works as
expected. Don't do it.
> Please come up with a clear example. I'm not asking you for a
> test case that can produce it, just some narrative of the problem
> occurring.
loop on nfs, do_generic_file_read is called without the needed
nfs_revalidate_inode, thus i_size is outdated, and loop might happily
read out of the filesize.
> I am aware that you can get races if someone mounts a loop
> device while accessing the underlying file by some other mechanism,
> but I believe that the only case where that would be done in practice
> is to change the encryption of a device, and, because of the read and
> write patterns involved in that, it should not be a problem.
This is true for filesystems like nfs (above) that only revalidate and then
call generic_file_read. For totally different implementations anything can
happen. Even if it mostly works it's not the kind of design we want to have
in the kernel.
next prev parent reply other threads:[~2002-08-27 17:00 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-08-27 13:53 Adam J. Richter
2002-08-27 17:04 ` Christoph Hellwig [this message]
2002-08-27 17:26 ` Jan Harkes
-- strict thread matches above, loose matches on Subject: below --
2002-08-29 11:00 Adam J. Richter
2002-08-29 11:27 ` Anton Altaparmakov
2002-08-29 15:16 ` Jari Ruusu
2002-08-28 9:17 Adam J. Richter
2002-08-28 1:49 Adam J. Richter
2002-08-28 8:36 ` Urban Widmark
2002-08-28 1:06 Adam J. Richter
2002-08-28 15:50 ` Andre Bonin
2002-08-28 16:41 ` Christoph Hellwig
2002-08-27 23:42 Adam J. Richter
2002-08-27 23:59 ` Christoph Hellwig
2002-08-27 13:23 Adam J. Richter
2002-08-27 13:27 ` Christoph Hellwig
2002-08-27 12:40 Adam J. Richter
2002-08-27 12:46 ` Anton Altaparmakov
2002-08-27 13:15 ` Christoph Hellwig
2002-08-27 4:48 Andre Bonin
2002-08-27 9:17 ` Anton Altaparmakov
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=20020827180427.A30606@infradead.org \
--to=hch@infradead.org \
--cc=adam@yggdrasil.com \
--cc=aia21@cantab.net \
--cc=kernel@bonin.ca \
--cc=linux-kernel@vger.kernel.org \
/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®