|
@@ -141,19 +141,24 @@ static int fat_readpages(struct file *file, struct address_space *mapping,
|
|
return mpage_readpages(mapping, pages, nr_pages, fat_get_block);
|
|
return mpage_readpages(mapping, pages, nr_pages, fat_get_block);
|
|
}
|
|
}
|
|
|
|
|
|
-static int fat_prepare_write(struct file *file, struct page *page,
|
|
|
|
- unsigned from, unsigned to)
|
|
|
|
|
|
+static int fat_write_begin(struct file *file, struct address_space *mapping,
|
|
|
|
+ loff_t pos, unsigned len, unsigned flags,
|
|
|
|
+ struct page **pagep, void **fsdata)
|
|
{
|
|
{
|
|
- return cont_prepare_write(page, from, to, fat_get_block,
|
|
|
|
- &MSDOS_I(page->mapping->host)->mmu_private);
|
|
|
|
|
|
+ *pagep = NULL;
|
|
|
|
+ return cont_write_begin(file, mapping, pos, len, flags, pagep, fsdata,
|
|
|
|
+ fat_get_block,
|
|
|
|
+ &MSDOS_I(mapping->host)->mmu_private);
|
|
}
|
|
}
|
|
|
|
|
|
-static int fat_commit_write(struct file *file, struct page *page,
|
|
|
|
- unsigned from, unsigned to)
|
|
|
|
|
|
+static int fat_write_end(struct file *file, struct address_space *mapping,
|
|
|
|
+ loff_t pos, unsigned len, unsigned copied,
|
|
|
|
+ struct page *pagep, void *fsdata)
|
|
{
|
|
{
|
|
- struct inode *inode = page->mapping->host;
|
|
|
|
- int err = generic_commit_write(file, page, from, to);
|
|
|
|
- if (!err && !(MSDOS_I(inode)->i_attrs & ATTR_ARCH)) {
|
|
|
|
|
|
+ struct inode *inode = mapping->host;
|
|
|
|
+ int err;
|
|
|
|
+ err = generic_write_end(file, mapping, pos, len, copied, pagep, fsdata);
|
|
|
|
+ if (!(err < 0) && !(MSDOS_I(inode)->i_attrs & ATTR_ARCH)) {
|
|
inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC;
|
|
inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC;
|
|
MSDOS_I(inode)->i_attrs |= ATTR_ARCH;
|
|
MSDOS_I(inode)->i_attrs |= ATTR_ARCH;
|
|
mark_inode_dirty(inode);
|
|
mark_inode_dirty(inode);
|
|
@@ -202,8 +207,8 @@ static const struct address_space_operations fat_aops = {
|
|
.writepage = fat_writepage,
|
|
.writepage = fat_writepage,
|
|
.writepages = fat_writepages,
|
|
.writepages = fat_writepages,
|
|
.sync_page = block_sync_page,
|
|
.sync_page = block_sync_page,
|
|
- .prepare_write = fat_prepare_write,
|
|
|
|
- .commit_write = fat_commit_write,
|
|
|
|
|
|
+ .write_begin = fat_write_begin,
|
|
|
|
+ .write_end = fat_write_end,
|
|
.direct_IO = fat_direct_IO,
|
|
.direct_IO = fat_direct_IO,
|
|
.bmap = _fat_bmap
|
|
.bmap = _fat_bmap
|
|
};
|
|
};
|