Messages in this thread | | | Date | Wed, 9 Jan 2008 23:51:48 -0800 | From | Andrew Morton <> | Subject | Re: [PATCH]: ufs: fix symlink creation on ufs2 |
| |
On Wed, 2 Jan 2008 23:47:04 +0300 Evgeniy Dushistov <dushistov@mail.ru> 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 <dushistov@mail.ru> > Cc: Steven <stevenaaus@yahoo.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);
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); >
| |