zfs/module/zfs
Brian Behlendorf ed97b4447d Adds the last missing block device support (merge_bdev support)
This change should wrap up the last of the missing block device
support in the vdev_disk layer.  With this change I can now
successfully create and use zpools which are layered on top of
md and lvm virtual devices.  The following changes include:

1) The big one, properly handle the case when page cannot be added
to a bio due to dynamic limitation of a merge_bdev handler.  For
example the md device will limit a bio to the configured stripe
size.  Our bio size may also end up being limited by the maximum
request size, and other factors determined during bio construction.

To handle all of the above cases the code has been updated to
handle failures from bio_add_page().  This had been hardcoded to
never fail for the prototype proof of concept implementation.  In
the case of a failure the number of bytes which still need to be
added to a bio are returned.  New bio's are allocated and attached
to the dio until the entire data buffer is mapped to bios.  It is
then submitted as before to the request queue, and once all the bio's
attached to a dio have finished the completion callback is run.

2) The devid comments have been removed because it is not clear to
me that we will not need devid support.  They have been replaced
with a comment explaining that udev can and should be used.
2009-10-27 14:38:38 -07:00
..
include/sys Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-08-18 12:34:09 -07:00
Makefile.in Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-10 21:28:01 -07:00
arc.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-07 15:50:13 -07:00
bplist.c Move the world out of /zfs/ and seperate out module build tree 2008-12-11 11:08:09 -08:00
dbuf.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-03 16:28:48 -07:00
dmu.c Merge commit 'refs/top-bases/gcc-shadow' into gcc-shadow 2009-08-18 12:07:23 -07:00
dmu_object.c Rebase master to b117 2009-07-02 15:44:48 -07:00
dmu_objset.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
dmu_send.c Merge commit 'refs/top-bases/gcc-shadow' into gcc-shadow 2009-08-18 12:07:23 -07:00
dmu_traverse.c Merge commit 'refs/top-bases/gcc-uninit' into gcc-uninit 2009-07-02 16:57:09 -07:00
dmu_tx.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
dmu_zfetch.c Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2009-03-19 15:29:34 -07:00
dnode.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
dnode_sync.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-09 12:23:39 -07:00
dsl_dataset.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
dsl_deleg.c Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-08-18 12:04:53 -07:00
dsl_dir.c Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-08-18 12:04:53 -07:00
dsl_pool.c Merge branch 'fix-clock-wrap' into refs/top-bases/fix-branch 2009-07-06 13:12:23 -07:00
dsl_prop.c Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-08-18 12:04:53 -07:00
dsl_scrub.c Merge commit 'refs/top-bases/gcc-c90' into gcc-c90 2009-08-18 11:55:36 -07:00
dsl_synctask.c Merge branch 'gcc-ident-pragmas' into refs/top-bases/gcc-branch 2009-03-11 11:00:42 -07:00
fletcher.c Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-07-02 16:49:11 -07:00
gzip.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-11 11:09:11 -07:00
lzjb.c Merge branch 'gcc-ident-pragmas' into refs/top-bases/gcc-branch 2009-03-11 11:00:42 -07:00
metaslab.c Merge branch 'gcc-unused' into refs/top-bases/gcc-branch 2009-07-07 16:30:54 -07:00
refcount.c Merge branch 'gcc-ident-pragmas' into refs/top-bases/gcc-branch 2009-03-11 11:00:42 -07:00
rrwlock.c Rebase master to b121 2009-08-18 11:43:27 -07:00
sha256.c Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00
spa.c Merge commit 'refs/top-bases/gcc-uninit' into gcc-uninit 2009-08-18 12:06:21 -07:00
spa_boot.c Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00
spa_config.c Rebase master to b121 2009-08-18 11:43:27 -07:00
spa_errlog.c Rebase master to b117 2009-07-02 15:44:48 -07:00
spa_history.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
spa_misc.c Merge commit 'refs/top-bases/gcc-uninit' into gcc-uninit 2009-08-18 12:06:21 -07:00
space_map.c Rebase master to b117 2009-07-02 15:44:48 -07:00
txg.c Merge branch 'feature-branch' into refs/top-bases/zfs-branch 2009-08-04 15:54:19 -07:00
uberblock.c Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00
unique.c Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00
vdev.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 14:18:34 -07:00
vdev_cache.c Revert to original debugging code and wrap any variabled used only 2009-07-09 12:10:52 -07:00
vdev_disk.c Adds the last missing block device support (merge_bdev support) 2009-10-27 14:38:38 -07:00
vdev_file.c Rebase master to b105 2009-01-15 13:59:39 -08:00
vdev_label.c Merge commit 'refs/top-bases/gcc-uninit' into gcc-uninit 2009-08-18 12:06:21 -07:00
vdev_mirror.c Required build 121 updates for gcc-c90 2009-08-18 14:07:25 -07:00
vdev_missing.c Move the world out of /zfs/ and seperate out module build tree 2008-12-11 11:08:09 -08:00
vdev_queue.c Merge commit 'refs/top-bases/gcc-c90' into gcc-c90 2009-08-18 11:55:36 -07:00
vdev_raidz.c Merge branch 'gcc-shadow' into refs/top-bases/gcc-branch 2009-08-18 14:18:32 -07:00
vdev_root.c Required build 121 updates for gcc-c90 2009-08-18 14:07:25 -07:00
zap.c Merge commit 'refs/top-bases/feature-zap-cursor-to-key' into feature-zap-cursor-to-key 2009-07-06 13:14:41 -07:00
zap_leaf.c Merge commit 'refs/top-bases/gcc-uninit' into gcc-uninit 2009-07-02 16:57:09 -07:00
zap_micro.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
zfs_acl.c Rebase master to b121 2009-08-18 11:43:27 -07:00
zfs_byteswap.c Merge commit 'refs/top-bases/gcc-uninit' into gcc-uninit 2009-01-15 14:05:32 -08:00
zfs_ctldir.c Rebase master to b121 2009-08-18 11:43:27 -07:00
zfs_dir.c Rebase master to b117 2009-07-02 15:44:48 -07:00
zfs_fm.c Rebase master to b117 2009-07-02 15:44:48 -07:00
zfs_fuid.c Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-08-18 12:04:53 -07:00
zfs_ioctl.c Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-08-18 12:04:53 -07:00
zfs_log.c Rebase master to b117 2009-07-02 15:44:48 -07:00
zfs_replay.c Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00
zfs_rlock.c Rebase master to b108 2009-02-18 12:51:31 -08:00
zfs_vfsops.c Rebase master to b121 2009-08-18 11:43:27 -07:00
zfs_vnops.c Rebase master to b121 2009-08-18 11:43:27 -07:00
zfs_znode.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
zil.c Rebase master to b121 2009-08-18 11:43:27 -07:00
zio.c Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-10 10:50:12 -07:00
zio_checksum.c Move the world out of /zfs/ and seperate out module build tree 2008-12-11 11:08:09 -08:00
zio_compress.c Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00
zio_inject.c Rebase master to b117 2009-07-02 15:44:48 -07:00
zvol.c Rebase master to b117 2009-07-02 15:44:48 -07:00