 +	printk(KERN_INFO "gnbd: registered device at major %d\n", major_nr);
 +	dprintk(DBG_INIT, "gnbd: debugflags=0x%x\n", debugflags);
 +
-+	devfs_mk_dir("gnbd");
++	devfs_mk_dir("gnbd_minor");
 +	err = class_register(&gnbd_class);
 +	if (err)
 +		goto out_unregister;

+static ssize_t show_server(struct class_device *class_dev, char *buf)
+{
+	struct gnbd_device *dev = to_gnbd_dev(class_dev);
+	return sprintf(buf, "%08x:%hx\n", dev->server_addr.s_addr,
+			dev->server_port);
+}
+
+static ssize_t store_server(struct class_device *class_dev,
+		const char *buf, size_t count)
+{
+	int res;
+	struct in_addr addr;
+	short unsigned int port;
+	struct gnbd_device *dev = to_gnbd_dev(class_dev);
+	if (down_trylock(&dev->do_it_lock))
+		return -EBUSY;
+	res = sscanf(buf, "%8x:%4hx", &addr.s_addr, &port);
+	if (res != 2){
+		up(&dev->do_it_lock);
+		return -EINVAL;
+	}
+	dev->server_addr = addr;
+	dev->server_port = port;
+	up(&dev->do_it_lock);
+	return count;

+		disk->fops = &gnbd_fops;
+		disk->private_data = &gnbd_dev[i];
+		sprintf(disk->disk_name, "gnbd%d", i);
+		sprintf(disk->devfs_name, "gnbd_minor/%d", i);
+		set_capacity(disk, 0);
+		add_disk(disk);
+		if(sysfs_create_link(&gnbd_dev[i].class_dev.kobj,
