linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC][take 2] e2fsprogs: Add ext4migrate
@ 2007-04-03 10:07 Aneesh Kumar K.V
       [not found] ` <df654d0faa4a4be12a023ed99c5853956ce05664.1175594287.git.aneesh.kumar@linux.vnet.ibm.com>
  2007-04-03 20:32 ` [RFC][take 2] " Andreas Dilger
  0 siblings, 2 replies; 5+ messages in thread
From: Aneesh Kumar K.V @ 2007-04-03 10:07 UTC (permalink / raw)
  To: linux-ext4

This is work in progress


Changes from from my previous patches are as follows:


a) support for files with holes
b) use the block iterator present in libext2fs
c) don't mark  the indirect blocks as unused early. If we mark the
   the blocks unused, they can be resued for extent index. If we later
   fail to migrate, the indirect blocks content would be overwritten.

The below patches add ext4migrate utility that helps in migrating
a ext3 block mapped inode to ext4 extent mapped inode. I have split
the patches into two. The purpose of splitting the patches into two
is to make the review easeir. The contents of [PATCH 1/2] is derived out of kernel source.

ext4migrate command takes the below syntax
ext4migrate [--display | --migrate ] <image_name> <filename>

The --display option helps in displaying the block map details for an ext3 inode
and extent map details for an ext4 inode. The --migrate option convert a block mapped
ext3 inode to extent mapped ext4 inode.

This needs to be run on an unmounted file system (offline migration).

The extent insert code is derived out of the latest ext4 kernel source. I have tried
to keep the code as close as possible to the kernel sources. This makes sure that any
fixes for the tree building code in kernel should be easily applied to ext4migrate.
The ext3_ext naming convention instead of ext4_ext found in kernel is to
make  sure we are in sync with rest of e2fsprogs source.

The inode modification is done only at the last stage. This is to make sure that if we
fail at any intermediate stage, we exit without touching the disk.

The inode update is done as below
a) Walk the extent index blocks and write them to the disk. If failed exit
b) Write the inode. if failed exit.
c) Write the updated block bitmap. if failed exit ( This could be a problem because
   we have already updated the inode i_block filed to point to new blocks.). But such
   inconsistancy between inode i_block and block bitmap can be fixed by fsck IIUC.


With the above understanding i am not having a backup temporary inode during migration,
because even if we fail during migration we can recover the file contents.

The patch applies on top of e2fsprogs found at

http://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs-interim/e2fsprogs-1.39-tyt1/e2fsprogs-1.39-tyt1.tar.bz2

-aneesh

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-04-04  8:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-03 10:07 [RFC][take 2] e2fsprogs: Add ext4migrate Aneesh Kumar K.V
     [not found] ` <df654d0faa4a4be12a023ed99c5853956ce05664.1175594287.git.aneesh.kumar@linux.vnet.ibm.com>
2007-04-03 10:07   ` [PATCH 1/2] Add extent related functions Aneesh Kumar K.V
     [not found]   ` <1fddbefe9a421383b472c740fd89378c2c4b4020.1175594287.git.aneesh.kumar@linux.vnet.ibm.com>
2007-04-03 10:07     ` [PATCH 2/2] e2fsprogs: Add ext4migrate Aneesh Kumar K.V
2007-04-03 20:32 ` [RFC][take 2] " Andreas Dilger
2007-04-04  8:00   ` Aneesh Kumar K.V

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).