Commit 0d7916d7 authored by Al Viro's avatar Al Viro

switch minix to simple_fsync()

* get minix_write_inode() to honour the second argument
* now we can use simple_fsync() for minixfs
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e1740a46
...@@ -22,7 +22,7 @@ static int minix_readdir(struct file *, void *, filldir_t); ...@@ -22,7 +22,7 @@ static int minix_readdir(struct file *, void *, filldir_t);
const struct file_operations minix_dir_operations = { const struct file_operations minix_dir_operations = {
.read = generic_read_dir, .read = generic_read_dir,
.readdir = minix_readdir, .readdir = minix_readdir,
.fsync = minix_sync_file, .fsync = simple_fsync,
}; };
static inline void dir_put_page(struct page *page) static inline void dir_put_page(struct page *page)
......
...@@ -6,15 +6,12 @@ ...@@ -6,15 +6,12 @@
* minix regular file handling primitives * minix regular file handling primitives
*/ */
#include <linux/buffer_head.h> /* for fsync_inode_buffers() */
#include "minix.h" #include "minix.h"
/* /*
* We have mostly NULLs here: the current defaults are OK for * We have mostly NULLs here: the current defaults are OK for
* the minix filesystem. * the minix filesystem.
*/ */
int minix_sync_file(struct file *, struct dentry *, int);
const struct file_operations minix_file_operations = { const struct file_operations minix_file_operations = {
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
.read = do_sync_read, .read = do_sync_read,
...@@ -22,7 +19,7 @@ const struct file_operations minix_file_operations = { ...@@ -22,7 +19,7 @@ const struct file_operations minix_file_operations = {
.write = do_sync_write, .write = do_sync_write,
.aio_write = generic_file_aio_write, .aio_write = generic_file_aio_write,
.mmap = generic_file_mmap, .mmap = generic_file_mmap,
.fsync = minix_sync_file, .fsync = simple_fsync,
.splice_read = generic_file_splice_read, .splice_read = generic_file_splice_read,
}; };
...@@ -30,18 +27,3 @@ const struct inode_operations minix_file_inode_operations = { ...@@ -30,18 +27,3 @@ const struct inode_operations minix_file_inode_operations = {
.truncate = minix_truncate, .truncate = minix_truncate,
.getattr = minix_getattr, .getattr = minix_getattr,
}; };
int minix_sync_file(struct file * file, struct dentry *dentry, int datasync)
{
struct inode *inode = dentry->d_inode;
int err;
err = sync_mapping_buffers(inode->i_mapping);
if (!(inode->i_state & I_DIRTY))
return err;
if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
return err;
err |= minix_sync_inode(inode);
return err ? -EIO : 0;
}
...@@ -556,38 +556,25 @@ static struct buffer_head * V2_minix_update_inode(struct inode * inode) ...@@ -556,38 +556,25 @@ static struct buffer_head * V2_minix_update_inode(struct inode * inode)
return bh; return bh;
} }
static struct buffer_head *minix_update_inode(struct inode *inode) static int minix_write_inode(struct inode *inode, int wait)
{
if (INODE_VERSION(inode) == MINIX_V1)
return V1_minix_update_inode(inode);
else
return V2_minix_update_inode(inode);
}
static int minix_write_inode(struct inode * inode, int wait)
{
brelse(minix_update_inode(inode));
return 0;
}
int minix_sync_inode(struct inode * inode)
{ {
int err = 0; int err = 0;
struct buffer_head *bh; struct buffer_head *bh;
bh = minix_update_inode(inode); if (INODE_VERSION(inode) == MINIX_V1)
if (bh && buffer_dirty(bh)) bh = V1_minix_update_inode(inode);
{ else
bh = V2_minix_update_inode(inode);
if (!bh)
return -EIO;
if (wait && buffer_dirty(bh)) {
sync_dirty_buffer(bh); sync_dirty_buffer(bh);
if (buffer_req(bh) && !buffer_uptodate(bh)) if (buffer_req(bh) && !buffer_uptodate(bh)) {
{
printk("IO error syncing minix inode [%s:%08lx]\n", printk("IO error syncing minix inode [%s:%08lx]\n",
inode->i_sb->s_id, inode->i_ino); inode->i_sb->s_id, inode->i_ino);
err = -1; err = -EIO;
} }
} }
else if (!bh)
err = -1;
brelse (bh); brelse (bh);
return err; return err;
} }
......
...@@ -57,7 +57,6 @@ extern int __minix_write_begin(struct file *file, struct address_space *mapping, ...@@ -57,7 +57,6 @@ extern int __minix_write_begin(struct file *file, struct address_space *mapping,
extern void V1_minix_truncate(struct inode *); extern void V1_minix_truncate(struct inode *);
extern void V2_minix_truncate(struct inode *); extern void V2_minix_truncate(struct inode *);
extern void minix_truncate(struct inode *); extern void minix_truncate(struct inode *);
extern int minix_sync_inode(struct inode *);
extern void minix_set_inode(struct inode *, dev_t); extern void minix_set_inode(struct inode *, dev_t);
extern int V1_minix_get_block(struct inode *, long, struct buffer_head *, int); extern int V1_minix_get_block(struct inode *, long, struct buffer_head *, int);
extern int V2_minix_get_block(struct inode *, long, struct buffer_head *, int); extern int V2_minix_get_block(struct inode *, long, struct buffer_head *, int);
...@@ -72,7 +71,6 @@ extern int minix_empty_dir(struct inode*); ...@@ -72,7 +71,6 @@ extern int minix_empty_dir(struct inode*);
extern void minix_set_link(struct minix_dir_entry*, struct page*, struct inode*); extern void minix_set_link(struct minix_dir_entry*, struct page*, struct inode*);
extern struct minix_dir_entry *minix_dotdot(struct inode*, struct page**); extern struct minix_dir_entry *minix_dotdot(struct inode*, struct page**);
extern ino_t minix_inode_by_name(struct dentry*); extern ino_t minix_inode_by_name(struct dentry*);
extern int minix_sync_file(struct file *, struct dentry *, int);
extern const struct inode_operations minix_file_inode_operations; extern const struct inode_operations minix_file_inode_operations;
extern const struct inode_operations minix_dir_inode_operations; extern const struct inode_operations minix_dir_inode_operations;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment