From: Paul Jackson <pj@engr.sgi.com>
To: Linus Torvalds <torvalds@osdl.org>
Cc: cw@f00f.org, matthias.christian@tiscali.de, andrea@suse.de,
linux-kernel@vger.kernel.org
Subject: Re: Kernel SCM saga..
Date: Sat, 9 Apr 2005 08:15:53 -0700 [thread overview]
Message-ID: <20050409081553.744bbb55.pj@engr.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.58.0504081149010.28951@ppc970.osdl.org>
Linus wrote:
> you need to reuse the same inode/dev numbers
> (again - I didn't worry about portability, and filesystems where those
> aren't stable are a "don't do that then")
On filesystems that don't have a stable inode number, I use the md5sum
of the full (relative to mount point) pathname as the inode number.
Since these same file systems (not surprisingly) lack hard links as
well, the pathname _is_ essentially the stable inode number.
Off-topic details ...
This is on my backup program, which does a full snapshot of my 90 Gb
system, including some FAT file systems, in 6 or 7 minutes, plus time
proportional to actual changes. I have given up finding a backup
program I can tolerate, and write my own. It stores each md5sum unique
blob exactly once, but uses the same sort of tricks you describe to
detect changes from examining just the stat information so as to avoid
reading every damn byte on the disk. It works with smb, fat, vfat,
ntfs, reiserfs, xfs, ext2/3, ... A single manifest file, in plain
ascii, one file per line, captures a full snapshot, disk-to-disk, every
few hours.
This comment from my backup source explains more:
# Unfortunately, fat, vfat, smb, and ncpfs (Netware) file systems
# do not have unique disk-based persistent inode numbers.
# The kernel constructs transient inode numbers for inodes
# in its cache. But after an umount and re-mount, the inode
# numbers are all different. So we would end up recalculating
# the md5sums of all files in any such file systems.
#
# To avoid this, we keep track of which directories are on such
# file systems, and for files in any such directory, instead
# of using the inode value from stat'ing a file, we use the
# md5sum of its path as a pseudo-inode number. This digest of
# a file's path has improved persistance over it's transiently
# assigned inode number. Fields 5,6,7 (files total, free and
# avail) happen to be zero on file systems (fat, vfat, smb,
# ...) with no real inodes, so we we use this fallback means
# of getting a persistent pseudo-inode if a statvfs() call on
# its directory has fields 5,6,7 summing to zero:
# sum(os.statvfs(dir)[5:8]) == 0
# We include that dir in the fat_directories set in this case.
fat_directories = sets.Set() # set of directory paths on FAT file systems
# The Python statvfs() on Linux is a tad expensive - the
# glibc statvfs(2) code does several system calls, including
# scanning /proc/mounts and stat'ing its entries. We need
# to know for each file whether it is on a "fat" file system
# (see above), but for efficiency we only statvfs at mount
# points, then propagate the file system type from there down.
mountpoints = [m.split()[1] for m in open("/proc/mounts")]
--
I won't rest till it's the best ...
Programmer, Linux Scalability
Paul Jackson <pj@engr.sgi.com> 1.650.933.1373, 1.925.600.0401
next prev parent reply other threads:[~2005-04-09 15:18 UTC|newest]
Thread overview: 202+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-06 15:42 Linus Torvalds
2005-04-06 16:00 ` Greg KH
2005-04-07 16:40 ` Rik van Riel
2005-04-08 0:53 ` Jesse Barnes
2005-04-06 16:09 ` Daniel Phillips
2005-04-06 19:07 ` Jon Smirl
2005-04-06 19:24 ` Matan Peled
2005-04-06 19:49 ` Jon Smirl
2005-04-06 20:34 ` Hua Zhong
2005-04-07 1:31 ` Christoph Lameter
2005-04-06 19:39 ` Paul P Komkoff Jr
2005-04-07 1:40 ` Martin Pool
2005-04-07 1:47 ` Jeff Garzik
2005-04-07 2:26 ` Martin Pool
2005-04-07 2:32 ` David Lang
2005-04-07 5:38 ` Martin Pool
2005-04-07 23:27 ` Linus Torvalds
2005-04-08 5:56 ` Martin Pool
2005-04-08 6:41 ` Linus Torvalds
2005-04-08 8:38 ` Andrea Arcangeli
2005-04-08 23:38 ` Daniel Phillips
2005-04-09 2:54 ` Andrea Arcangeli
2005-04-09 0:12 ` Linus Torvalds
2005-04-09 2:27 ` Andrea Arcangeli
2005-04-09 2:32 ` David Lang
2005-04-09 3:08 ` Brian Gerst
2005-04-09 3:15 ` Andrea Arcangeli
2005-04-09 5:45 ` Linus Torvalds
2005-04-09 22:55 ` David S. Miller
2005-04-09 23:13 ` Linus Torvalds
2005-04-10 0:14 ` Chris Wedgwood
2005-04-10 1:56 ` Paul Jackson
2005-04-10 12:03 ` Ingo Molnar
2005-04-10 17:38 ` Paul Jackson
2005-04-10 17:46 ` Ingo Molnar
2005-04-10 17:56 ` Paul Jackson
2005-04-10 0:22 ` Paul Jackson
2005-04-10 11:33 ` Ingo Molnar
2005-04-10 17:55 ` Matthias Andree
2005-04-09 16:33 ` Roman Zippel
2005-04-09 23:31 ` Tupshin Harper
2005-04-10 17:24 ` Code snippet to reconstruct ancestry graph from bk repo Paul P Komkoff Jr
2005-04-10 18:19 ` Roman Zippel
2005-04-08 16:46 ` Kernel SCM saga Catalin Marinas
2005-04-07 8:14 ` Magnus Damm
2005-04-07 7:53 ` Zwane Mwaikambo
2005-04-07 3:35 ` Daniel Phillips
2005-04-07 15:08 ` Daniel Phillips
2005-04-07 6:36 ` bert hubert
2005-04-06 23:22 ` Jon Masters
2005-04-07 6:51 ` Paul Mackerras
2005-04-07 7:48 ` Arjan van de Ven
2005-04-07 15:10 ` Linus Torvalds
2005-04-07 17:00 ` Daniel Phillips
2005-04-07 17:38 ` Linus Torvalds
2005-04-07 17:47 ` Chris Wedgwood
2005-04-07 18:06 ` Magnus Damm
2005-04-07 18:36 ` Daniel Phillips
2005-04-08 3:35 ` Jeff Garzik
2005-04-07 19:56 ` Sam Ravnborg
2005-04-07 23:21 ` Dave Airlie
2005-04-07 7:18 ` David Woodhouse
2005-04-07 8:50 ` Andrew Morton
2005-04-07 9:20 ` Paul Mackerras
2005-04-07 9:46 ` Andrew Morton
2005-04-07 11:17 ` Paul Mackerras
2005-04-07 10:41 ` Geert Uytterhoeven
2005-04-07 9:25 ` David Woodhouse
2005-04-07 9:49 ` Andrew Morton
2005-04-07 9:55 ` Russell King
2005-04-07 10:11 ` David Woodhouse
2005-04-07 9:40 ` David Vrabel
2005-04-07 9:24 ` Sergei Organov
2005-04-07 10:30 ` Matthias Andree
2005-04-07 10:54 ` Andrew Walrond
2005-04-09 16:17 ` David Roundy
2005-04-10 9:24 ` Giuseppe Bilotta
2005-04-10 13:51 ` David Roundy
2005-04-07 15:32 ` Linus Torvalds
2005-04-07 17:09 ` Daniel Phillips
2005-04-07 17:10 ` Al Viro
2005-04-07 17:47 ` Linus Torvalds
2005-04-07 18:04 ` Jörn Engel
2005-04-07 18:27 ` Daniel Phillips
2005-04-07 20:54 ` Arjan van de Ven
2005-04-08 3:41 ` Jeff Garzik
2005-04-07 17:52 ` Bartlomiej Zolnierkiewicz
2005-04-07 17:54 ` Daniel Phillips
2005-04-07 18:13 ` Dmitry Yusupov
2005-04-07 18:29 ` Daniel Phillips
2005-04-10 22:33 ` Troy Benjegerdes
2005-04-11 0:00 ` Christian Parpart
2005-04-08 17:24 ` Jon Masters
2005-04-08 22:05 ` Daniel Phillips
2005-04-08 22:52 ` Roman Zippel
2005-04-08 23:46 ` Tupshin Harper
2005-04-09 1:00 ` Roman Zippel
2005-04-09 1:23 ` Tupshin Harper
2005-04-09 16:52 ` Eric D. Mudama
2005-04-09 17:40 ` Roman Zippel
2005-04-09 18:56 ` Ray Lee
2005-04-07 7:44 ` Jan Hudec
2005-04-08 6:14 ` Matthias Urlichs
2005-04-09 1:01 ` Marcin Dalecki
2005-04-09 8:32 ` Jan Hudec
2005-04-11 2:26 ` Miles Bader
2005-04-11 2:56 ` Marcin Dalecki
2005-04-11 6:36 ` Jan Hudec
2005-04-07 10:56 ` Andrew Walrond
2005-04-08 0:57 ` Ian Wienand
2005-04-08 4:13 ` Chris Wedgwood
2005-04-08 4:42 ` Linus Torvalds
2005-04-08 5:04 ` Chris Wedgwood
2005-04-08 5:14 ` H. Peter Anvin
2005-04-08 7:05 ` Rogan Dawes
2005-04-08 7:21 ` Daniel Phillips
2005-04-08 7:49 ` H. Peter Anvin
2005-04-08 7:14 ` Andrea Arcangeli
2005-04-08 12:02 ` Matthias Andree
2005-04-08 12:21 ` Florian Weimer
2005-04-08 14:26 ` Linus Torvalds
2005-04-08 16:15 ` Matthias-Christian Ott
2005-04-08 17:14 ` Linus Torvalds
2005-04-08 17:15 ` Chris Wedgwood
2005-04-08 17:46 ` Linus Torvalds
2005-04-08 18:05 ` Chris Wedgwood
2005-04-08 19:03 ` Linus Torvalds
2005-04-08 19:16 ` Chris Wedgwood
2005-04-08 19:38 ` Florian Weimer
2005-04-08 19:48 ` Chris Wedgwood
2005-04-08 19:39 ` Linus Torvalds
2005-04-08 20:11 ` Uncached stat performace [ Was: Re: Kernel SCM saga.. ] Ragnar Kjørstad
2005-04-08 20:14 ` Chris Wedgwood
2005-04-08 20:50 ` Kernel SCM saga Luck, Tony
2005-04-08 21:27 ` Linus Torvalds
2005-04-09 17:14 ` Roman Zippel
2005-04-09 7:20 ` Willy Tarreau
2005-04-09 15:15 ` Paul Jackson [this message]
2005-04-08 17:25 ` Matthias-Christian Ott
2005-04-08 18:14 ` Linus Torvalds
2005-04-08 18:28 ` Jon Smirl
2005-04-08 18:58 ` Florian Weimer
2005-04-09 1:11 ` Marcin Dalecki
2005-04-09 1:50 ` David Lang
2005-04-09 22:12 ` Florian Weimer
2005-04-08 19:16 ` Matthias-Christian Ott
2005-04-08 19:32 ` Linus Torvalds
2005-04-08 19:44 ` Matthias-Christian Ott
2005-04-09 1:09 ` Marcin Dalecki
2005-04-08 17:35 ` Jeff Garzik
2005-04-08 18:47 ` Linus Torvalds
2005-04-08 18:56 ` Chris Wedgwood
2005-04-09 7:37 ` Willy Tarreau
2005-04-09 7:47 ` Neil Brown
2005-04-09 8:00 ` Willy Tarreau
2005-04-09 9:34 ` Neil Brown
2005-04-09 15:40 ` Paul Jackson
2005-04-09 16:16 ` Linus Torvalds
2005-04-09 17:15 ` Paul Jackson
2005-04-09 17:35 ` Paul Jackson
2005-04-09 1:04 ` Marcin Dalecki
2005-04-09 15:42 ` Paul Jackson
2005-04-09 18:45 ` Marcin Dalecki
2005-04-09 1:00 ` Marcin Dalecki
2005-04-09 1:09 ` Chris Wedgwood
2005-04-09 1:21 ` Marcin Dalecki
2005-04-08 7:17 ` ross
2005-04-08 15:50 ` Linus Torvalds
2005-04-09 2:53 ` Petr Baudis
2005-04-09 7:08 ` Randy.Dunlap
2005-04-09 18:06 ` [PATCH] " Petr Baudis
2005-04-10 1:01 ` Phillip Lougher
2005-04-10 1:42 ` Petr Baudis
2005-04-10 1:57 ` Phillip Lougher
2005-04-09 15:50 ` Paul Jackson
2005-04-09 16:26 ` Linus Torvalds
2005-04-09 17:08 ` Paul Jackson
2005-04-10 3:41 ` Paul Jackson
2005-04-10 8:39 ` David Lang
2005-04-10 9:40 ` Junio C Hamano
2005-04-10 16:46 ` Bill Davidsen
2005-04-10 17:50 ` Paul Jackson
2005-04-12 23:20 ` Pavel Machek
2005-04-08 7:34 ` Marcel Lanz
2005-04-08 9:23 ` Geert Uytterhoeven
2005-04-08 8:38 ` Matt Johnston
2005-04-12 7:14 ` Kernel SCM saga.. (bk license?) Kedar Sovani
2005-04-12 9:34 ` Catalin Marinas
2005-04-13 4:04 ` Ricky Beam
2005-04-08 11:42 ` Kernel SCM saga Catalin Marinas
[not found] <Pine.LNX.4.58.0504060800280.2215 () ppc970 ! osdl ! org>
2005-04-06 21:13 ` kfogel
2005-04-06 22:39 ` Jeff Garzik
2005-04-09 1:00 ` Marcin Dalecki
2005-04-08 22:27 Rajesh Venkatasubramanian
2005-04-08 23:29 ` Linus Torvalds
2005-04-09 0:29 ` Linus Torvalds
2005-04-09 16:20 ` Paul Jackson
2005-04-09 4:06 Walter Landry
2005-04-09 11:02 Samium Gromoff
2005-04-09 11:29 Samium Gromoff
2005-04-10 4:20 Albert Cahalan
2025-02-27 7:09 purple_eater1988
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=20050409081553.744bbb55.pj@engr.sgi.com \
--to=pj@engr.sgi.com \
--cc=andrea@suse.de \
--cc=cw@f00f.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthias.christian@tiscali.de \
--cc=torvalds@osdl.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®