Mark Phalan
2007-Nov-15 17:19 UTC
[zfs-discuss] [fuse-discuss] cannot mount ''mypool'': Input/output error
On Thu, 2007-11-15 at 07:22 -0800, Nabeel Saad wrote:> Hello, > > I have a question about using ZFS with Fuse. A little bit of background of what we''ve been doing first... We recently had an issue with a Solaris server where the permissions of the main system files in /etc and such were changed. On server restart, Solaris threw an error and it was not possible to log in, even as root. > > So, given that it''s the only Solaris machine we have, we took out the drive and after much trouble trying with different machines, we connected it to Linux 2005 Limited Edition server using a USB to SATA connector. The linux machine now sees the device in /dev/sda* and I can confirm this by doing the following: > > [root]# fdisk sda > > Command (m for help): p > > Disk sda (Sun disk label): 16 heads, 149 sectors, 65533 cylinders > Units = cylinders of 2384 * 512 bytes > > Device Flag Start End Blocks Id System > sda1 1719 11169 11264400 2 SunOS root > sda2 u 0 1719 2049048 3 SunOS swap > sda3 0 65533 78115336 5 Whole disk > sda5 16324 65533 58657128 8 SunOS home > sda6 11169 16324 6144760 7 SunOS var > > Given that Solaris uses ZFS,Solaris *can* use ZFS. ZFS root isn''t supported by any distro (other than perhaps Indiana). The filesystem you are trying to mount is probably UFS.> we figured to be able to change the permissions, we''ll need to be able to mount the device. So, we found Fuse, downloaded, installed it along with ZFS. Everything went as expected until the creation of the pool for some reason. We''re interested in either sda1, sda3 or sda5, we''ll know better once we can mount them... > > So, we do ./run.sh & and then the zpool and zfs commands are available. My ZFS questions come here, once we run the create command, I get the error directly: > > [root]# zpool create mypool sdaIf you want to destroy the data on /dev/sda then this is a good start. IF it were ZFS (which it probably isn''t) you''d want to be using "zpool import".> fuse: mount failed: Invalid argument > cannot mount ''mypool'': Input/output error > > However, if I list the pools, clearly it''s been created: > > [root]# zpool list > NAME SIZE USED AVAIL CAP HEALTH ALTROOT > mypool 74.5G 88K 74.5G 0% ONLINE - > > It seems the issue is with the mounting, and I can''t understand why: > > [root]# zfs mount mypool > fuse: mount failed: Invalid argument > cannot mount ''mypool'': Input/output error > > [root]# zfs mount > > I had searched through the source code trying to figure out what argument was considered invalid and found the following: > > 477 if (res == -1) { > 478 /* > 479 * Maybe kernel doesn''t support unprivileged mounts, in this > 480 * case try falling back to fusermount > 481 */ > 482 if (errno == EPERM) { > 483 res = -2; > 484 } else { > 485 int errno_save = errno; > 486 if (mo->blkdev && errno == ENODEV && !fuse_mnt_check_fuseblk()) > 487 fprintf(stderr, "fuse: ''fuseblk'' support missing\n"); > 488 else > 489 fprintf(stderr, "fuse: mount failed: %s\n", > 490 strerror(errno_save)); > 491 } > 492 > 493 goto out_close; > 494 } > > in the following file: > > http://cvs.opensolaris.org/source/xref/fuse/libfuse/mount.cThis is the OpenSolaris fuse code, you''re using FUSE on Linux. You should check with the Linux FUSE community... -Mark