linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / fs / romfs / inode.c
index 3076d56..0a13859 100644 (file)
@@ -161,8 +161,7 @@ static int romfs_fill_super(struct super_block *s, void *data, int silent)
        if (!root)
                goto out;
 
-       s->s_root = d_alloc_root(iget(s, sz));
-
+       s->s_root = d_alloc_root(root);
        if (!s->s_root)
                goto outiput;
 
@@ -419,7 +418,7 @@ static int
 romfs_readpage(struct file *file, struct page * page)
 {
        struct inode *inode = page->mapping->host;
-       unsigned long offset, avail, readlen;
+       loff_t offset, avail, readlen;
        void *buf;
        int result = -EIO;
 
@@ -430,8 +429,8 @@ romfs_readpage(struct file *file, struct page * page)
                goto err_out;
 
        /* 32 bit warning -- but not for us :) */
-       offset = page->index << PAGE_CACHE_SHIFT;
-       if (offset < inode->i_size) {
+       offset = page_offset(page);
+       if (offset < i_size_read(inode)) {
                avail = inode->i_size-offset;
                readlen = min_t(unsigned long, avail, PAGE_SIZE);
                if (romfs_copyfrom(inode, buf, ROMFS_I(inode)->i_dataoffset+offset, readlen) == readlen) {