1. 29 3月, 2012 4 次提交
    • M
      dm thin: relax hard limit on the maximum size of a metadata device · c4a69ecd
      Mike Snitzer 提交于
      The thin metadata format can only make use of a device that is <=
      THIN_METADATA_MAX_SECTORS (currently 15.9375 GB).  Therefore, there is no
      practical benefit to using a larger device.
      
      However, it may be that other factors impose a certain granularity for
      the space that is allocated to a device (E.g. lvm2 can impose a coarse
      granularity through the use of large, >= 1 GB, physical extents).
      
      Rather than reject a larger metadata device, during thin-pool device
      construction, switch to allowing it but issue a warning if a device
      larger than THIN_METADATA_MAX_SECTORS_WARNING (16 GB) is
      provided.  Any space over 15.9375 GB will not be used.
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      c4a69ecd
    • J
      dm thin: commit outstanding data every second · 905e51b3
      Joe Thornber 提交于
      Commit unwritten data every second to prevent too much building up.
      
      Released blocks don't become available until after the next commit
      (for crash resilience).  Prior to this patch commits were only
      triggered by a message to the target or a REQ_{FLUSH,FUA} bio.  This
      allowed far too big a position to build up.
      
      The interval is hard-coded to 1 second.  This is a sensible setting.
      I'm not making this user configurable, since there isn't much to be
      gained by tweaking this - and a lot lost by setting it far too high.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      905e51b3
    • J
      dm thin: correct comments · fe878f34
      Joe Thornber 提交于
      Remove documentation for unimplemented 'trim' message.
      
      I'd planned a 'trim' target message for shrinking thin devices, but
      this is better handled via the discard ioctl.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      fe878f34
    • J
      dm thin: fix stacked bi_next usage · 6f94a4c4
      Joe Thornber 提交于
      Avoid using the bi_next field for the holder of a cell when deferring
      bios because a stacked device below might change it.  Store the
      holder in a new field in struct cell instead.
      
      When a cell is created, the bio that triggered creation (the holder) was
      added to the same bio list as subsequent bios.  In some cases we pass
      this holder bio directly to devices underneath.  If those devices use
      the bi_next field there will be trouble...
      
      This also simplifies some code that had to work out which bio was the
      holder.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      6f94a4c4
  2. 01 11月, 2011 1 次提交
    • J
      dm: add thin provisioning target · 991d9fa0
      Joe Thornber 提交于
      Initial EXPERIMENTAL implementation of device-mapper thin provisioning
      with snapshot support.  The 'thin' target is used to create instances of
      the virtual devices that are hosted in the 'thin-pool' target.  The
      thin-pool target provides data sharing among devices.  This sharing is
      made possible using the persistent-data library in the previous patch.
      
      The main highlight of this implementation, compared to the previous
      implementation of snapshots, is that it allows many virtual devices to
      be stored on the same data volume, simplifying administration and
      allowing sharing of data between volumes (thus reducing disk usage).
      
      Another big feature is support for arbitrary depth of recursive
      snapshots (snapshots of snapshots of snapshots ...).  The previous
      implementation of snapshots did this by chaining together lookup tables,
      and so performance was O(depth).  This new implementation uses a single
      data structure so we don't get this degradation with depth.
      
      For further information and examples of how to use this, please read
      Documentation/device-mapper/thin-provisioning.txt
      Signed-off-by: NJoe Thornber <thornber@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NAlasdair G Kergon <agk@redhat.com>
      991d9fa0