char *uptodate = (Page_Uptodate(page)) ? "yes" : "no";\
char *locked = (PageLocked(page)) ? "yes" : "no";\
int count = page->count.counter;\
- long offset = page->offset;\
+ long index = page->index;\
\
CDEBUG(D_IOCTL, " ** %s, cmd: %s, off %ld, uptodate: %s, "\
"locked: %s, cnt %d page %p pages %ld** \n", __FUNCTION__,\
- cmd, offset, uptodate, locked, count, page, (!page->mapping) ? -1 : page->mapping->nrpages);\
+ cmd, index, uptodate, locked, count, page, (!page->mapping) ? -1 : page->mapping->nrpages);\
} else { CDEBUG(D_IOCTL, "** %s, no page\n", __FUNCTION__); }}
int gen_copy_data(struct obd_conn *conn, obdattr *src, obdattr *tgt)
{
struct page *page;
- unsigned long offset = 0;
+ unsigned long index = 0;
int rc;
- page = __get_pages(GFP_USER, 0);
+ page = alloc_page(GFP_USER);
if ( !page )
return -ENOMEM;
lck_page(page);
- while (offset < src->i_size) {
+ while (index < src->i_size / PAGE_SIZE) {
- page->offset = offset;
+ page->index = index;
rc = OBP(conn->oc_dev, brw)(READ, conn, src, page, 0);
if ( rc != PAGE_SIZE )
if ( rc != PAGE_SIZE)
break;
- offset += rc;
+ index ++;
}
tgt->i_size = src->i_size;
tgt->i_blocks = src->i_blocks;
#! /bin/bash
insmod loop
losetup /dev/loop0 /tmp/fs
+
+mke2fs /dev/loop0
+
insmod ../class/obdclass.o
insmod ../ext2obd/obdext2.o
insmod ../obdfs/obdfs.o
if (namelen > EXT2_NAME_LEN)
return NULL;
- CDEBUG(D_INODE, "dirsize is %ld\n", dir->i_size);
+ CDEBUG(D_INODE, "dirsize is %Ld\n", dir->i_size);
page = 0;
offset = 0;
}
}
if ( old_page != new_page ) {
- unsigned long offset = old_page->offset;
+ unsigned long index = old_page->index;
/* lock the old_page and release unlocked copy */
CDEBUG(D_INODE, "old_page at %p\n", old_page);
page_cache_release(old_page);
- old_page = obdfs_getpage(old_dir, offset, 0, LOCKED);
+ old_page = obdfs_getpage(old_dir, index >> PAGE_SHIFT, 0, LOCKED);
CDEBUG(D_INODE, "old_page at %p\n", old_page);
iops(old_dir)->o_brw(WRITE, iid(old_dir), old_dir, old_page,0);
}