Commit cbcae39f authored by Evgeniy Dushistov's avatar Evgeniy Dushistov Committed by Linus Torvalds

[PATCH] ufs2 write: mount as rw

These series of patches add UFS2 write-support.  UFS2 - is default file system
for recent versions of FreeBSD.

The main differences from UFS1 from write support point of view
are:
1)Not all inodes are allocated during formatation of disk.
2)All meta-data(pointer to data blocks) are 64bit(in UFS1 they
are 32bit).

So patch series consist of
1)make possible mount UFS2 in read-write mode
2)code to write ufs2 inodes and code to initialize inodes chunks.
3)work with 64bit meta-data

I made simple testing like create/deleting/writing/reading/truncating, also I
ran fsx-linux and untar and build kernel on UFS1 and UFS2, after that FreeBSD
fsck do not find any errors in fs.

This patch makes possible to mount ufs2 "rw", and updates UFS2 documentation:
remove note about bug(it fixed by reallocate blocks on the fly patch) and add
me in the list of people who want receive bug reports.
Signed-off-by: default avatarEvgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent cca97de1
...@@ -21,7 +21,7 @@ ufstype=type_of_ufs ...@@ -21,7 +21,7 @@ ufstype=type_of_ufs
supported as read-write supported as read-write
ufs2 used in FreeBSD 5.x ufs2 used in FreeBSD 5.x
supported as read-only supported as read-write
5xbsd synonym for ufs2 5xbsd synonym for ufs2
...@@ -50,12 +50,11 @@ ufstype=type_of_ufs ...@@ -50,12 +50,11 @@ ufstype=type_of_ufs
POSSIBLE PROBLEMS POSSIBLE PROBLEMS
================= =================
There is still bug in reallocation of fragment, in file fs/ufs/balloc.c, See next section, if you have any.
line 364. But it seems working on current buffer cache configuration.
BUG REPORTS BUG REPORTS
=========== ===========
Any ufs bug report you can send to daniel.pirkl@email.cz (do not send Any ufs bug report you can send to daniel.pirkl@email.cz or
partition tables bug reports.) to dushistov@mail.ru (do not send partition tables bug reports).
...@@ -61,6 +61,8 @@ ...@@ -61,6 +61,8 @@
* UFS2 (of FreeBSD 5.x) support added by * UFS2 (of FreeBSD 5.x) support added by
* Niraj Kumar <niraj17@iitbombay.org>, Jan 2004 * Niraj Kumar <niraj17@iitbombay.org>, Jan 2004
* *
* UFS2 write support added by
* Evgeniy Dushistov <dushistov@mail.ru>, 2007
*/ */
...@@ -674,10 +676,6 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -674,10 +676,6 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
uspi->s_sbsize = super_block_size = 1536; uspi->s_sbsize = super_block_size = 1536;
uspi->s_sbbase = 0; uspi->s_sbbase = 0;
flags |= UFS_TYPE_UFS2 | UFS_DE_44BSD | UFS_UID_44BSD | UFS_ST_44BSD | UFS_CG_44BSD; flags |= UFS_TYPE_UFS2 | UFS_DE_44BSD | UFS_UID_44BSD | UFS_ST_44BSD | UFS_CG_44BSD;
if (!(sb->s_flags & MS_RDONLY)) {
printk(KERN_INFO "ufstype=ufs2 is supported read-only\n");
sb->s_flags |= MS_RDONLY;
}
break; break;
case UFS_MOUNT_UFSTYPE_SUN: case UFS_MOUNT_UFSTYPE_SUN:
...@@ -1156,7 +1154,8 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data) ...@@ -1156,7 +1154,8 @@ static int ufs_remount (struct super_block *sb, int *mount_flags, char *data)
#else #else
if (ufstype != UFS_MOUNT_UFSTYPE_SUN && if (ufstype != UFS_MOUNT_UFSTYPE_SUN &&
ufstype != UFS_MOUNT_UFSTYPE_44BSD && ufstype != UFS_MOUNT_UFSTYPE_44BSD &&
ufstype != UFS_MOUNT_UFSTYPE_SUNx86) { ufstype != UFS_MOUNT_UFSTYPE_SUNx86 &&
ufstype != UFS_MOUNT_UFSTYPE_UFS2) {
printk("this ufstype is read-only supported\n"); printk("this ufstype is read-only supported\n");
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment