Loading fs/fat/inode.c +16 −11 Original line number Diff line number Diff line Loading @@ -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); } 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; MSDOS_I(inode)->i_attrs |= ATTR_ARCH; mark_inode_dirty(inode); Loading Loading @@ -202,8 +207,8 @@ static const struct address_space_operations fat_aops = { .writepage = fat_writepage, .writepages = fat_writepages, .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, .bmap = _fat_bmap }; Loading Loading
fs/fat/inode.c +16 −11 Original line number Diff line number Diff line Loading @@ -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); } 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; MSDOS_I(inode)->i_attrs |= ATTR_ARCH; mark_inode_dirty(inode); Loading Loading @@ -202,8 +207,8 @@ static const struct address_space_operations fat_aops = { .writepage = fat_writepage, .writepages = fat_writepages, .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, .bmap = _fat_bmap }; Loading