On Wed, 2 Jan 2008 23:47:04 +0300 Evgeniy Dushistov <[EMAIL PROTECTED]> wrote:
> 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 <[EMAIL PROTECTED]> > Cc: Steven <[EMAIL PROTECTED]> > > --- > > 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); I assume this needs conversion via fs32_to_cpu() before we print it. > } 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); > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/