public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@argo.co.il>
To: Theodore Tso <tytso@mit.edu>
Cc: Thomas Glanzmann <sithglan@stud.uni-erlangen.de>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: ext4 features
Date: Wed, 05 Jul 2006 17:04:17 +0300	[thread overview]
Message-ID: <44ABC6E1.7050200@argo.co.il> (raw)
In-Reply-To: <20060704010240.GD6317@thunk.org>

Theodore Tso wrote:
>
> could argue that such a stupid student doesnt *deserve* to get a 
> Ph.D.  :-)
>
> >         * and snapshots on filesystem basis
>
> This requires a filesystem that is designed from the get-go to support
> snapshots.  So yes, it's lilely not going to happen for ext4.
> Although, if you have a really clever idea, feel free to post patches
> or a detailed technical proposal for how to achieve such a goal.  :-)
>

To take a snapshot of a file, copy its inode to a free inode (call it a 
frozen inode, or finode). The inode is at the head of a linked list of 
finodes, each older than its predecessor.

Finodes have the same content as the inode they were clones from except 
the extent map. A new finode's extent map contains a single extent the 
size of the entire file with a flag that means "look in the nearest 
future finode (or inode)".

When writing to a file, first look at the nearest finode's mapping for 
that range. If it has a normal extent, go ahead and write. If it has a 
future extent for that range, first transfer that extent to the finode 
(replacing the future extent), then write the data to newly allocated 
extents. Of course this process can break up extents. One can choose 
whether to transfer the block pointers or just the data; a tradeoff of 
additional data copying vs. fragmentation avoidance.

When reading from a finode, if you're reading a normal extent, proceed 
normally. If you encounter a future extent, keep searching for the range 
in newer finodes until you encounter a normal extent or the base inode.

To snapshot the entire filesystem, have a snapshot generation count in 
the superblock and in each inode. Incrementing the superblock generation 
count snapshots the filesystem. Whenever you write to a file, if its 
generation number lags the filesystem generation number, you take a file 
snapshot as outlined above.

Directories are handled in the same way as files, although special care 
is necessary for inode reference counts.

Deleting a snapshots means merging the preceding and next finodes' 
extent maps and freeing blocks. We'd need a linked list of all finodes 
belonging to a snapshot generation.



-- 
error compiling committee.c: too many arguments to function


  parent reply	other threads:[~2006-07-05 14:04 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-01 16:33 ext4 features Thomas Glanzmann
2006-07-01 17:07 ` Tomasz Torcz
2006-07-01 17:47   ` Thomas Glanzmann
2006-07-01 18:09     ` Claudio Martins
2006-07-01 18:59       ` Thomas Glanzmann
2006-07-01 18:17     ` Tomasz Torcz
2006-07-03  9:44       ` Gabor Gombas
2006-07-03 20:22       ` Helge Hafting
2006-07-03 20:55         ` Tomasz Torcz
2006-07-03 21:01           ` Arjan van de Ven
2006-07-03 21:46             ` Jeff V. Merkey
2006-07-03 21:25               ` Diego Calleja
2006-07-03 22:17                 ` Alan Cox
2006-07-04 14:45                   ` Jan Engelhardt
2006-07-04 16:35                     ` Jeffrey V. Merkey
2006-07-04 18:52                       ` Jeff Garzik
2006-07-04 19:40                         ` Jeffrey V. Merkey
2006-07-05 13:35                       ` Lew Palm
2006-07-03 23:01                 ` Jeff V. Merkey
2006-07-04  9:14                 ` Benny Amorsen
2006-07-05  4:21                   ` Bill Davidsen
2006-07-05  5:13                     ` H. Peter Anvin
2006-07-05  5:45                       ` Jeffrey V. Merkey
2006-07-07 14:12                         ` Pavel Machek
2006-07-05 10:38                       ` Krzysztof Halasa
2006-07-07 14:10                     ` Pavel Machek
2006-07-07 17:45                       ` Krzysztof Halasa
2006-07-07 21:30                         ` Pavel Machek
2006-07-08 10:52                           ` Krzysztof Halasa
2006-07-08 10:55                             ` Pavel Machek
2006-07-08 11:19                               ` Krzysztof Halasa
2006-07-08 11:23                                 ` Pavel Machek
2006-07-08 18:45                                 ` Avi Kivity
2006-07-08 20:24                                   ` Krzysztof Halasa
2006-07-04  9:22                 ` Petr Tesarik
2006-07-04 11:35                   ` Peter Zijlstra
2006-07-04 11:55                     ` ext4 features (salvage) Petr Tesarik
     [not found]                       ` <80294dc60607040508l1022d164ybe0ba10858e54f0c@mail.gmail.com>
2006-07-04 12:31                         ` Petr Tesarik
2006-07-04 12:42                           ` Helge Hafting
2006-07-04 16:20                       ` Matthew Frost
2006-07-04 15:25                     ` ext4 features Pavel Machek
2006-07-05  4:10                     ` Bill Davidsen
2006-07-03 21:46               ` Valdis.Kletnieks
     [not found]                 ` <Pine.LNX.4.61.0607032354170.31747@yvahk01.tjqt.qr>
2006-07-04 14:37                   ` Kernel recycler [was: ext4 features] Jan Engelhardt
2006-07-04 11:14               ` ext4 features Krzysztof Halasa
2006-07-04 22:35               ` Frank van Maarseveen
2006-07-04 23:47                 ` Claudio Martins
2006-07-03 22:12             ` Alan Cox
2006-07-03 21:59               ` Arjan van de Ven
2006-07-03 23:31               ` ext4 features (checksums) Neil Brown
2006-07-04  1:03                 ` Jeff Garzik
2006-07-04  6:09                 ` Avi Kivity
2006-07-04  7:02                   ` Neil Brown
2006-07-04  8:26                     ` Avi Kivity
2006-07-05 11:56                       ` Bill Davidsen
2006-07-05 12:06                   ` Bill Davidsen
2006-07-05 12:19                     ` Avi Kivity
2006-07-08 17:54                       ` Bill Davidsen
2006-07-04  8:17                 ` Alan Cox
2006-07-04 11:08                   ` Thomas Glanzmann
2006-07-04 11:19                 ` Krzysztof Halasa
2006-07-04 12:49                   ` Helge Hafting
2006-07-05 12:01                     ` Bill Davidsen
2006-07-05 12:10                       ` Avi Kivity
2006-07-08 18:02                         ` Bill Davidsen
2006-07-06  0:36           ` Blatant layering violations (was Re: ext4 features) Valerie Henson
2006-07-06 12:15             ` Xavier Bestel
2006-07-06 17:06               ` Valdis.Kletnieks
2006-07-06 20:02             ` Tom Vier
2006-07-03 21:34         ` ext4 features Bill Davidsen
2006-07-03 21:50           ` Valdis.Kletnieks
2006-07-03 22:04             ` Bruce Ferrell
2006-07-04 14:48               ` Valdis.Kletnieks
2006-07-03 23:00             ` Bill Davidsen
2006-07-04 15:01               ` Valdis.Kletnieks
2006-07-05  2:40                 ` Bill Davidsen
2006-07-05  2:47                   ` Valdis.Kletnieks
2006-07-04 12:52             ` Helge Hafting
2006-07-06 15:12       ` Ric Wheeler
2006-07-06 17:05         ` Krzysztof Halasa
2006-07-06 17:27           ` Ric Wheeler
2006-07-06 20:52             ` Valdis.Kletnieks
2006-07-07 17:41               ` Krzysztof Halasa
2006-07-07 17:34             ` Krzysztof Halasa
2006-07-04  1:02 ` Theodore Tso
2006-07-04 19:16   ` Thomas Glanzmann
2006-07-04 19:30   ` Valdis.Kletnieks
2006-07-05 12:24   ` Bill Davidsen
2006-07-05 12:59     ` J. Bruce Fields
2006-07-05 13:17       ` Pádraig Brady
2006-07-05 19:33       ` Trond Myklebust
2006-07-05 21:22         ` Bill Davidsen
2006-07-05 21:42           ` Trond Myklebust
2006-07-08 21:04             ` Bill Davidsen
2006-07-10 20:08               ` Trond Myklebust
2006-07-10 22:37                 ` Bill Davidsen
2006-07-11  2:36                   ` Trond Myklebust
2006-07-21  3:10                     ` Bill Davidsen
2006-07-21 12:06                       ` Trond Myklebust
2006-07-21 14:36                         ` Theodore Tso
2006-07-21 19:02                           ` Trond Myklebust
2006-07-22 12:25                             ` Theodore Tso
2006-07-05 21:12       ` Bill Davidsen
2006-07-05 21:27         ` linux-os (Dick Johnson)
2006-07-05 21:41         ` J. Bruce Fields
2006-07-06  2:32           ` Bill Davidsen
2006-07-06  2:42             ` Nigel Cunningham
2006-07-06 12:43             ` Trond Myklebust
2006-07-07  2:15               ` Bill Davidsen
2006-07-07  2:30                 ` Trond Myklebust
2006-07-07  2:42                 ` Ric Wheeler
2006-07-07  2:46                   ` Trond Myklebust
2006-07-07  3:16                     ` Bill Davidsen
2006-07-07  8:09                       ` Bernd Petrovitsch
2006-07-07 14:56                       ` Trond Myklebust
2006-07-07 19:52                 ` Theodore Tso
2006-07-05 14:04   ` Avi Kivity [this message]
2006-07-04 14:36 ` Andi Kleen
2006-07-04 14:43   ` Thomas Glanzmann
     [not found] <6tVcC-1e1-79@gated-at.bofh.it>
     [not found] ` <6tVcC-1e1-81@gated-at.bofh.it>
     [not found]   ` <6tVcC-1e1-83@gated-at.bofh.it>
     [not found]     ` <6tWib-2Ly-7@gated-at.bofh.it>
     [not found]       ` <6uDdv-7bs-3@gated-at.bofh.it>
     [not found]         ` <6uDGF-7Nj-47@gated-at.bofh.it>
     [not found]           ` <6uDQb-8e8-9@gated-at.bofh.it>
     [not found]             ` <6uDQb-8e8-13@gated-at.bofh.it>
     [not found]               ` <6uE9y-d1-1@gated-at.bofh.it>
     [not found]                 ` <6uPom-87W-23@gated-at.bofh.it>
2006-07-04 12:28                   ` Bodo Eggert
2006-07-04 15:32                     ` Valdis.Kletnieks
     [not found]                 ` <6uEMp-1gr-41@gated-at.bofh.it>
     [not found]                   ` <6uUo2-6SN-5@gated-at.bofh.it>
     [not found]                     ` <6uW6v-15i-19@gated-at.bofh.it>
     [not found]                       ` <6vfLY-4K5-33@gated-at.bofh.it>
2006-07-05 22:40                         ` Bodo Eggert
     [not found] ` <6uXYv-3RG-1@gated-at.bofh.it>
     [not found]   ` <6veG8-350-7@gated-at.bofh.it>
     [not found]     ` <6vfiU-465-13@gated-at.bofh.it>
     [not found]       ` <6vmNk-77r-23@gated-at.bofh.it>
     [not found]         ` <6vnq7-7Tw-55@gated-at.bofh.it>
     [not found]           ` <6vrN0-5Se-9@gated-at.bofh.it>
     [not found]             ` <6vBsY-38p-9@gated-at.bofh.it>
2006-07-07  9:38               ` Bodo Eggert
2006-07-07 14:37                 ` Trond Myklebust
2006-07-09  9:50                   ` Bodo Eggert
  -- strict thread matches above, loose matches on Subject: below --
2006-07-08  2:22 Chuck Ebbert

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=44ABC6E1.7050200@argo.co.il \
    --to=avi@argo.co.il \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sithglan@stud.uni-erlangen.de \
    --cc=tytso@mit.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