| Kernel v2.5.75 /fs/buffer.c |
|---|
 2.5.75
 fs
 buffer.c
diff -Nru a/fs/buffer.c b/fs/buffer.c
--- a/fs/buffer.c Thu Jul 10 13:16:27 2003
+++ b/fs/buffer.c Thu Jul 10 13:16:27 2003
@@ -319,6 +319,7 @@
/* We need to protect against concurrent writers.. */
down(&inode->i_sem);
+ current->flags |= PF_SYNCWRITE;
ret = filemap_fdatawrite(inode->i_mapping);
err = file->f_op->fsync(file, dentry, 0);
if (!ret)
@@ -326,6 +327,7 @@
err = filemap_fdatawait(inode->i_mapping);
if (!ret)
ret = err;
+ current->flags &= ~PF_SYNCWRITE;
up(&inode->i_sem);
out_putf:
@@ -354,6 +356,7 @@
goto out_putf;
down(&inode->i_sem);
+ current->flags |= PF_SYNCWRITE;
ret = filemap_fdatawrite(inode->i_mapping);
err = file->f_op->fsync(file, dentry, 1);
if (!ret)
@@ -361,6 +364,7 @@
err = filemap_fdatawait(inode->i_mapping);
if (!ret)
ret = err;
+ current->flags &= ~PF_SYNCWRITE;
up(&inode->i_sem);
out_putf:
@@ -1446,6 +1450,17 @@
return bh;
}
EXPORT_SYMBOL(__getblk);
+
+/*
+ * Do async read-ahead on a buffer..
+ */
+void __breadahead(struct block_device *bdev, sector_t block, int size)
+{
+ struct buffer_head *bh = __getblk(bdev, block, size);
+ ll_rw_block(READA, 1, &bh);
+ brelse(bh);
+}
+EXPORT_SYMBOL(__breadahead);
/**
* __bread() - reads a specified block and returns the bh
|