return list_entry(inode, struct romfs_inode_info, vfs_inode);
}
-static __s32
+static __u32
romfs_checksum(void *data, int size)
{
- __s32 sum, *ptr;
+ __u32 sum;
+ __be32 *ptr;
sum = 0; ptr = data;
size>>=2;
while (size>0) {
- sum += ntohl(*ptr++);
+ sum += be32_to_cpu(*ptr++);
size--;
}
return sum;
}
rsb = (struct romfs_super_block *)bh->b_data;
- sz = ntohl(rsb->size);
+ sz = be32_to_cpu(rsb->size);
if (rsb->word0 != ROMSB_WORD0 || rsb->word1 != ROMSB_WORD1
|| sz < ROMFH_SIZE) {
if (!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;
offset = i->i_ino & ROMFH_MASK;
if (romfs_copyfrom(i, &ri, offset, ROMFH_SIZE) <= 0)
goto out;
- offset = ntohl(ri.spec) & ROMFH_MASK;
+ offset = be32_to_cpu(ri.spec) & ROMFH_MASK;
}
/* Not really failsafe, but we are read-only... */
romfs_copyfrom(i, fsname, offset+ROMFH_SIZE, j);
ino = offset;
- nextfh = ntohl(ri.next);
+ nextfh = be32_to_cpu(ri.next);
if ((nextfh & ROMFH_TYPE) == ROMFH_HRD)
- ino = ntohl(ri.spec);
+ ino = be32_to_cpu(ri.spec);
if (filldir(dirent, fsname, j, offset, ino,
romfs_dtype_table[nextfh & ROMFH_TYPE]) < 0) {
goto out;
goto out;
maxoff = romfs_maxsize(dir->i_sb);
- offset = ntohl(ri.spec) & ROMFH_MASK;
+ offset = be32_to_cpu(ri.spec) & ROMFH_MASK;
/* OK, now find the file whose name is in "dentry" in the
* directory specified by "dir". */
}
}
/* next entry */
- offset = ntohl(ri.next) & ROMFH_MASK;
+ offset = be32_to_cpu(ri.next) & ROMFH_MASK;
}
/* Hard link handling */
- if ((ntohl(ri.next) & ROMFH_TYPE) == ROMFH_HRD)
- offset = ntohl(ri.spec) & ROMFH_MASK;
+ if ((be32_to_cpu(ri.next) & ROMFH_TYPE) == ROMFH_HRD)
+ offset = be32_to_cpu(ri.spec) & ROMFH_MASK;
if ((inode = iget(dir->i_sb, offset)))
goto outi;
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;
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) {
.readpage = romfs_readpage
};
-static struct file_operations romfs_dir_operations = {
+static const struct file_operations romfs_dir_operations = {
.read = generic_read_dir,
.readdir = romfs_readdir,
};
}
/* XXX: do romfs_checksum here too (with name) */
- nextfh = ntohl(ri.next);
+ nextfh = be32_to_cpu(ri.next);
if ((nextfh & ROMFH_TYPE) != ROMFH_HRD)
break;
- ino = ntohl(ri.spec) & ROMFH_MASK;
+ ino = be32_to_cpu(ri.spec) & ROMFH_MASK;
}
i->i_nlink = 1; /* Hard to decide.. */
- i->i_size = ntohl(ri.size);
+ i->i_size = be32_to_cpu(ri.size);
i->i_mtime.tv_sec = i->i_atime.tv_sec = i->i_ctime.tv_sec = 0;
i->i_mtime.tv_nsec = i->i_atime.tv_nsec = i->i_ctime.tv_nsec = 0;
i->i_uid = i->i_gid = 0;
break;
default:
/* depending on MBZ for sock/fifos */
- nextfh = ntohl(ri.spec);
+ nextfh = be32_to_cpu(ri.spec);
init_special_inode(i, ino,
MKDEV(nextfh>>16,nextfh&0xffff));
}
{
romfs_inode_cachep = kmem_cache_create("romfs_inode_cache",
sizeof(struct romfs_inode_info),
- 0, SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT,
+ 0, (SLAB_RECLAIM_ACCOUNT|
+ SLAB_MEM_SPREAD),
init_once, NULL);
if (romfs_inode_cachep == NULL)
return -ENOMEM;