.read = generic_read_dir,
.llseek = generic_file_llseek,
.iterate_shared = adfs_iterate,
- .fsync = generic_file_fsync,
+ .fsync = simple_fsync,
};
static int
.llseek = generic_file_llseek,
.read_iter = generic_file_read_iter,
.mmap_prepare = generic_file_mmap_prepare,
- .fsync = generic_file_fsync,
+ .fsync = simple_fsync,
.write_iter = generic_file_write_iter,
.splice_read = filemap_splice_read,
};
if (unlikely(exfat_forced_shutdown(inode->i_sb)))
return -EIO;
- err = __generic_file_fsync(filp, start, end, datasync);
+ err = simple_fsync_noflush(filp, start, end, datasync);
if (err)
return err;
EXPORT_SYMBOL_GPL(generic_fh_to_parent);
/**
- * __generic_file_fsync - generic fsync implementation for simple filesystems
+ * simple_fsync_noflush - generic fsync implementation for simple filesystems
*
* @file: file to synchronize
* @start: start offset in bytes
* @end: end offset in bytes (inclusive)
* @datasync: only synchronize essential metadata if true
*
- * This is a generic implementation of the fsync method for simple
- * filesystems which track all non-inode metadata in the buffers list
- * hanging off the address_space structure.
+ * This function is an fsync handler for simple filesystems. It writes out
+ * dirty data, inode (if dirty), but does not issue a cache flush.
*/
-int __generic_file_fsync(struct file *file, loff_t start, loff_t end,
- int datasync)
+int simple_fsync_noflush(struct file *file, loff_t start, loff_t end,
+ int datasync)
{
struct inode *inode = file->f_mapping->host;
int err;
ret = err;
return ret;
}
-EXPORT_SYMBOL(__generic_file_fsync);
+EXPORT_SYMBOL(simple_fsync_noflush);
/**
- * generic_file_fsync - generic fsync implementation for simple filesystems
- * with flush
+ * simple_fsync - fsync implementation for simple filesystems with flush
* @file: file to synchronize
* @start: start offset in bytes
* @end: end offset in bytes (inclusive)
* @datasync: only synchronize essential metadata if true
*
+ * This function is an fsync handler for simple filesystems. It writes out
+ * dirty data, inode (if dirty), and issues a cache flush.
*/
-
-int generic_file_fsync(struct file *file, loff_t start, loff_t end,
- int datasync)
+int simple_fsync(struct file *file, loff_t start, loff_t end, int datasync)
{
struct inode *inode = file->f_mapping->host;
int err;
- err = __generic_file_fsync(file, start, end, datasync);
+ err = simple_fsync_noflush(file, start, end, datasync);
if (err)
return err;
return blkdev_issue_flush(inode->i_sb->s_bdev);
}
-EXPORT_SYMBOL(generic_file_fsync);
+EXPORT_SYMBOL(simple_fsync);
/**
* generic_check_addressable - Check addressability of file system
.read_iter = generic_file_read_iter,
.write_iter = generic_file_write_iter,
.mmap_prepare = generic_file_mmap_prepare,
- .fsync = generic_file_fsync,
+ .fsync = simple_fsync,
.splice_read = filemap_splice_read,
};
.llseek = generic_file_llseek,
.read = generic_read_dir,
.iterate_shared = qnx4_readdir,
- .fsync = generic_file_fsync,
+ .fsync = simple_fsync,
.setlease = generic_setlease,
};
.llseek = generic_file_llseek,
.read = generic_read_dir,
.iterate_shared = qnx6_readdir,
- .fsync = generic_file_fsync,
+ .fsync = simple_fsync,
.setlease = generic_setlease,
};
.release = ufs_dir_release,
.read = generic_read_dir,
.iterate_shared = ufs_readdir,
- .fsync = generic_file_fsync,
+ .fsync = simple_fsync,
.llseek = ufs_dir_llseek,
.setlease = generic_setlease,
};
.write_iter = generic_file_write_iter,
.mmap_prepare = generic_file_mmap_prepare,
.open = generic_file_open,
- .fsync = generic_file_fsync,
+ .fsync = simple_fsync,
.splice_read = filemap_splice_read,
.splice_write = iter_file_splice_write,
.setlease = generic_setlease,
extern const struct file_operations simple_offset_dir_operations;
-extern int __generic_file_fsync(struct file *, loff_t, loff_t, int);
-extern int generic_file_fsync(struct file *, loff_t, loff_t, int);
+extern int simple_fsync_noflush(struct file *, loff_t, loff_t, int);
+extern int simple_fsync(struct file *, loff_t, loff_t, int);
extern int generic_check_addressable(unsigned, u64);