diff options
-rw-r--r-- | fs/ufs/inode.c | 37 | ||||
-rw-r--r-- | fs/ufs/ufs.h | 2 |
2 files changed, 17 insertions, 22 deletions
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c index 39f877898565..ac8b324415d3 100644 --- a/fs/ufs/inode.c +++ b/fs/ufs/inode.c | |||
@@ -622,7 +622,6 @@ static int ufs1_read_inode(struct inode *inode, struct ufs_inode *ufs_inode) | |||
622 | struct ufs_inode_info *ufsi = UFS_I(inode); | 622 | struct ufs_inode_info *ufsi = UFS_I(inode); |
623 | struct super_block *sb = inode->i_sb; | 623 | struct super_block *sb = inode->i_sb; |
624 | mode_t mode; | 624 | mode_t mode; |
625 | unsigned i; | ||
626 | 625 | ||
627 | /* | 626 | /* |
628 | * Copy data to the in-core inode. | 627 | * Copy data to the in-core inode. |
@@ -655,11 +654,11 @@ static int ufs1_read_inode(struct inode *inode, struct ufs_inode *ufs_inode) | |||
655 | 654 | ||
656 | 655 | ||
657 | if (S_ISCHR(mode) || S_ISBLK(mode) || inode->i_blocks) { | 656 | if (S_ISCHR(mode) || S_ISBLK(mode) || inode->i_blocks) { |
658 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR); i++) | 657 | memcpy(ufsi->i_u1.i_data, &ufs_inode->ui_u2.ui_addr, |
659 | ufsi->i_u1.i_data[i] = ufs_inode->ui_u2.ui_addr.ui_db[i]; | 658 | sizeof(ufs_inode->ui_u2.ui_addr)); |
660 | } else { | 659 | } else { |
661 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR) * 4; i++) | 660 | memcpy(ufsi->i_u1.i_symlink, ufs_inode->ui_u2.ui_symlink, |
662 | ufsi->i_u1.i_symlink[i] = ufs_inode->ui_u2.ui_symlink[i]; | 661 | sizeof(ufs_inode->ui_u2.ui_symlink)); |
663 | } | 662 | } |
664 | return 0; | 663 | return 0; |
665 | } | 664 | } |
@@ -669,7 +668,6 @@ static int ufs2_read_inode(struct inode *inode, struct ufs2_inode *ufs2_inode) | |||
669 | struct ufs_inode_info *ufsi = UFS_I(inode); | 668 | struct ufs_inode_info *ufsi = UFS_I(inode); |
670 | struct super_block *sb = inode->i_sb; | 669 | struct super_block *sb = inode->i_sb; |
671 | mode_t mode; | 670 | mode_t mode; |
672 | unsigned i; | ||
673 | 671 | ||
674 | UFSD("Reading ufs2 inode, ino %lu\n", inode->i_ino); | 672 | UFSD("Reading ufs2 inode, ino %lu\n", inode->i_ino); |
675 | /* | 673 | /* |
@@ -704,12 +702,11 @@ static int ufs2_read_inode(struct inode *inode, struct ufs2_inode *ufs2_inode) | |||
704 | */ | 702 | */ |
705 | 703 | ||
706 | if (S_ISCHR(mode) || S_ISBLK(mode) || inode->i_blocks) { | 704 | if (S_ISCHR(mode) || S_ISBLK(mode) || inode->i_blocks) { |
707 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR); i++) | 705 | memcpy(ufsi->i_u1.u2_i_data, &ufs2_inode->ui_u2.ui_addr, |
708 | ufsi->i_u1.u2_i_data[i] = | 706 | sizeof(ufs2_inode->ui_u2.ui_addr)); |
709 | ufs2_inode->ui_u2.ui_addr.ui_db[i]; | ||
710 | } else { | 707 | } else { |
711 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR) * 4; i++) | 708 | memcpy(ufsi->i_u1.i_symlink, ufs2_inode->ui_u2.ui_symlink, |
712 | ufsi->i_u1.i_symlink[i] = ufs2_inode->ui_u2.ui_symlink[i]; | 709 | sizeof(ufs2_inode->ui_u2.ui_symlink)); |
713 | } | 710 | } |
714 | return 0; | 711 | return 0; |
715 | } | 712 | } |
@@ -781,7 +778,6 @@ static void ufs1_update_inode(struct inode *inode, struct ufs_inode *ufs_inode) | |||
781 | { | 778 | { |
782 | struct super_block *sb = inode->i_sb; | 779 | struct super_block *sb = inode->i_sb; |
783 | struct ufs_inode_info *ufsi = UFS_I(inode); | 780 | struct ufs_inode_info *ufsi = UFS_I(inode); |
784 | unsigned i; | ||
785 | 781 | ||
786 | ufs_inode->ui_mode = cpu_to_fs16(sb, inode->i_mode); | 782 | ufs_inode->ui_mode = cpu_to_fs16(sb, inode->i_mode); |
787 | ufs_inode->ui_nlink = cpu_to_fs16(sb, inode->i_nlink); | 783 | ufs_inode->ui_nlink = cpu_to_fs16(sb, inode->i_nlink); |
@@ -809,12 +805,12 @@ static void ufs1_update_inode(struct inode *inode, struct ufs_inode *ufs_inode) | |||
809 | /* ufs_inode->ui_u2.ui_addr.ui_db[0] = cpu_to_fs32(sb, inode->i_rdev); */ | 805 | /* ufs_inode->ui_u2.ui_addr.ui_db[0] = cpu_to_fs32(sb, inode->i_rdev); */ |
810 | ufs_inode->ui_u2.ui_addr.ui_db[0] = ufsi->i_u1.i_data[0]; | 806 | ufs_inode->ui_u2.ui_addr.ui_db[0] = ufsi->i_u1.i_data[0]; |
811 | } else if (inode->i_blocks) { | 807 | } else if (inode->i_blocks) { |
812 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR); i++) | 808 | memcpy(&ufs_inode->ui_u2.ui_addr, ufsi->i_u1.i_data, |
813 | ufs_inode->ui_u2.ui_addr.ui_db[i] = ufsi->i_u1.i_data[i]; | 809 | sizeof(ufs_inode->ui_u2.ui_addr)); |
814 | } | 810 | } |
815 | else { | 811 | else { |
816 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR) * 4; i++) | 812 | memcpy(&ufs_inode->ui_u2.ui_symlink, ufsi->i_u1.i_symlink, |
817 | ufs_inode->ui_u2.ui_symlink[i] = ufsi->i_u1.i_symlink[i]; | 813 | sizeof(ufs_inode->ui_u2.ui_symlink)); |
818 | } | 814 | } |
819 | 815 | ||
820 | if (!inode->i_nlink) | 816 | if (!inode->i_nlink) |
@@ -825,7 +821,6 @@ static void ufs2_update_inode(struct inode *inode, struct ufs2_inode *ufs_inode) | |||
825 | { | 821 | { |
826 | struct super_block *sb = inode->i_sb; | 822 | struct super_block *sb = inode->i_sb; |
827 | struct ufs_inode_info *ufsi = UFS_I(inode); | 823 | struct ufs_inode_info *ufsi = UFS_I(inode); |
828 | unsigned i; | ||
829 | 824 | ||
830 | UFSD("ENTER\n"); | 825 | UFSD("ENTER\n"); |
831 | ufs_inode->ui_mode = cpu_to_fs16(sb, inode->i_mode); | 826 | ufs_inode->ui_mode = cpu_to_fs16(sb, inode->i_mode); |
@@ -850,11 +845,11 @@ static void ufs2_update_inode(struct inode *inode, struct ufs2_inode *ufs_inode) | |||
850 | /* ufs_inode->ui_u2.ui_addr.ui_db[0] = cpu_to_fs32(sb, inode->i_rdev); */ | 845 | /* ufs_inode->ui_u2.ui_addr.ui_db[0] = cpu_to_fs32(sb, inode->i_rdev); */ |
851 | ufs_inode->ui_u2.ui_addr.ui_db[0] = ufsi->i_u1.u2_i_data[0]; | 846 | ufs_inode->ui_u2.ui_addr.ui_db[0] = ufsi->i_u1.u2_i_data[0]; |
852 | } else if (inode->i_blocks) { | 847 | } else if (inode->i_blocks) { |
853 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR); i++) | 848 | memcpy(&ufs_inode->ui_u2.ui_addr, ufsi->i_u1.u2_i_data, |
854 | ufs_inode->ui_u2.ui_addr.ui_db[i] = ufsi->i_u1.u2_i_data[i]; | 849 | sizeof(ufs_inode->ui_u2.ui_addr)); |
855 | } else { | 850 | } else { |
856 | for (i = 0; i < (UFS_NDADDR + UFS_NINDIR) * 4; i++) | 851 | memcpy(&ufs_inode->ui_u2.ui_symlink, ufsi->i_u1.i_symlink, |
857 | ufs_inode->ui_u2.ui_symlink[i] = ufsi->i_u1.i_symlink[i]; | 852 | sizeof(ufs_inode->ui_u2.ui_symlink)); |
858 | } | 853 | } |
859 | 854 | ||
860 | if (!inode->i_nlink) | 855 | if (!inode->i_nlink) |
diff --git a/fs/ufs/ufs.h b/fs/ufs/ufs.h index 11c035168ea6..69b3427d7885 100644 --- a/fs/ufs/ufs.h +++ b/fs/ufs/ufs.h | |||
@@ -23,7 +23,7 @@ struct ufs_sb_info { | |||
23 | struct ufs_inode_info { | 23 | struct ufs_inode_info { |
24 | union { | 24 | union { |
25 | __fs32 i_data[15]; | 25 | __fs32 i_data[15]; |
26 | __u8 i_symlink[4*15]; | 26 | __u8 i_symlink[2 * 4 * 15]; |
27 | __fs64 u2_i_data[15]; | 27 | __fs64 u2_i_data[15]; |
28 | } i_u1; | 28 | } i_u1; |
29 | __u32 i_flags; | 29 | __u32 i_flags; |