<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Latha;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Latha;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoPlainText">Mike,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I was doing some testing with latest dm-cache code (from 'for-next' branch). I am having difficulty in making the cache to warm-up. I used the below script to read range of blocks repeatedly to get them promoted. I assume after reading
 a block for mq->promote_threshold + 4 times, a block will be promoted. But it is not happening. I also tested the same with the sequential_threshold set to very high value.
<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Cache warming-up was relatively easier in the previous dm-cache code. Is this something you have seen in your testing?. Is there anything different should I do?<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Note: /dev/mapper/mydev is the dm-cache target device. I ran the below script with “64k 100 100 0” as argument.<o:p></o:p></p>
<p class="MsoPlainText">-----------<o:p></o:p></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">#!/bin/bash<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">if [[ $# -lt 4 ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">then<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        echo "Usage: $0 <cache_block_size> <nblocks to promote> <nread of a block> <start_block>"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        exit 1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">fi<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">BSSIZE=$1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">((TOTAL=$2+$4))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">HITCNT=$3<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""># Read even numbered blocks<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">blkcnt=$4<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">while [[ blkcnt -lt $TOTAL ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        i=0<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        echo "Reading block $blkcnt $HITCNT times"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        while [[ $i -lt $HITCNT ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                dd if=/dev/mapper/mydev of=/dev/null bs=$BSSIZE skip=$blkcnt count=1 conv=notrunc iflag=direct 2> /dev/null<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                if [[ $? -ne 0 ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">               then<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                        echo "I/O failure. exiting."<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                        exit 1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                fi<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                ((i=i+1))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        done<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        ((blkcnt=blkcnt+2))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        PROMOTED=$(dmsetup status mydev | awk '{print $11}')<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        echo "Promoted blocks so far: $PROMOTED"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">done<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""># Read odd numbered blocks<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">((blkcnt=$4+1))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">while [[ blkcnt -lt $TOTAL ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        i=0<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        echo "Reading block $blkcnt $HITCNT times"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        while [[ $i -lt $HITCNT ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        do<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                dd if=/dev/mapper/mydev of=/dev/null bs=$BSSIZE skip=$blkcnt count=1 conv=notrunc iflag=direct 2> /dev/null<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                if [[ $? -ne 0 ]]<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                then<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                        echo "I/O failure. exiting."<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                        exit 1<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                fi<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">                ((i=i+1))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        done<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        ((blkcnt=blkcnt+2))<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        PROMOTED=$(dmsetup status mydev | awk '{print $11}')<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">        echo "Promoted blocks so far: $PROMOTED"<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-family:"Courier New"">done<o:p></o:p></span></p>
<p class="MsoPlainText">------------<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Regards,<o:p></o:p></p>
<p class="MsoPlainText">Somu.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">-----Original Message-----<br>
From: dm-devel-bounces@redhat.com [mailto:dm-devel-bounces@redhat.com] On Behalf Of Mike Snitzer<br>
Sent: Thursday, October 24, 2013 1:30 PM<br>
To: dm-devel@redhat.com<br>
Cc: Mears, Morgan; Heinz Mauelshagen; Joe Thornber; Mike Snitzer<br>
Subject: [dm-devel] [PATCH 00/24] dm cache: proposed changes for v3.13 merge</p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">The following patches have been published to the 'for-next' branch of the device-mapper git repository:<o:p></o:p></p>
<p class="MsoPlainText">git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">The patches marked as RFC (19-24) could use the most review.  But all review would be appreciated.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thanks,<o:p></o:p></p>
<p class="MsoPlainText">Mike<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Heinz Mauelshagen (11):<o:p></o:p></p>
<p class="MsoPlainText">  dm cache policy mq: return NULL if mq->free list is empty in alloc_entry<o:p></o:p></p>
<p class="MsoPlainText">  dm cache policy: variable hints support<o:p></o:p></p>
<p class="MsoPlainText">  dm cache policy: have policy_writeback_work return -ENODATA by default<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: use is_write_io() in more places<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: use cell_defer() boolean argument consistently<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: log error message if dm_kcopyd_copy() fails<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: use a boolean when setting cache->quiescing<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: optimize commit_if_needed<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: add hints policy<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: add cache block invalidation API<o:p></o:p></p>
<p class="MsoPlainText">  dm cache policy era: add cache block invalidation support<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Joe Thornber (9):<o:p></o:p></p>
<p class="MsoPlainText">  dm: nest targets used for testing under DM_TEST_TARGETS<o:p></o:p></p>
<p class="MsoPlainText">  dm space map disk: optimise sm_disk_dec_block<o:p></o:p></p>
<p class="MsoPlainText">  dm cache policy: remove return from void policy_remove_mapping<o:p></o:p></p>
<p class="MsoPlainText">  dm cache policy mq: a few small fixes<o:p></o:p></p>
<p class="MsoPlainText">  dm cache policy mq: implement writeback_work() and mq_{set,clear}_dirty()<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: be much more aggressive about promoting writes to discarded blocks<o:p></o:p></p>
<p class="MsoPlainText">  dm cache metadata: return bool from __superblock_all_zeroes<o:p></o:p></p>
<p class="MsoPlainText">  dm cache metadata: check the metadata version when reading the superblock<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: add passthrough mode<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Mike Snitzer (1):<o:p></o:p></p>
<p class="MsoPlainText">  dm table: print error on preresume failure<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Morgan Mears (3):<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: support for stackable caching policies<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: add era policy shim<o:p></o:p></p>
<p class="MsoPlainText">  dm cache: add trc policy shim<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">drivers/md/Kconfig                             |  68 ++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/Makefile                            |   9 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-metadata.c                 | 189 +++++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-metadata.h                 |  28 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-cleaner.c           |  10 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-era.c               | 542 +++++++++++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-hints.c             | 769 +++++++++++++++++++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-internal.h          |  31 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-mq.c                | 343 ++++++++---<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy-trc.c               | 263 +++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy.c                   |  66 ++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-policy.h                   |  77 ++-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-shim-utils.c               | 217 +++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-shim-utils.h               |  73 +++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-stack-utils.c              | 239 ++++++++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-stack-utils.h              |  34 ++<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-cache-target.c                   | 417 ++++++++++++--<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/dm-table.c                          |   5 +-<o:p></o:p></p>
<p class="MsoPlainText">drivers/md/persistent-data/dm-space-map-disk.c |  18 +-<o:p></o:p></p>
<p class="MsoPlainText">19 files changed, 3167 insertions(+), 231 deletions(-)  create mode 100644 drivers/md/dm-cache-policy-era.c  create mode 100644 drivers/md/dm-cache-policy-hints.c<o:p></o:p></p>
<p class="MsoPlainText">create mode 100644 drivers/md/dm-cache-policy-trc.c  create mode 100644 drivers/md/dm-cache-shim-utils.c  create mode 100644 drivers/md/dm-cache-shim-utils.h  create mode 100644 drivers/md/dm-cache-stack-utils.c  create mode 100644 drivers/md/dm-cache-stack-utils.h<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">--<o:p></o:p></p>
<p class="MsoPlainText">1.8.1.4<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">--<o:p></o:p></p>
<p class="MsoPlainText">dm-devel mailing list<o:p></o:p></p>
<p class="MsoPlainText"><a href="mailto:dm-devel@redhat.com"><span style="color:windowtext;text-decoration:none">dm-devel@redhat.com</span></a><o:p></o:p></p>
<p class="MsoPlainText"><a href="https://www.redhat.com/mailman/listinfo/dm-devel"><span style="color:windowtext;text-decoration:none">https://www.redhat.com/mailman/listinfo/dm-devel</span></a><o:p></o:p></p>
</div>
</body>
</html>