summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Morton <akpm@zip.com.au>2002-04-29 23:54:28 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-04-29 23:54:28 -0700
commitb960fa03cf2bd5ccd37ebe5cc4d0b46d69e4519a (patch)
tree7717517da191e45eda8ed4004620ccf21229b2a6
parenta2bcb3a084f4312844639e18cbe7eb7256c7c23c (diff)
[PATCH] cleanup sync_buffers()
Renames sync_buffers() to sync_blockdev() and removes its (never used) second argument. Removes fsync_no_super() in favour of direct calls to sync_blockdev().
-rw-r--r--fs/block_dev.c13
-rw-r--r--fs/buffer.c41
-rw-r--r--fs/ext3/super.c2
-rw-r--r--fs/jbd/recovery.c2
-rw-r--r--fs/jfs/jfs_logmgr.c2
-rw-r--r--include/linux/buffer_head.h2
-rw-r--r--kernel/ksyms.c1
7 files changed, 20 insertions, 43 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 5add2e4911d0..cd8ecc79536c 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -84,7 +84,7 @@ int set_blocksize(kdev_t dev, int size)
/* Ok, we're actually changing the blocksize.. */
bdev = bdget(kdev_t_to_nr(dev));
- sync_buffers(bdev, 2);
+ sync_blockdev(bdev);
blksize_size[major(dev)][minor(dev)] = size;
bdev->bd_inode->i_blkbits = blksize_bits(size);
kill_bdev(bdev);
@@ -180,11 +180,6 @@ static loff_t block_llseek(struct file *file, loff_t offset, int origin)
return retval;
}
-static int __block_fsync(struct inode * inode)
-{
- return sync_buffers(inode->i_bdev, 1);
-}
-
/*
* Filp may be NULL when we are called by an msync of a vma
* since the vma has no handle.
@@ -194,7 +189,7 @@ static int block_fsync(struct file *filp, struct dentry *dentry, int datasync)
{
struct inode * inode = dentry->d_inode;
- return __block_fsync(inode);
+ return sync_blockdev(inode->i_bdev);
}
/*
@@ -693,10 +688,8 @@ int blkdev_put(struct block_device *bdev, int kind)
lock_kernel();
switch (kind) {
case BDEV_FILE:
- __block_fsync(bd_inode);
- break;
case BDEV_FS:
- fsync_no_super(bdev);
+ sync_blockdev(bd_inode->i_bdev);
break;
}
if (!--bdev->bd_openers)
diff --git a/fs/buffer.c b/fs/buffer.c
index 9f1660083c25..2fda0396498a 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -203,42 +203,27 @@ void end_buffer_io_sync(struct buffer_head *bh, int uptodate)
}
/*
- * write out all the dirty data associated with a block device
- * via its mapping. Does not take the superblock lock.
- *
- * If `wait' is true, wait on the writeout.
- *
- * FIXME: rename this function.
+ * Write out and wait upon all the dirty data associated with a block
+ * device via its mapping. Does not take the superblock lock.
*/
-int sync_buffers(struct block_device *bdev, int wait)
+int sync_blockdev(struct block_device *bdev)
{
- int ret;
+ int ret = 0;
- ret = filemap_fdatawrite(bdev->bd_inode->i_mapping);
- if (wait) {
+ if (bdev) {
int err;
+ ret = filemap_fdatawait(bdev->bd_inode->i_mapping);
+ err = filemap_fdatawrite(bdev->bd_inode->i_mapping);
+ if (!ret)
+ ret = err;
err = filemap_fdatawait(bdev->bd_inode->i_mapping);
if (!ret)
ret = err;
}
return ret;
}
-
-/*
- * Write out all the dirty data associated with a block device
- * via its mapping. Does not take the superblock lock.
- *
- * Wait on the writeout.
- */
-int fsync_no_super(struct block_device *bdev)
-{
- int ret = 0;
-
- if (bdev)
- ret = sync_buffers(bdev, 1);
- return ret;
-}
+EXPORT_SYMBOL(sync_blockdev);
/*
* Write out and wait upon all dirty data associated with this
@@ -254,7 +239,7 @@ int fsync_super(struct super_block *sb)
sb->s_op->write_super(sb);
unlock_super(sb);
- return fsync_no_super(sb->s_bdev);
+ return sync_blockdev(sb->s_bdev);
}
/*
@@ -270,7 +255,7 @@ int fsync_bdev(struct block_device *bdev)
drop_super(sb);
return res;
}
- return fsync_no_super(bdev);
+ return sync_blockdev(bdev);
}
/*
@@ -324,7 +309,7 @@ int file_fsync(struct file *filp, struct dentry *dentry, int datasync)
unlock_super(sb);
/* .. finally sync the buffers to disk */
- ret = sync_buffers(sb->s_bdev, 1);
+ ret = sync_blockdev(sb->s_bdev);
return ret;
}
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index 4f742c2affa4..f5f2088c708e 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -438,7 +438,7 @@ void ext3_put_super (struct super_block * sb)
* floating about in memory - the physical journal device may
* hotswapped, and it breaks the `ro-after' testing code.
*/
- fsync_no_super(sbi->journal_bdev);
+ sync_blockdev(sbi->journal_bdev);
invalidate_bdev(sbi->journal_bdev, 0);
ext3_blkdev_remove(sbi);
}
diff --git a/fs/jbd/recovery.c b/fs/jbd/recovery.c
index 89be120c1d21..d32693a96bea 100644
--- a/fs/jbd/recovery.c
+++ b/fs/jbd/recovery.c
@@ -260,7 +260,7 @@ int journal_recover(journal_t *journal)
journal->j_transaction_sequence = ++info.end_transaction;
journal_clear_revoke(journal);
- fsync_no_super(journal->j_fs_dev);
+ sync_blockdev(journal->j_fs_dev);
return err;
}
diff --git a/fs/jfs/jfs_logmgr.c b/fs/jfs/jfs_logmgr.c
index 2fb6ffabc714..513b1682aea7 100644
--- a/fs/jfs/jfs_logmgr.c
+++ b/fs/jfs/jfs_logmgr.c
@@ -1432,7 +1432,7 @@ static int lmLogShutdown(log_t * log)
* We need to make sure all of the "written" metapages
* actually make it to disk
*/
- fsync_no_super(log->sb->s_bdev);
+ sync_blockdev(log->sb->s_bdev);
/*
* write the last SYNCPT record with syncpoint = 0
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index 59fe771f9eb8..f9158122b3f7 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -161,7 +161,7 @@ void set_buffer_async_io(struct buffer_head *bh);
void invalidate_inode_buffers(struct inode *);
void invalidate_bdev(struct block_device *, int);
void __invalidate_buffers(kdev_t dev, int);
-int sync_buffers(struct block_device *, int);
+int sync_blockdev(struct block_device *bdev);
void __wait_on_buffer(struct buffer_head *);
void sleep_on_buffer(struct buffer_head *bh);
void wake_up_buffer(struct buffer_head *bh);
diff --git a/kernel/ksyms.c b/kernel/ksyms.c
index 44d30bf0041c..2dcb08756890 100644
--- a/kernel/ksyms.c
+++ b/kernel/ksyms.c
@@ -184,7 +184,6 @@ EXPORT_SYMBOL(invalidate_inode_pages);
EXPORT_SYMBOL(truncate_inode_pages);
EXPORT_SYMBOL(fsync_dev);
EXPORT_SYMBOL(fsync_bdev);
-EXPORT_SYMBOL(fsync_no_super);
EXPORT_SYMBOL(permission);
EXPORT_SYMBOL(vfs_permission);
EXPORT_SYMBOL(inode_setattr);