diff options
Diffstat (limited to 'fs/udf')
-rw-r--r-- | fs/udf/file.c | 2 | ||||
-rw-r--r-- | fs/udf/inode.c | 10 |
2 files changed, 5 insertions, 7 deletions
diff --git a/fs/udf/file.c b/fs/udf/file.c index 96297521b..cbaf77929 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c @@ -315,7 +315,7 @@ static int udf_release_file(struct inode * inode, struct file * filp) */ static int udf_open_file(struct inode * inode, struct file * filp) { - if ((inode->i_size & 0xFFFFFFFF00000000UL) && !(filp->f_flags & O_LARGEFILE)) + if ((inode->i_size & 0xFFFFFFFF00000000ULL) && !(filp->f_flags & O_LARGEFILE)) return -EFBIG; return 0; } diff --git a/fs/udf/inode.c b/fs/udf/inode.c index ed1507fa7..b0a9c42c0 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c @@ -78,7 +78,9 @@ void udf_put_inode(struct inode * inode) { lock_kernel(); udf_discard_prealloc(inode); - write_inode_now(inode); + /* write the root inode on put, if dirty */ + if (!inode->i_sb->s_root && inode->i_state & I_DIRTY) + udf_update_inode(inode, IS_SYNC(inode)); unlock_kernel(); } } @@ -111,7 +113,7 @@ void udf_delete_inode(struct inode * inode) inode->i_size = 0; udf_truncate(inode); - write_inode_now(inode); + udf_update_inode(inode, IS_SYNC(inode)); udf_free_inode(inode); out: unlock_kernel(); @@ -1005,10 +1007,6 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh) inode->i_nlink = 1; inode->i_size = le64_to_cpu(fe->informationLength); -#if BITS_PER_LONG < 64 - if (le64_to_cpu(fe->informationLength) & 0xFFFFFFFF00000000ULL) - inode->i_size = (Uint32)-1; -#endif inode->i_mode = udf_convert_permissions(fe); inode->i_mode &= ~UDF_SB(inode->i_sb)->s_umask; |