diff --git a/sdbfs/kernel/sdb-fakedev.c b/sdbfs/kernel/sdb-fakedev.c
index a3e158d2bd312e0a7a9bdaf1fb2646cd996edc5d..4d83c4d6d5f7ef170fac98f40e03496ce9691ed0 100644
--- a/sdbfs/kernel/sdb-fakedev.c
+++ b/sdbfs/kernel/sdb-fakedev.c
@@ -77,6 +77,7 @@ static int fakedev_init(void)
 		}
 		d->sd.name = fakedev_fsimg[i];
 		d->sd.blocksize = 64; /* bah! */
+		d->sd.size = d->fw->size;
 		d->sd.ops = &fakedev_ops;
 		if (sdbfs_register_device(&d->sd) < 0) {
 			dev_err(&fakedev_device, "can't register %s\n",
diff --git a/sdbfs/kernel/sdb-iomem.c b/sdbfs/kernel/sdb-iomem.c
index 5b3694f88aaab974ff7452814724614477bbca30..c93a4c0b367d74169554c14a4464f2e13257793f 100644
--- a/sdbfs/kernel/sdb-iomem.c
+++ b/sdbfs/kernel/sdb-iomem.c
@@ -62,7 +62,7 @@ static int sdbmem_parse(char *desc, struct sdbmem *d)
 	d->address = ioremap(addr, size);
 	if (!d->address)
 		return -ENOMEM;
-	d->datalen = size;
+	d->sd.size = d->datalen = size;
 	return 0;
 }
 
diff --git a/sdbfs/kernel/sdbfs.h b/sdbfs/kernel/sdbfs.h
index 427614d000a0cb371b1f9ac7575921ce7151ee8d..d0176e19077bcbf3ee999c96822c697838277938 100644
--- a/sdbfs/kernel/sdbfs.h
+++ b/sdbfs/kernel/sdbfs.h
@@ -35,6 +35,9 @@ struct sdbfs_dev {
 	unsigned long		entrypoint;
 	struct sdbfs_dev_ops	*ops;
 	struct list_head	list;
+	unsigned long		size;
+	/* Following is private to the FS code */
+	unsigned long		ino_base;
 };
 
 /* flags */