patch-2.3.39 linux/fs/block_dev.c

Next file: linux/fs/efs/inode.c
Previous file: linux/fs/binfmt_elf.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.38/linux/fs/block_dev.c linux/fs/block_dev.c
@@ -298,7 +298,7 @@
  *	since the vma has no handle.
  */
  
-int block_fsync(struct file *filp, struct dentry *dentry)
+static int block_fsync(struct file *filp, struct dentry *dentry)
 {
 	return fsync_dev(dentry->d_inode->i_rdev);
 }
@@ -604,8 +604,11 @@
 	kdev_t rdev = to_kdev_t(bdev->bd_dev); /* this should become bdev */
 	down(&bdev->bd_sem);
 	/* syncing will go here */
+	if (kind == BDEV_FILE || kind == BDEV_FS)
+		fsync_dev(rdev);
 	if (atomic_dec_and_test(&bdev->bd_openers)) {
 		/* invalidating buffers will go here */
+		invalidate_buffers(rdev);
 	}
 	if (bdev->bd_op->release) {
 		struct inode * fake_inode = get_empty_inode();

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)