linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / fs / udf / inode.c
index b223b32..d04cff2 100644 (file)
@@ -132,7 +132,7 @@ static sector_t udf_bmap(struct address_space *mapping, sector_t block)
        return generic_block_bmap(mapping,block,udf_get_block);
 }
 
-const struct address_space_operations udf_aops = {
+struct address_space_operations udf_aops = {
        .readpage               = udf_readpage,
        .writepage              = udf_writepage,
        .sync_page              = block_sync_page,
@@ -312,10 +312,12 @@ static int udf_get_block(struct inode *inode, sector_t block, struct buffer_head
        err = 0;
 
        bh = inode_getblk(inode, block, &err, &phys, &new);
-       BUG_ON(bh);
+       if (bh)
+               BUG();
        if (err)
                goto abort;
-       BUG_ON(!phys);
+       if (!phys)
+               BUG();
 
        if (new)
                set_buffer_new(bh_result);
@@ -916,6 +918,8 @@ __udf_read_inode(struct inode *inode)
         *      i_nlink = 1
         *      i_op = NULL;
         */
+       inode->i_blksize = PAGE_SIZE;
+
        bh = udf_read_ptagged(inode->i_sb, UDF_I_LOCATION(inode), 0, &ident);
 
        if (!bh)
@@ -1337,11 +1341,13 @@ udf_update_inode(struct inode *inode, int do_sync)
 
        if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_FORGET))
                fe->uid = cpu_to_le32(-1);
-       else fe->uid = cpu_to_le32(inode->i_uid);
+       else if (inode->i_uid != UDF_SB(inode->i_sb)->s_uid)
+               fe->uid = cpu_to_le32(inode->i_uid);
 
        if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_GID_FORGET))
                fe->gid = cpu_to_le32(-1);
-       else fe->gid = cpu_to_le32(inode->i_gid);
+       else if (inode->i_gid != UDF_SB(inode->i_sb)->s_gid)
+               fe->gid = cpu_to_le32(inode->i_gid);
 
        udfperms =      ((inode->i_mode & S_IRWXO)     ) |
                        ((inode->i_mode & S_IRWXG) << 2) |