> +
> +The above figure is another representation of reducing the disk image chain
> +using blockcommit. Data from Snap-1, Snap-2, Snap-3 are merged(/committed)
> +into RootBase, & now the current 'Active' image now pointing to 'RootBase' as its
> +backing file(instead of Snap-3, which was the case *before* blockcommit). Note
> +that, now intermediate images Snap-1, Snap-1, Snap-3 will be invalidated(as they were
 
......................................................Snap-1,Snap-2,........ 

> +dependent on a particular state of RootBase).
> +
> +blockpull
....................................................................
> +**Figure-5**
> +::
> +
> + .------------.  .------------.  .------------.  .------------.  .------------.
> + |            |  |            |  |            |  |            |  |            |
> + | RootBase   <---  Snap-1    <---  Snap-2    <---  Snap-3    <---  Snap-4    |
> + |            |  |            |  |            |  |            |  | (Active)   |
> + '------------'  '------------'  '------------'  '------------'  '------------'
> +                          |                 |              \
> +                          |                 |               \
> +                          |                 |                \
> +                          |                 |                 \ stream data
> +                          |                 | stream data      \
> +                          | stream data     |                   \
> +                          |                 |                    v
> +      .------------.      |                 '--------------->  .------------.
> +      |            |      '--------------------------------->  |            |
> +      | RootBase   |                                           |  Snap-4    |
> +      |            | <---------------------------------------- | (Active)   |
> +      '------------'                 Backing File              '------------'
> +
> +
> +
> +The above figure illustrates that, using block-copy we can pull data from

.......................................................using blockpull .................................

 
> +Snap-1, Snap-2 and Snap-3 into the 'Active' layer, resulting in 'RootBase'
> +becoming the backing file for the 'Active' image (instead of 'Snap-3', which was
> +the case before doing the blockpull operation).
-------------------------------------------------------------------------------------------------------------- 
> +
> +
> +Method (2)
> +----------
> +To end up with this image chain : **base <- sn1 <- sn3**  (by copying *sn2* into *sn3*)
> +
> +    (a) Copy contents of sn2(the old backing file) into sn3, and change the backing file link of sn3 to sn1::
> +
> +        # qemu-img rebase -b sn1.qcow2 sn3.qcow2
> +
> +            - Apart from changing backing file link of sn3 to sn1, the above cmd
> +              will it also /copy/ the contents from sn2 into sn3).
> +
> +            - In other words: This is 'Safe mode', which is the default --
> +              any clusters that differ between the new  backing_file(in this
> +              case, sn1) and the old backing file(in this case, sn2) of
> +              filename(in this case, sn3) are merged into filename(sn3), before
> +              actually changing the backing file.
> +
> +    (b) Now, we can delete the sn2 disk image(as the changes are now committed to
> +        sn1). ::
 
...........................................................(as the changes are now merged into sn3)....... 
> +
> +        # rm sn2.qcow2
> +
>

This is a good article,I learned a lot from eblake and this article ,thanks all!
 I've translated it into Chinese (http://goo.gl/9xzql) to get more people join us.