From: Marco <marco.stornelli@gmail.com>
To: Jamie Lokier <jamie@shareable.org>
Cc: Linux Embedded <linux-embedded@vger.kernel.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Linux FS Devel <linux-fsdevel@vger.kernel.org>,
Daniel Walker <dwalker@soe.ucsc.edu>
Subject: Re: [PATCH 00/14] Pramfs: Persistent and protected ram filesystem
Date: Tue, 16 Jun 2009 21:15:22 +0200 [thread overview]
Message-ID: <4A37EF4A.1080006@gmail.com> (raw)
In-Reply-To: <20090616150750.GF29040@shareable.org>
Jamie Lokier wrote:
> Marco wrote:
>> There's the checksum, but the most important feature of this fs is the
>> write protection. The page table entries that map the
>> backing-store RAM are normally marked read-only. Write operations into
>> the filesystem temporarily mark the affected pages as writeable, the
>> write operation is carried out with locks held, and then the pte is
>> marked read-only again. This feature provides protection against
>> filesystem corruption caused by errant writes into the RAM due to
>> kernel bugs for instance. I provided a test module for this. When the
>> module is loaded tries to do a dirty write in the superblock, at this
>> point you should see an error on the write.
>
> Ok. Random question: does it work with NOMMU? :-) (I'm biased, my
> devices are NOMMU).
>
I have to say no. Or at least you can use it but you should select the
option to disable the write protection. Of course, from this point of
view there are some archs that they couldn't have this feature. I had to
disable when I worked with a board with avr32.
> Second question: what happens if the system crashing _during_ a write
> to a file. Does it mean that file will fail it's checksum when it's
> read at the next boot?
>
> Maybe files aren't so important. What about when you write a file,
> and then rename it over an existing file to replace it. (E.g. a
> config file), and the system crashes _during_ the rename? At the next
> boot, is it guaranteed to see either the old or the new file, or can
> the directory be corrupt / fail it's checksum?
First of all I have to explain better the current policy: the checksum
works at inode and superblock level and currently there isn't a recovery
function as the journaling. About the superblock it's easy to use a
redundant policy to be more robust. About the inode, at the moment when
the checksum doesn't match the inode it's marked as bad calling the
function make_bad_inode().
>>> As you say PRAMFS can work with special SRAMs needing memory
>>> protection (and maybe cache coherence?), if you mmap() a file does it
>>> need to use the page cache then? If so, do you have issues with
>>> coherency between mmap() and direct read/write?
>> See my response above about my concept of protection. However the mmap
>> it's a similar approach. I can "mmap" the SRAM and I can write into it
>> my data, but I think the possibility to have a fs it's great. We can use
>> the device as normal disk, i.e. we can use cp, mv and so on.
>
> I meant when you mmap() a file on the filesystem, like you do when
> running an executable, for example. Does mmap() on a file work or is
> it forbidden? Just curious, I'd guess it's forbidden, and you
> wouldn't want _direct_ mappings to the backing SRAM anyway so you can
> keep those checksums up to date.
>
Because pramfs attempts to avoid filesystem corruption caused by kernel
bugs, dirty pages in the page cache are not allowed to be written back
to the backing-store RAM. This means that only private file mappings are
supported. This way, an errant write into the page cache will not get
written back to the filesystem.
>>>> On this point I'd like to hear other embedded guys.
>>> As one, I'd like to say if it can checksum the RAM at boot as well,
>>> then I might like to use a small one in ordinary SRAM (at a fixed
>>> reserved address) for those occasions when a reboot happens
>>> (intentional or not) and I'd like to pass a little data to the next
>>> running kernel about why the reboot happened, without touching flash
>>> every time.
>>>
>>> -- Jamie
>> Yeah Jamie, the goal of this fs is exactly that!
>
> Great :-)
>
> -- Jamie
>
Marco
next prev parent reply other threads:[~2009-06-16 19:15 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-13 13:20 [PATCH 00/14] Pramfs: Persistent and protected ram filesystem Marco
2009-06-13 13:41 ` Daniel Walker
2009-06-13 15:59 ` Jamie Lokier
2009-06-14 7:15 ` Marco
2009-06-14 11:08 ` Artem Bityutskiy
2009-06-15 15:51 ` Bryan Henderson
2009-06-15 17:42 ` Marco
2009-06-14 11:46 ` Jamie Lokier
2009-06-14 16:04 ` Marco
2009-06-16 15:07 ` Jamie Lokier
2009-06-16 19:15 ` Marco [this message]
2009-06-24 17:41 ` Jamie Lokier
2009-06-25 6:44 ` Marco Stornelli
2009-06-26 11:30 ` Jamie Lokier
2009-06-26 16:56 ` Marco
2009-06-24 14:21 ` Pavel Machek
2009-06-21 6:40 ` Pavel Machek
2009-06-21 17:34 ` Marco
2009-06-21 20:52 ` Pavel Machek
2009-06-22 6:33 ` Marco Stornelli
2009-06-22 17:20 ` Pavel Machek
2009-06-22 17:31 ` Tim Bird
2009-06-22 17:37 ` Pavel Machek
2009-06-22 18:07 ` Marco
2009-06-22 20:40 ` Henrique de Moraes Holschuh
2009-06-22 20:40 ` Pavel Machek
2009-06-22 21:50 ` Tim Bird
2009-06-22 21:57 ` Pavel Machek
2009-06-22 22:38 ` Pavel Machek
2009-06-22 23:26 ` Chris Friesen
2009-06-23 1:42 ` David VomLehn
2009-06-23 18:07 ` Marco
2009-06-23 18:29 ` Pavel Machek
2009-06-24 17:47 ` Jamie Lokier
2009-06-25 6:32 ` Marco Stornelli
2009-06-22 18:55 ` Tim Bird
2009-06-22 21:02 ` Pavel Machek
2009-06-22 22:02 ` Tim Bird
2009-06-22 18:08 ` Marco
2009-06-15 17:15 ` Tim Bird
2009-06-15 17:44 ` Marco
2009-06-15 17:58 ` Tim Bird
2009-06-17 18:32 ` Chris Friesen
2009-06-18 6:35 ` Marco Stornelli
[not found] <4a4254e2.09c5660a.109d.46f8@mx.google.com>
2009-06-24 16:49 ` Marco
2009-06-24 17:38 ` Marco
2009-06-24 17:59 ` Pavel Machek
2009-06-25 6:30 ` Marco Stornelli
2009-06-28 8:59 ` Pavel Machek
2009-06-28 16:44 ` Marco Stornelli
2009-06-28 17:33 ` Marco Stornelli
2009-07-09 23:42 ` Pavel Machek
2009-06-24 17:46 ` Pavel Machek
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=4A37EF4A.1080006@gmail.com \
--to=marco.stornelli@gmail.com \
--cc=dwalker@soe.ucsc.edu \
--cc=jamie@shareable.org \
--cc=linux-embedded@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).