f3aa3b93df
Partitions for a zvol device were not appearing in /dev/zvol/<pool>/ at module load time for a couple of reasons. 1) The Linux block layer expects a block device to have a non-zero capacity during add_disk(). If the capacity is zero it does not attempt to open the device which means we never trigger a partition scan. The device capacity was just being set during the first open. 2) Because we expect to be adding a block device to the zvol_state_list during zvol_create_minor() the zvol_state_lock() is held. This can result in a deadlock in add_disk() when it attempts to open the block device via zvol_open() which also takes this same lock. To avoid this issue special handling has been added to zvol_open() and zvol_release() to allow the mutex owner to enter these functions without retaking the lock. 3) In __zvol_create_minor() the call to dmu_objset_disown() must occur before the call to add_disk(). As mentioned above add_disk() results in a call to zvol_open() which will attempt to call dmu_objset_own() again on the objset. If the objset is already open it will fail resulting in a failed open. This in turn means the kernel will be unable to read the partition information from the device. |
||
---|---|---|
cmd | ||
config | ||
etc | ||
lib | ||
man | ||
module | ||
patches | ||
scripts | ||
.gitignore | ||
.topdeps | ||
.topmsg | ||
AUTHORS | ||
COPYING | ||
COPYRIGHT | ||
ChangeLog | ||
DISCLAIMER | ||
GIT | ||
META | ||
Makefile.am | ||
OPENSOLARIS.LICENSE | ||
README.markdown | ||
ZFS.RELEASE | ||
autogen.sh | ||
configure.ac | ||
zfs-modules.spec.in | ||
zfs.spec.in |
README.markdown
Native ZFS for Linux! ZFS is an advanced file system and volume manager which was originally developed for Solaris. It has been successfully ported to FreeBSD and now there is a functional Linux ZFS kernel port too. The port currently includes a fully functional and stable SPA, DMU, and ZVOL with a ZFS Posix Layer (ZPL) on the way!
Documentation for building, configuring, and using ZFS can be found at: http://wiki.github.com/behlendorf/zfs/