patch-2.3.9 linux/fs/sysv/file.c

Next file: linux/fs/sysv/fsync.c
Previous file: linux/fs/sysv/dir.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.8/linux/fs/sysv/file.c linux/fs/sysv/file.c
@@ -33,50 +33,14 @@
 #include <linux/fs.h>
 #include <linux/sysv_fs.h>
 
-static int sysv_writepage (struct file * file, struct page * page)
-{
-	struct dentry *dentry = file->f_dentry;
-	struct inode *inode = dentry->d_inode;
-	unsigned long block;
-	int *p, nr[PAGE_SIZE/512];
-	int i, err, created;
-	struct buffer_head *bh;
-
-	i = PAGE_SIZE >> inode->i_sb->sv_block_size_bits;
-	block = page->offset >> inode->i_sb->sv_block_size_bits;
-	p = nr;
-	bh = page->buffers;
-	do {
-		if (bh && bh->b_blocknr)
-			*p = bh->b_blocknr;
-		else
-			*p = sysv_getblk_block (inode, block, 1, &err, &created);
-		if (!*p)
-			return -EIO;
-		i--;
-		block++;
-		p++;
-		if (bh)
-			bh = bh->b_this_page;
-	} while (i > 0);
-
-	/* IO start */
-	brw_page(WRITE, page, inode->i_dev, nr, inode->i_sb->sv_block_size, 1);
-	return 0;
-}
-
-static long sysv_write_one_page (struct file *file, struct page *page, unsigned long offset, unsigned long bytes, const char * buf)
-{
-	return block_write_one_page(file, page, offset, bytes, buf, sysv_getblk_block);
-}
-
 /*
  * Write to a file (through the page cache).
  */
 static ssize_t
 sysv_file_write(struct file *file, const char *buf, size_t count, loff_t *ppos)
 {
-	return generic_file_write(file, buf, count, ppos, sysv_write_one_page);
+	return generic_file_write(file, buf, count,
+				  ppos, block_write_partial_page);
 }
 
 /*
@@ -113,12 +77,12 @@
 	NULL,			/* rename */
 	NULL,			/* readlink */
 	NULL,			/* follow_link */
-	generic_readpage,	/* readpage */
-	sysv_writepage,		/* writepage */
-	sysv_bmap,		/* bmap */
+	sysv_get_block,		/* get_block */
+	block_read_full_page,	/* readpage */
+	block_write_full_page,	/* writepage */
+	block_flushpage,	/* flushpage */
 	sysv_truncate,		/* truncate */
 	NULL,   		/* permission */
 	NULL,			/* smap */
-	NULL,			/* revalidate */
-	block_flushpage,	/* flushpage */
+	NULL			/* revalidate */
 };

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