public inbox for linux-fsdevel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jamie Lokier <jamie@shareable.org>
To: Shaya Potter <spotter@cs.columbia.edu>
Cc: Christoph Hellwig <hch@infradead.org>, linux-fsdevel@vger.kernel.org
Subject: Re: which dentry a page belongs to
Date: Fri, 23 Apr 2004 18:37:19 +0100	[thread overview]
Message-ID: <20040423173719.GB7335@mail.shareable.org> (raw)
In-Reply-To: <1082740707.1943.61.camel@zaphod>

Shaya Potter wrote:
> > you can be in writepage with page->mapping->i_mmap{,shared} beeing empty.
> > No way in hell you'll ever get to a dentry.
> 
> the question being in what cases will that happen, so I can make a
> determination if I care about those cases.  (i.e. if the dentry is
> deleted, I don't particularly care, as since I am versioning, if it's
> already been deleted, don't care)
> 
> i.e. how can I determine where i_mmap{,shared} exist and when does't it?
> (in file system page context).

If you do mmap, then modify the pages, then munmap or exit, your
->writpage function is sometimes called _after_ that.

That means you can get no vmas in i_mmap{,shared} when doing
perfectly normal writable shared mappings.

Even if you do find vmas, they can easily correspond to the wrong
dentries, so you'll operate on the wrong files in your stackable fs.

Your problem is that you are trying to use ->writepage for something
it doesn't do.

You should be using the ->mmap operations of file_operations instead,
and do your versioning operation at the time a writable shared mapping
is created.  (The kernel does not provide a way to track when pages
are actually modified through a specific mapping).  You can look in
generic_file_mmap() to see the condition which tests for a writable
shared mapping.  Test that, do the versioning operation, and then call
generic_file_mmap from your own mmap function to finish the job.

-- Jamie

  parent reply	other threads:[~2004-04-23 17:37 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-04-23 14:57 which dentry a page belongs to Shaya Potter
2004-04-23 15:14 ` Jamie Lokier
2004-04-23 15:42   ` Shaya Potter
2004-04-23 16:37     ` Christoph Hellwig
2004-04-23 16:52       ` Shaya Potter
2004-04-23 17:01         ` Christoph Hellwig
2004-04-23 17:18           ` Shaya Potter
2004-04-23 17:22             ` Christoph Hellwig
2004-04-23 17:32               ` Shaya Potter
2004-04-23 17:37             ` Jamie Lokier [this message]
2004-04-23 17:59               ` Shaya Potter
2004-04-23 22:13                 ` Jamie Lokier
2004-04-23 18:05               ` Shaya Potter
2004-04-23 21:37                 ` Jamie Lokier
2004-04-23 22:26                   ` Shaya Potter
2004-04-23 22:49                     ` Jamie Lokier
2004-04-25  5:23                       ` Shaya Potter
2004-04-25 23:22                         ` Erez Zadok
2004-04-24  8:53           ` Jan Hudec
2004-04-24  8:44       ` Jan Hudec
2004-04-24  9:20         ` Christoph Hellwig
2004-04-24  9:32           ` Jan Hudec

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=20040423173719.GB7335@mail.shareable.org \
    --to=jamie@shareable.org \
    --cc=hch@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=spotter@cs.columbia.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