]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/udf/inode.c
atmel_spi: fix dmachain oops with DEBUG enabled
[linux-2.6-omap-h63xx.git] / fs / udf / inode.c
index 0d2c41666cd28d877ce10f72e8782ecf0cbeaf81..6ff8151984cfb45d4d80e06db9aadfb0ca9d6361 100644 (file)
@@ -133,10 +133,13 @@ static int udf_readpage(struct file *file, struct page *page)
        return block_read_full_page(page, udf_get_block);
 }
 
-static int udf_prepare_write(struct file *file, struct page *page,
-                            unsigned from, unsigned to)
+static int udf_write_begin(struct file *file, struct address_space *mapping,
+                       loff_t pos, unsigned len, unsigned flags,
+                       struct page **pagep, void **fsdata)
 {
-       return block_prepare_write(page, from, to, udf_get_block);
+       *pagep = NULL;
+       return block_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
+                               udf_get_block);
 }
 
 static sector_t udf_bmap(struct address_space *mapping, sector_t block)
@@ -148,8 +151,8 @@ const struct address_space_operations udf_aops = {
        .readpage       = udf_readpage,
        .writepage      = udf_writepage,
        .sync_page      = block_sync_page,
-       .prepare_write  = udf_prepare_write,
-       .commit_write   = generic_commit_write,
+       .write_begin            = udf_write_begin,
+       .write_end              = generic_write_end,
        .bmap           = udf_bmap,
 };
 
@@ -1127,13 +1130,15 @@ static void udf_fill_inode(struct inode *inode, struct buffer_head *bh)
        }
 
        inode->i_uid = le32_to_cpu(fe->uid);
-       if (inode->i_uid == -1 || UDF_QUERY_FLAG(inode->i_sb,
-                                                UDF_FLAG_UID_IGNORE))
+       if (inode->i_uid == -1 ||
+           UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_IGNORE) ||
+           UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_SET))
                inode->i_uid = UDF_SB(inode->i_sb)->s_uid;
 
        inode->i_gid = le32_to_cpu(fe->gid);
-       if (inode->i_gid == -1 || UDF_QUERY_FLAG(inode->i_sb,
-                                                UDF_FLAG_GID_IGNORE))
+       if (inode->i_gid == -1 ||
+           UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_GID_IGNORE) ||
+           UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_GID_SET))
                inode->i_gid = UDF_SB(inode->i_sb)->s_gid;
 
        inode->i_nlink = le16_to_cpu(fe->fileLinkCount);