X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fhpfs%2Finode.c;h=28483e9e76dc9ac599aedaa5316913fd6ef33763;hb=9bf4aaab3e101692164d49b7ca357651eb691cb6;hp=dec2ad61c3557277c2ef97390a1b09ba454d0f38;hpb=db216c3d5e4c040e557a50f8f5d35d5c415e8c1c;p=linux-2.6.git diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c index dec2ad61c..28483e9e7 100644 --- a/fs/hpfs/inode.c +++ b/fs/hpfs/inode.c @@ -144,11 +144,11 @@ void hpfs_read_inode(struct inode *i) void hpfs_write_inode_ea(struct inode *i, struct fnode *fnode) { struct hpfs_inode_info *hpfs_inode = hpfs_i(i); - if (fnode->acl_size_l || fnode->acl_size_s) { - /* Some unknown structures like ACL may be in fnode, - we'd better not overwrite them */ + /*if (fnode->acl_size_l || fnode->acl_size_s) { + Some unknown structures like ACL may be in fnode, + we'd better not overwrite them hpfs_error(i->i_sb, "fnode %08x has some unknown HPFS386 stuctures", i->i_ino); - } else if (hpfs_sb(i->i_sb)->sb_eas >= 2) { + } else*/ if (hpfs_sb(i->i_sb)->sb_eas >= 2) { u32 ea; if ((i->i_uid != hpfs_sb(i->i_sb)->sb_uid) || hpfs_inode->i_ea_uid) { ea = cpu_to_le32(i->i_uid); @@ -218,16 +218,18 @@ void hpfs_write_inode_nolock(struct inode *i) struct hpfs_dirent *de; if (i->i_ino == hpfs_sb(i->i_sb)->sb_root) return; if (!(fnode = hpfs_map_fnode(i->i_sb, i->i_ino, &bh))) return; - if (i->i_ino != hpfs_sb(i->i_sb)->sb_root) { + if (i->i_ino != hpfs_sb(i->i_sb)->sb_root && i->i_nlink) { if (!(de = map_fnode_dirent(i->i_sb, i->i_ino, fnode, &qbh))) { brelse(bh); return; } } else de = NULL; if (S_ISREG(i->i_mode)) { - fnode->file_size = de->file_size = i->i_size; + fnode->file_size = i->i_size; + if (de) de->file_size = i->i_size; } else if (S_ISDIR(i->i_mode)) { - fnode->file_size = de->file_size = 0; + fnode->file_size = 0; + if (de) de->file_size = 0; } hpfs_write_inode_ea(i, fnode); if (de) {