mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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.


  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®