linux/fs/btrfs
Stefan Behrens 29a8d9a0bc Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block()
Before this commit, btrfs_map_block() was called with REQ_WRITE
in order to retrieve the list of mirrors for a disk block.
This needs to be changed for the device replace procedure since
it makes a difference whether you are asking for read mirrors
or for locations to write to.
GET_READ_MIRRORS is introduced as a new interface to call
btrfs_map_block().
In the current commit, the functionality is not yet changed,
only the interface for GET_READ_MIRRORS is introduced and all
the places that should use this new interface are adapted.

The reason that REQ_WRITE cannot be abused anymore to retrieve
a list of read mirrors is that during a running dev replace
operation all write requests to the live filesystem are
duplicated to also write to the target drive.
Keep in mind that the target disk is only partially a valid
copy of the source disk while the operation is ongoing. All
writes go to the target disk, but not all reads would return
valid data on the target disk. Therefore it is not possible
anymore to abuse a REQ_WRITE interface to find valid mirrors
for a REQ_READ.

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2012-12-12 17:15:43 -05:00
..
acl.c userns: Pass a userns parameter into posix_acl_to_xattr and posix_acl_from_xattr 2012-09-18 01:01:35 -07:00
async-thread.c Btrfs: call the ordered free operation without any locks held 2012-07-25 16:15:07 -04:00
async-thread.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
backref.c Btrfs: merge inode_list in __merge_refs 2012-12-12 17:15:27 -05:00
backref.h Btrfs: extended inode refs support for send mechanism 2012-10-25 15:45:16 -04:00
btrfs_inode.h Btrfs: fix a bug in checking whether a inode is already in log 2012-10-01 15:19:06 -04:00
check-integrity.c Btrfs: handle errors from btrfs_map_bio() everywhere 2012-12-12 17:15:40 -05:00
check-integrity.h Btrfs: add optional integrity check code 2011-12-21 19:14:09 +01:00
compat.h Btrfs: drop remaining LINUX_KERNEL_VERSION checks and compat code 2009-01-06 09:38:55 -05:00
compression.c Btrfs: handle errors from btrfs_map_bio() everywhere 2012-12-12 17:15:40 -05:00
compression.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ctree.c fs/btrfs: drop if around WARN_ON 2012-12-12 17:15:24 -05:00
ctree.h Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
delayed-inode.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
delayed-inode.h Btrfs: flush delayed inodes if we're short on space 2012-07-23 15:41:40 -04:00
delayed-ref.c Btrfs: allow delayed refs to be merged 2012-08-28 16:53:38 -04:00
delayed-ref.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-10-01 09:06:36 -07:00
dev-replace.c Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dev-replace.h Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dir-item.c btrfs: replace many BUG_ONs with proper error handling 2012-03-22 11:52:54 +01:00
disk-io.c Btrfs: change core code of btrfs to support the device replace operations 2012-12-12 17:15:42 -05:00
disk-io.h Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
export.c ->encode_fh() API change 2012-05-29 23:28:33 -04:00
export.h
extent_io.c Btrfs: handle errors from btrfs_map_bio() everywhere 2012-12-12 17:15:40 -05:00
extent_io.h Btrfs: pass fs_info to btrfs_map_block() instead of mapping_tree 2012-12-12 17:15:34 -05:00
extent_map.c Btrfs: do not hold the write_lock on the extent tree while logging 2012-10-04 09:39:58 -04:00
extent_map.h Btrfs: do not hold the write_lock on the extent tree while logging 2012-10-04 09:39:58 -04:00
extent-tree.c Btrfs: disallow some operations on the device replace target device 2012-12-12 17:15:39 -05:00
file-item.c Btrfs: fix wrong file extent length 2012-12-12 17:15:21 -05:00
file.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
free-space-cache.c Btrfs: fix unnecessary while loop when search the free space, cache 2012-12-11 13:31:33 -05:00
free-space-cache.h btrfs: remove all unused functions 2011-05-06 12:34:03 +02:00
hash.h btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-item.c btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-map.c Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
inode-map.h Btrfs: Support reading/writing on disk free ino cache 2011-04-25 16:46:11 +08:00
inode.c Btrfs: handle errors from btrfs_map_bio() everywhere 2012-12-12 17:15:40 -05:00
ioctl.c Btrfs: disallow some operations on the device replace target device 2012-12-12 17:15:39 -05:00
ioctl.h Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
Kconfig Btrfs: add config option to enable btrfs integrity check 2011-12-21 19:14:16 +01:00
locking.c Btrfs: fix a misplaced address operator in a condition 2012-08-28 16:53:23 -04:00
locking.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
lzo.c btrfs: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:21 +08:00
Makefile Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
math.h Btrfs: cleanup duplicated division functions 2012-12-11 13:31:30 -05:00
ordered-data.c Btrfs: cleanup for btrfs_wait_order_range 2012-12-12 17:15:19 -05:00
ordered-data.h Btrfs: make ordered extent be flushed by multi-task 2012-12-11 13:31:38 -05:00
orphan.c btrfs: replace many BUG_ONs with proper error handling 2012-03-22 11:52:54 +01:00
print-tree.c Btrfs: introduce a btrfs_dev_replace_item type 2012-12-12 17:15:38 -05:00
print-tree.h
qgroup.c Btrfs: fix memory leak in btrfs_quota_enable() 2012-10-25 15:45:43 -04:00
rcu-string.h Btrfs: use rcu to protect device->name 2012-06-14 21:29:16 -04:00
reada.c Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
relocation.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
root-tree.c btrfs: move transaction aborts to the point of failure 2012-10-08 20:09:02 -04:00
scrub.c Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
send.c Btrfs: Send: preserve ownership (uid and gid) also for symlinks. 2012-10-25 15:47:31 -04:00
send.h Btrfs: write_buf is now callable outside send.c 2012-10-04 09:39:55 -04:00
struct-funcs.c Btrfs: rewrite BTRFS_SETGET_FUNCS 2012-07-23 16:28:06 -04:00
super.c Btrfs: change core code of btrfs to support the device replace operations 2012-12-12 17:15:42 -05:00
sysfs.c btrfs: Remove unused sysfs code 2011-06-17 14:54:18 -04:00
transaction.c Btrfs: change core code of btrfs to support the device replace operations 2012-12-12 17:15:42 -05:00
transaction.h Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
tree-defrag.c btrfs: drop unused parameter from btrfs_release_path 2011-05-02 13:57:22 +02:00
tree-log.c Btrfs: fix missing log when BTRFS_INODE_NEEDS_FULL_SYNC is set 2012-12-12 17:15:22 -05:00
tree-log.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ulist.c Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
ulist.h Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
version.h
volumes.c Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
volumes.h Btrfs: change core code of btrfs to support the device replace operations 2012-12-12 17:15:42 -05:00
xattr.c Btrfs: use i_version instead of our own sequence 2012-05-30 10:23:27 -04:00
xattr.h fs/vfs/security: pass last path component to LSM on inode creation 2011-02-01 11:12:29 -05:00
zlib.c btrfs: fix message printing 2012-10-09 09:19:57 -04:00