[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20080102204649.GA16373@rain>
Date: Wed, 2 Jan 2008 23:47:04 +0300
From: Evgeniy Dushistov <dushistov@...l.ru>
To: Andrew Morton <akpm@...ux-foundation.org>
Cc: Steven <stevenaaus@...oo.com>, linux-kernel@...r.kernel.org
Subject: [PATCH]: ufs: fix symlink creation on ufs2
If create symlink on UFS2 filesystem under Linux,
it looks wrong under other OSes, because of max symlink length
field was not initialized properly, and data blocks were not
used to save short symlink names.
Signed-off-by: Evgeniy Dushistov <dushistov@...l.ru>
Cc: Steven <stevenaaus@...oo.com>
---
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index 0072cb3..14605c0 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -131,6 +131,8 @@ static void ufs_print_super_stuff(struct super_block *sb,
printk(KERN_INFO" cs_nffree(Num of free frags): %llu\n",
(unsigned long long)
fs64_to_cpu(sb, usb3->fs_un1.fs_u2.cs_nffree));
+ printk(KERN_INFO" fs_maxsymlinklen: %u\n",
+ usb3->fs_un2.fs_44.fs_maxsymlinklen);
} else {
printk(" sblkno: %u\n", fs32_to_cpu(sb, usb1->fs_sblkno));
printk(" cblkno: %u\n", fs32_to_cpu(sb, usb1->fs_cblkno));
@@ -1060,8 +1062,8 @@ magic_found:
uspi->s_bpf = uspi->s_fsize << 3;
uspi->s_bpfshift = uspi->s_fshift + 3;
uspi->s_bpfmask = uspi->s_bpf - 1;
- if ((sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) ==
- UFS_MOUNT_UFSTYPE_44BSD)
+ if ((sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) == UFS_MOUNT_UFSTYPE_44BSD ||
+ (sbi->s_mount_opt & UFS_MOUNT_UFSTYPE) == UFS_MOUNT_UFSTYPE_UFS2)
uspi->s_maxsymlinklen =
fs32_to_cpu(sb, usb3->fs_un2.fs_44.fs_maxsymlinklen);
--
/Evgeniy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists