Commit Graph

239 Commits

Author SHA1 Message Date
Brian Behlendorf 48d1b0c5ab Cleanly integrate ZFS tools with libblkid.
The majority of this this patch concerns itself with doing a direct
replacement of Solaris's libdiskmgt library with libblkid+libefi.
You'll notice that this patch removes all libdiskmgt code instead of
ifdef'ing it out.  This was done to minimize any confusion when reading
the code because it seems unlikely we will ever port libdiskmgt to Linux.

Despite the replacement the behavior of the tools should have remained
the same with one exception.  For the moment, we are unable to check
the partitions of devices which have an MBR style partition table when
creating a filesystem.  If a non-efi partition sceme is detected on a
whole disk device we prompt the user to explicity use the force option.
It would not be a ton of work to make the tool aware of MBR style
partitions if this becomes a problem.

I've done basic sanity checking for various configurations and all
the issues I'm aware of have been addressed.  Even things like blkid
misidentifing a disk as ext3 when it is added to a zfs pool.  I'm
careful to always zero out the first 4k of any new zfs partition.  That
all said this is all new code and while it looks like it's working right
for me we should keep an eye on it for any strange behavior.
2009-10-15 16:28:47 -07:00
Brian Behlendorf 992be351d5 Changes required to integrate libefi in to Linux.
The major change here is to fix up libefi to be linux aware.  For
the most part this wasn't too hard but there were a few major issues.

First off I needed to handle the DKIOCGMEDIAINFO and DKIOCINFO ioctls.
There is no direct equivilant for these ioctls under linux.  To handle
this I added wrapper functions which under Solaris simple call the ioctls.
But under Linux dig around the system a little bit getting the needed
info to fill in the requested structures.

Secondly the efi_ioctl() call was adapted such that under linux it directly
read or writes out the partition table.  Under Solaris this work was
handed off to the kernel via an ioctl.  In the efi_write() case we also
ensure we prompt the kernel via BLKRRPART to re-scan the new partition
table.  The libefi generated partition tables are correct but older
versions of ~parted-1.8.1 can not read them without a small patch.
The kernel and fdisk are able to read them just fine.

Thirdly efi_alloc_and_init() which is used by zpool to determine if a
device is a 'wholedisk' was updated to be linux aware.  This check is
performed by using the partition number for the device, which the
partition number is 0 on linux it is a 'wholedisk'.  However, certain
device type such as the loopback and ram disks needed to be excluded
because they do not support partitioning.

Forthly the zpool command was made symlink aware so it can correctly
resolve udev entries such as /dev/disk/by-*/*.  This symlinks are
fully expanded ensuring all block devices are recognized.  When a
when a 'wholedisk' block device is detected we now properly write
out an efi label and place zfs in the first partition (0th slice).
This partition is created 1MiB in to the disk to ensure it is aligned
nicely with all high end block devices I'm aware of.

This all works for me now but it did take quite a bit of work to get
it all sorted out.  It would not surprise me if certain special cases
were missed so we should keep any eye of for any odd behavior.
2009-10-14 16:07:48 -07:00
Brian Behlendorf 81ec3f8951 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-10-09 16:43:53 -07:00
Brian Behlendorf cb91bbe6ce Additional set of build system tweaks for libefi library. 2009-10-09 16:37:32 -07:00
Brian Behlendorf 060284b353 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-08-18 14:21:35 -07:00
Brian Behlendorf e4b55cfbff Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-08-18 14:18:36 -07:00
Brian Behlendorf 5d83878f46 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 14:18:34 -07:00
Brian Behlendorf e134b976b6 Merge branch 'gcc-missing-braces' into refs/top-bases/gcc-branch 2009-08-18 14:18:33 -07:00
Brian Behlendorf b29c1f87a0 Required build 121 updates for gcc-missing-braces 2009-08-18 14:08:46 -07:00
Brian Behlendorf 8b02e1a43f Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-08-18 12:35:12 -07:00
Brian Behlendorf 50c623ccef Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-08-18 12:10:55 -07:00
Brian Behlendorf b3ea816a68 Merge commit 'refs/top-bases/fix-get-configs' into fix-get-configs 2009-08-18 12:09:36 -07:00
Brian Behlendorf d205b25a74 Merge branch 'fix-clock-wrap' into refs/top-bases/fix-branch 2009-08-18 12:09:10 -07:00
Brian Behlendorf b99b422796 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
Brian Behlendorf 41b297a27f Merge commit 'refs/top-bases/gcc-missing-braces' into gcc-missing-braces 2009-08-18 12:08:46 -07:00
Brian Behlendorf db89339134 Merge commit 'refs/top-bases/gcc-shadow' into gcc-shadow
Conflicts:

	module/zfs/dmu.c
2009-08-18 12:07:23 -07:00
Brian Behlendorf 481225606c Merge commit 'refs/top-bases/gcc-no-parenthesis' into gcc-no-parenthesis 2009-08-18 12:05:39 -07:00
Brian Behlendorf 9e903015fd Merge commit 'refs/top-bases/gcc-cast' into gcc-cast 2009-08-18 12:05:07 -07:00
Brian Behlendorf e5e4fadc34 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch
Conflicts:

	module/zfs/dmu.c
	module/zfs/dsl_deleg.c
	module/zfs/rrwlock.c
	module/zfs/vdev_raidz.c
2009-08-18 12:04:53 -07:00
Brian Behlendorf 45d1cae3b8 Rebase master to b121 2009-08-18 11:43:27 -07:00
Brian Behlendorf 21dee98331 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-07-31 14:05:42 -07:00
Brian Behlendorf 9f5e45ef4d Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-07-31 14:02:49 -07:00
Brian Behlendorf cf44f97b96 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-31 14:02:48 -07:00
Brian Behlendorf 252846a145 Merge branch 'gcc-shadow' into refs/top-bases/gcc-branch 2009-07-31 14:02:46 -07:00
Brian Behlendorf cfd9e9936f Fix an accidentally introduced formatting issue in zfs output.
Because the local 'index' variable shadows the index() function
it was replaced by 'i'.  Unfortunately when I made this change
I accidentally replaced one instance with 'j' resulting in the
short decimal values being printed incorrectly.
2009-07-31 13:50:21 -07:00
Brian Behlendorf 54f3881f7a Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-07-29 21:30:36 -07:00
Brian Behlendorf 2d86fb2788 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-07-29 21:27:13 -07:00
Brian Behlendorf e2bbeb5e61 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-29 21:27:06 -07:00
Brian Behlendorf f80c505f4d Merge branch 'gcc-uninit' into refs/top-bases/gcc-branch 2009-07-29 21:27:04 -07:00
Brian Behlendorf 72d2035ed3 Updated gcc in fc11 flagged a new uninitialized variable. 2009-07-29 21:17:47 -07:00
Brian Behlendorf 8f1db6316f Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-07-24 09:18:50 -07:00
Brian Behlendorf 82ca18caae Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-07-24 09:15:56 -07:00
Brian Behlendorf 825c086a4e Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2009-07-24 09:15:55 -07:00
Brian Behlendorf e4610d7991 Merge branch 'fix-get-configs' into refs/top-bases/fix-branch 2009-07-24 09:15:53 -07:00
Brian Behlendorf 1b4dfb80fb Increase buffer size for nvlist for large configurations
It's still not clear to me why the default value here is large
enough Solaris.  I hit this limit again when setting up 120 SATA
drives configured as 15 raidz2 groups each containing 8 drives.
We expect to go bigger so we may just want to spend a little
time and figure out how to make this all dynamic.
2009-07-24 08:53:18 -07:00
Brian Behlendorf 24402e5c15 Drop duplicate defines 2009-07-07 14:58:56 -07:00
Brian Behlendorf daebbab116 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-07-07 14:31:41 -07:00
Brian Behlendorf 3ad5361df2 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-07-07 14:28:14 -07:00
Brian Behlendorf ba97ae2628 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2009-07-07 14:28:13 -07:00
Brian Behlendorf ed3bd6f446 Merge branch 'fix-acl' into refs/top-bases/fix-branch 2009-07-07 14:19:35 -07:00
Brian Behlendorf 798cf63309 New topic branch for minor acl related fixes 2009-07-07 14:18:47 -07:00
Brian Behlendorf e945eb4fe1 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-07-07 14:13:02 -07:00
Brian Behlendorf 34422f0ffa Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-07-07 13:50:32 -07:00
Brian Behlendorf 47502cd94b Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-07 13:50:31 -07:00
Brian Behlendorf fb26df15c8 Merge branch 'gcc-missing-braces' into refs/top-bases/gcc-branch 2009-07-07 13:50:30 -07:00
Brian Behlendorf cad9fa40e1 Merge branch 'gcc-cast' into refs/top-bases/gcc-branch 2009-07-07 13:50:29 -07:00
Brian Behlendorf a2423197e1 Resolve missing cast warning 2009-07-07 13:41:51 -07:00
Brian Behlendorf 361e0e7685 Fix newly introduced missing braces warnings for gcc. 2009-07-07 13:40:16 -07:00
Brian Behlendorf 409cfe5051 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk
Conflicts:

	lib/libzfs/libzfs_pool.c
2009-07-06 15:05:47 -07:00
Brian Behlendorf 658459249e Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-07-06 13:17:28 -07:00
Brian Behlendorf e320858042 Merge commit 'refs/top-bases/fix-get-configs' into fix-get-configs 2009-07-06 13:12:54 -07:00
Brian Behlendorf 01c3cfc58f Merge branch 'fix-clock-wrap' into refs/top-bases/fix-branch
Conflicts:

	module/zfs/zil.c
2009-07-06 13:12:23 -07:00
Brian Behlendorf a1ccb00b7e Merge branch 'gcc-branch' into refs/top-bases/zfs-branch
Conflicts:

	cmd/ztest/ztest.c
	module/zfs/zil.c
2009-07-06 13:11:34 -07:00
Brian Behlendorf 480b03791d Merge commit 'refs/top-bases/gcc-missing-braces' into gcc-missing-braces
Conflicts:

	lib/libzfs/libzfs_dataset.c
2009-07-02 17:07:52 -07:00
Brian Behlendorf 244d656e28 Merge commit 'refs/top-bases/gcc-shadow' into gcc-shadow
Conflicts:

	module/zfs/dmu.c
2009-07-02 16:59:39 -07:00
Brian Behlendorf 44703f0029 Merge commit 'refs/top-bases/gcc-uninit' into gcc-uninit
Conflicts:

	lib/libzfs/libzfs_dataset.c
	module/zfs/arc.c
	module/zfs/spa.c
2009-07-02 16:57:09 -07:00
Brian Behlendorf eb0137f395 Merge commit 'refs/top-bases/gcc-no-parenthesis' into gcc-no-parenthesis
Conflicts:

	lib/libzfs/libzfs_dataset.c
	module/zfs/arc.c
	module/zfs/dmu_objset.c
	module/zfs/dsl_pool.c
	module/zfs/spa.c
	module/zfs/zfs_ioctl.c
2009-07-02 16:55:22 -07:00
Brian Behlendorf b095bf444a Merge commit 'refs/top-bases/gcc-cast' into gcc-cast
Conflicts:

	cmd/zfs/zfs_main.c
	lib/libzfs/libzfs_dataset.c
2009-07-02 16:50:53 -07:00
Brian Behlendorf e2b2597751 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch
Conflicts:

	cmd/zdb/zdb_il.c
	cmd/zfs/zfs_main.c
	cmd/zinject/zinject.c
	cmd/ztest/ztest.c
	lib/libzfs/libzfs_dataset.c
	lib/libzfs/libzfs_graph.c
	module/zcommon/include/sys/fm/fs/zfs.h
	module/zcommon/include/zfs_deleg.h
	module/zcommon/include/zfs_namecheck.h
	module/zcommon/zfs_deleg.c
	module/zcommon/zfs_namecheck.c
	module/zcommon/zprop_common.c
	module/zfs/arc.c
	module/zfs/dmu.c
	module/zfs/dmu_object.c
	module/zfs/dmu_objset.c
	module/zfs/dsl_pool.c
	module/zfs/dsl_prop.c
	module/zfs/fletcher.c
	module/zfs/include/sys/dsl_deleg.h
	module/zfs/include/sys/dsl_prop.h
	module/zfs/include/sys/metaslab_impl.h
	module/zfs/include/sys/spa_boot.h
	module/zfs/include/sys/zap.h
	module/zfs/include/sys/zap_impl.h
	module/zfs/include/sys/zfs_context.h
	module/zfs/include/sys/zfs_ctldir.h
	module/zfs/include/sys/zfs_dir.h
	module/zfs/include/sys/zfs_fuid.h
	module/zfs/include/sys/zfs_ioctl.h
	module/zfs/spa.c
	module/zfs/spa_errlog.c
	module/zfs/spa_history.c
	module/zfs/zap.c
	module/zfs/zap_leaf.c
	module/zfs/zap_micro.c
	module/zfs/zfs_ioctl.c
	module/zfs/zio.c
2009-07-02 16:49:11 -07:00
Brian Behlendorf 9babb37438 Rebase master to b117 2009-07-02 15:44:48 -07:00
Brian Behlendorf 1997a1de19 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-03-16 16:22:04 -07:00
Brian Behlendorf df985d53db Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-16 16:17:57 -07:00
Brian Behlendorf f86b52a39d Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-16 16:17:55 -07:00
Brian Behlendorf 3eebe1bd0e Merge branch 'gcc-uninit' into refs/top-bases/gcc-branch 2009-03-16 16:17:54 -07:00
Brian Behlendorf 3eb4ba3ebd Add 3 more uninit errors detected by gcc 3.4.0 compiler. 2009-03-16 16:06:50 -07:00
Brian Behlendorf 10e245f03f Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk
Conflicts:
	cmd/zpool/zpool_main.c
2009-03-16 10:42:20 -07:00
Brian Behlendorf be112b3f57 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-16 10:30:31 -07:00
Brian Behlendorf 5ee8a85ba6 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2009-03-16 10:30:27 -07:00
Brian Behlendorf 9818e69640 Merge branch 'fix-deadcode' into refs/top-bases/fix-branch 2009-03-16 10:12:01 -07:00
Brian Behlendorf 2924858552 Remove two self referential functions.
Newer versions of gcc (4.3.0) detected the following unused
code segments.
2009-03-16 10:02:06 -07:00
Brian Behlendorf a5326d0d28 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-03-12 15:28:42 -07:00
Brian Behlendorf 379d9cf34d Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-12 15:26:15 -07:00
Brian Behlendorf 6a59551cb7 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2009-03-12 15:26:13 -07:00
Brian Behlendorf c4e10eb3df Merge branch 'fix-strncat' into refs/top-bases/fix-branch 2009-03-12 15:21:30 -07:00
Brian Behlendorf f1f9c50dd9 Add fix-strncat branch which corrects a buffer overrun. 2009-03-12 15:20:26 -07:00
Brian Behlendorf fbbb5fe669 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-03-12 10:40:09 -07:00
Brian Behlendorf b9b399bf04 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-12 10:37:14 -07:00
Brian Behlendorf a03187bb3b Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-12 10:37:12 -07:00
Brian Behlendorf f8fe8a76f4 Merge branch 'gcc-uninit' into refs/top-bases/gcc-branch 2009-03-12 10:37:11 -07:00
Brian Behlendorf cabd4a69c4 Resolve remaining uninitialized variables
Most of these fixes appear to be harmless and should never occur.
However, there were a few cases in this patch which do concern me,
I doubt we're seeing them but they look possible... mainly in the
user tools.
2009-03-12 10:30:41 -07:00
Brian Behlendorf 77695eacc1 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-03-12 10:02:45 -07:00
Brian Behlendorf dd30dba016 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-12 10:00:04 -07:00
Brian Behlendorf 193ea156e9 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-12 10:00:03 -07:00
Brian Behlendorf eceaf813ad Merge branch 'gcc-missing-case' into refs/top-bases/gcc-branch 2009-03-12 10:00:01 -07:00
Brian Behlendorf f2d72af596 Add remaining missing cases (or a default) to all switch statements.
The previous code was not wrong, but this prevents gcc from warning
us about missing cases for these known safe switch statements.  The
-Wno-missing-cases can now be removed to detect places where we
accidentally forgot a case.
2009-03-12 09:53:08 -07:00
Brian Behlendorf b392fd33fd Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-03-11 21:02:27 -07:00
Brian Behlendorf 4c042de40b Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-11 20:59:43 -07:00
Brian Behlendorf 60ac8152fe Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-11 20:59:42 -07:00
Brian Behlendorf 9915249546 Merge branch 'gcc-missing-braces' into refs/top-bases/gcc-branch 2009-03-11 20:53:11 -07:00
Brian Behlendorf d4dbc7dca8 Resolve all instances of missing braces. 2009-03-11 20:52:21 -07:00
Brian Behlendorf 330dbde81a Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-03-11 14:12:39 -07:00
Brian Behlendorf 1ca6578ebc Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-11 14:08:51 -07:00
Brian Behlendorf 8a3b1a5ff5 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-11 14:08:50 -07:00
Brian Behlendorf e5011401cd Merge branch 'gcc-no-parenthesis' into refs/top-bases/gcc-branch 2009-03-11 14:08:48 -07:00
Brian Behlendorf 3226eea157 Resolve additional cases where gcc wants extra parenthesis.
These were introduced by the rebase to b108.
2009-03-11 13:57:47 -07:00
Brian Behlendorf 261ca2beb9 Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2009-03-11 11:19:58 -07:00
Brian Behlendorf dff484a388 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2009-03-11 11:09:13 -07:00
Brian Behlendorf 5f30a3cb0e Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-11 11:09:11 -07:00
Brian Behlendorf 8fe801fd8f Merge branch 'gcc-ident-pragmas' into refs/top-bases/gcc-branch 2009-03-11 11:00:42 -07:00
Ricardo M. Correia af45030850 Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00