diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-07-05 23:09:37 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-07-05 23:09:37 +0000 |
commit | aba344fdfed81b2c03d6114c54cfd73a486aa10b (patch) | |
tree | d032d8430bf1234c3ecc6f6330d6de6e887e5963 /fs/sysv/file.c | |
parent | 40c138bfc6d37dbff5339f84575db1e3cec6e34e (diff) |
Merge with Linux 2.3.9.
Diffstat (limited to 'fs/sysv/file.c')
-rw-r--r-- | fs/sysv/file.c | 50 |
1 files changed, 7 insertions, 43 deletions
diff --git a/fs/sysv/file.c b/fs/sysv/file.c index 19443f289..3019c913f 100644 --- a/fs/sysv/file.c +++ b/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 @@ struct inode_operations sysv_file_inode_operations = { 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 */ }; |