class/class_obd.c, class/genops.c, snap/snap.c: re-ordered migrate, copy
argument order to be consistent (dst, src)
snap/snap.c: fixed unlink to work in all cases of (direct, indirect)
snap/setup.sh: check for mounted obdfs before starting
snap/cleanup.sh: remove loop device
ext2obd/ext2_obd.c: start of iterator function
OBD_ALLOC(res, obdattr *, sizeof(*res));
if ( !res )
return NULL;
OBD_ALLOC(res, obdattr *, sizeof(*res));
if ( !res )
return NULL;
+ memset(res, 0, sizeof(*res));
res->i_ino = id;
if (conn->oc_dev->obd_type->typ_ops->o_getattr(conn, res)) {
OBD_FREE(res, sizeof(*res));
res->i_ino = id;
if (conn->oc_dev->obd_type->typ_ops->o_getattr(conn, res)) {
OBD_FREE(res, sizeof(*res));
conn.oc_id = mvdata.conn_id;
conn.oc_id = mvdata.conn_id;
- err = obddev->obd_type->typ_ops->o_migrate(&conn, srcoa, tgtoa);
+ err = obddev->obd_type->typ_ops->o_migrate(&conn, tgtoa, srcoa);
obd_free_oa(srcoa);
obd_free_oa(tgtoa);
obd_free_oa(srcoa);
obd_free_oa(tgtoa);
-int gen_copy_data(struct obd_conn *conn, obdattr *src, obdattr *tgt)
+/* XXX this should return errors correctly, so should migrate!!! */
+int gen_copy_data(struct obd_conn *conn, obdattr *tgt, obdattr *src)
{
struct page *page;
unsigned long index = 0;
int rc;
{
struct page *page;
unsigned long index = 0;
int rc;
+ CDEBUG(D_INODE, "src: blocks %ld, size %Ld\n",
+ src->i_blocks, src->i_size);
page = alloc_page(GFP_USER);
page = alloc_page(GFP_USER);
rc = OBP(conn->oc_dev,brw)(WRITE, conn, tgt, page, 1);
if ( rc != PAGE_SIZE)
break;
rc = OBP(conn->oc_dev,brw)(WRITE, conn, tgt, page, 1);
if ( rc != PAGE_SIZE)
break;
+
+ CDEBUG(D_INODE, "Copied 1 page ...\n");
UnlockPage(page);
__free_page(page);
UnlockPage(page);
__free_page(page);