Btrfs: make the scrub page array dynamically allocated
authorStefan Behrens <sbehrens@giantdisaster.de>
Fri, 2 Nov 2012 13:58:04 +0000 (14:58 +0100)
committerJosef Bacik <jbacik@fusionio.com>
Wed, 12 Dec 2012 22:15:30 +0000 (17:15 -0500)
commit7a9e9987681198c56ac7f165725ca322d7a196e1
tree352517134c77a7f0fc64579198326bd73ecb4ae3
parenta36cf8b8933e4a7a7f2f2cbc3c70b097e97f7fd1
Btrfs: make the scrub page array dynamically allocated

With the modified design (in order to support the devive replace
procedure) it is necessary to alloc the page array dynamically.
The reason is that pages are reused. At first a page is used for
the bio to read the data from the filesystem, then the same page
is reused for the bio that writes the data to the target disk.
Since the read process and the write process are completely
decoupled, this requires a new concept of refcounts and get/put
functions for pages, and it requires to use newly created pages
for each read bio which are freed after the write operation
is finished.

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
fs/btrfs/scrub.c