<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in dm-delay.c</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>d43929ef - dm-delay: support zoned devices</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#d43929ef</link>
        <description>dm-delay: support zoned devicesAdd support for zoned device by passing through report_zoned to theunderlying read device.This is required to make enable xfstests xfs/311 on zoned devices.Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;Reviewed-by: Damien Le Moal &lt;dlemoal@kernel.org&gt;Signed-off-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Fri, 21 Mar 2025 07:18:16 +0000</pubDate>
        <dc:creator>Christoph Hellwig &lt;hch@lst.de&gt;</dc:creator>
    </item>
<item>
        <title>8b21ac87 - dm-delay: remove timer_lock</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#8b21ac87</link>
        <description>dm-delay: remove timer_lockInstead of manually checking the timer details in queue_timeout(), calltimer_reduce() to start the timer or reduce the expiration time. Thisavoids needing a lock.Signed-off-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Tue, 07 May 2024 21:16:25 +0000</pubDate>
        <dc:creator>Benjamin Marzinski &lt;bmarzins@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>c542ee14 - dm-delay: change locking to avoid contention</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#c542ee14</link>
        <description>dm-delay: change locking to avoid contentionThe delayed_bios list is protected by one mutex shared by all dm-delaydevices. This mutex must be held whenever a bio is added or expired biosare removed from the list.  Since a large number of expired bios couldbe on the list, flush_delayed_bios() can schedule while holding themutex. This means a flush_delayed_bios() call on any dm-delay device canslow down delay_map() calls on any other dm-delay device.To keep dm-delay devices from slowing each other down and keepprocessing delay bios from slowing adding delayed bios, the global mutexhas been removed, and each dm-delay device now has two locks.delayed_bios_lock is a spinlock that must be held whenever thedelayed_bios list is accessed. process_bios_lock is a mutex that must beheld whenever a process has temporarily pulled bios off the delayed_bioslist to check which ones should be processed. It must be held until allthe bios that won&apos;t be processed are returned to the list. This is whatflush_delayed_bios() now does. The mutex is necessary to guarantee thatdelay_presuspend() sees the entire list of delayed bios when it callsflush_delayed_bios().Signed-off-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Tue, 07 May 2024 21:16:24 +0000</pubDate>
        <dc:creator>Benjamin Marzinski &lt;bmarzins@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>64eb88d6 - dm-delay: fix max_delay calculations</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#64eb88d6</link>
        <description>dm-delay: fix max_delay calculationsdelay_ctr() pointlessly compared max_delay in cases where multiple delayclasses were initialized identically. Also, when write delays wereconfigured different than read delays, delay_ctr() never compared theirvalue against max_delay. Fix these issues.Fixes: 70bbeb29fab0 (&quot;dm delay: for short delays, use kthread instead of timers and wq&quot;)Signed-off-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Mon, 06 May 2024 21:55:44 +0000</pubDate>
        <dc:creator>Benjamin Marzinski &lt;bmarzins@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>d14646f2 - dm-delay: fix hung task introduced by kthread mode</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#d14646f2</link>
        <description>dm-delay: fix hung task introduced by kthread modeIf the worker thread is not woken due to a bio, then it is not woken atall. This causes the hung task check to trigger. This occurs, forinstance, when no bios are submitted. Also when a delay of 0 isconfigured, delay_bio() returns without waking the worker.Prevent the hung task check from triggering by creating the thread withkthread_run() instead of using kthread_create() directly.Fixes: 70bbeb29fab0 (&quot;dm delay: for short delays, use kthread instead of timers and wq&quot;)Signed-off-by: Joel Colledge &lt;joel.colledge@linbit.com&gt;Reviewed-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Mon, 06 May 2024 07:25:23 +0000</pubDate>
        <dc:creator>Joel Colledge &lt;joel.colledge@linbit.com&gt;</dc:creator>
    </item>
<item>
        <title>8d24790e - dm-delay: fix workqueue delay_timer race</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#8d24790e</link>
        <description>dm-delay: fix workqueue delay_timer racedelay_timer could be pending when delay_dtr() is called. It needs to beshut down before kdelayd_wq is destroyed, so it won&apos;t try queueing morework to kdelayd_wq while that&apos;s getting destroyed.Also the del_timer_sync() call in delay_presuspend() doesn&apos;t protectagainst the timer getting immediately rearmed by the queued call toflush_delayed_bios(), but there&apos;s no real harm if that does happen.timer_delete() is less work, and is basically just as likely to stop apointless call to flush_delayed_bios().Fixes: 26b9f228703f (&quot;dm: delay target&quot;)Signed-off-by: Benjamin Marzinski &lt;bmarzins@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Tue, 07 May 2024 21:16:23 +0000</pubDate>
        <dc:creator>Benjamin Marzinski &lt;bmarzins@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>ccadc8a2 - dm-delay: avoid duplicate logic</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#ccadc8a2</link>
        <description>dm-delay: avoid duplicate logicThis is small refactoring of dm-delay - we avoid duplicate logic inflush_delayed_bios and flush_delayed_bios_fast and join these twofunctions into one.We also add cond_resched() to flush_delayed_bios because the list may haveunbounded number of entries.Signed-off-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Fri, 17 Nov 2023 17:24:04 +0000</pubDate>
        <dc:creator>Mikulas Patocka &lt;mpatocka@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>38cfff56 - dm-delay: fix bugs introduced by kthread mode</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#38cfff56</link>
        <description>dm-delay: fix bugs introduced by kthread modeThis commit fixes the following bugs introduced by commit 70bbeb29fab0(&quot;dm delay: for short delays, use kthread instead of timers and wq&quot;):* the function flush_worker_fn has no exit path - on unload, this  function will just loop and consume 100% CPU without any progress* the wake-up mechanism in flush_worker_fn is racy - a wake up will be  missed if the process adds entries to the delayed_bios list just  before set_current_state(TASK_INTERRUPTIBLE)* flush_delayed_bios_fast submits a bio while holding a global mutex;  this may deadlock if we have multiple stacked dm-delay devices and  the underlying device attempts to acquire the mutex too* if the target constructor fails, it will call delay_dtr. delay_dtr  would attempt to free dc-&gt;timer_lock without it being initialized by  the constructor.* if the target constructor&apos;s kthread allocation fails, delay_dtr  would crash trying to dereference dc-&gt;worker because it is non-NULL  due to ERR_PTR.Fixes: 70bbeb29fab0 (&quot;dm delay: for short delays, use kthread instead of timers and wq&quot;)Signed-off-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Fri, 17 Nov 2023 17:22:47 +0000</pubDate>
        <dc:creator>Mikulas Patocka &lt;mpatocka@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>6fc45b6e - dm-delay: fix a race between delay_presuspend and delay_bio</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#6fc45b6e</link>
        <description>dm-delay: fix a race between delay_presuspend and delay_bioIn delay_presuspend, we set the atomic variable may_delay and then stopthe timer and flush pending bios. The intention here is to prevent thedelay target from re-arming the timer again.However, this test is racy. Suppose that one thread goes to delay_bio,sees that dc-&gt;may_delay is one and proceeds; now, another thread executesdelay_presuspend, it sets dc-&gt;may_delay to zero, deletes the timer andflushes pending bios. Then, the first thread continues and adds the bio todelayed-&gt;list despite the fact that dc-&gt;may_delay is false.Fix this bug by changing may_delay&apos;s type from atomic_t to bool andonly access it while holding the delayed_bios_lock mutex. Note that wedon&apos;t have to grab the mutex in delay_resume because there are no biosin flight at this point.Signed-off-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;Cc: stable@vger.kernel.orgSigned-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Fri, 17 Nov 2023 17:21:14 +0000</pubDate>
        <dc:creator>Mikulas Patocka &lt;mpatocka@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>70bbeb29 - dm delay: for short delays, use kthread instead of timers and wq</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#70bbeb29</link>
        <description>dm delay: for short delays, use kthread instead of timers and wqDM delay&apos;s current design of using timers and wq to realize the delaysis insufficient for delays below ~50ms.This commit enhances the design to use a kthread to flush the expireddelays, trading some CPU time (in some cases) for better delayaccuracy and delays closer to what the user requested for smallerdelays. The new design is chosen as long as all the delays are below50ms.Since bios can&apos;t be completed in interrupt context using a kthreadis probably the most reasonable way to approach this.Testing withecho &quot;0 2097152 zero&quot; | dmsetup create dm-zerosfor i in $(seq 0 20);do  echo &quot;0 2097152 delay /dev/mapper/dm-zeros 0 $i&quot; | dmsetup create dm-delay-${i}ms;doneSome performance numbers for comparison, on beaglebone black (singlecore) CONFIG_HZ_1000=y:fio --name=1msread --rw=randread --bs=4k --runtime=60 --time_based \    --filename=/dev/mapper/dm-delay-1msTheoretical maximum: 1000 IOPSPrevious: 250 IOPSKthread: 500 IOPSfio --name=10msread --rw=randread --bs=4k --runtime=60 --time_based \    --filename=/dev/mapper/dm-delay-10msTheoretical maximum: 100 IOPSPrevious: 45 IOPSKthread: 50 IOPSfio --name=1mswrite --rw=randwrite --direct=1 --bs=4k --runtime=60 \    --time_based --filename=/dev/mapper/dm-delay-1msTheoretical maximum: 1000 IOPSPrevious: 498 IOPSKthread: 1000 IOPSfio --name=10mswrite --rw=randwrite --direct=1 --bs=4k --runtime=60 \    --time_based --filename=/dev/mapper/dm-delay-10msTheoretical maximum: 100 IOPSPrevious: 90 IOPSKthread: 100 IOPS(This one is just to prove the new design isn&apos;t impacting throughput,not really about delays):fio --name=10mswriteasync --rw=randwrite --direct=1 --bs=4k \    --runtime=60 --time_based --filename=/dev/mapper/dm-delay-10ms \    --numjobs=32 --iodepth=64 --ioengine=libaio --group_reportingPrevious: 13.3k IOPSKthread: 13.3k IOPSSigned-off-by: Christian Loehle &lt;christian.loehle@arm.com&gt;[Harshit: kthread_create error handling fix in delay_ctr]Signed-off-by: Harshit Mogalapalli &lt;harshit.m.mogalapalli@oracle.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Fri, 20 Oct 2023 11:46:05 +0000</pubDate>
        <dc:creator>Christian Loehle &lt;christian.loehle@arm.com&gt;</dc:creator>
    </item>
<item>
        <title>3664ff82 - dm: add helper macro for simple DM target module init and exit</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#3664ff82</link>
        <description>dm: add helper macro for simple DM target module init and exitEliminate duplicate boilerplate code for simple modules that containa single DM target driver without any additional setup code.Add a new module_dm() macro, which replaces the module_init() andmodule_exit() with template functions that call dm_register_target()and dm_unregister_target() respectively.Signed-off-by: Yangtao Li &lt;frank.li@vivo.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Sun, 09 Apr 2023 16:43:37 +0000</pubDate>
        <dc:creator>Yangtao Li &lt;frank.li@vivo.com&gt;</dc:creator>
    </item>
<item>
        <title>b362c733 - dm: push error reporting down to dm_register_target()</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#b362c733</link>
        <description>dm: push error reporting down to dm_register_target()Simplifies each DM target&apos;s init method by making dm_register_target()responsible for its error reporting (on behalf of targets).Signed-off-by: Yangtao Li &lt;frank.li@vivo.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Sat, 18 Mar 2023 13:16:33 +0000</pubDate>
        <dc:creator>Yangtao Li &lt;frank.li@vivo.com&gt;</dc:creator>
    </item>
<item>
        <title>86a3238c - dm: change &quot;unsigned&quot; to &quot;unsigned int&quot;</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#86a3238c</link>
        <description>dm: change &quot;unsigned&quot; to &quot;unsigned int&quot;Signed-off-by: Heinz Mauelshagen &lt;heinzm@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Wed, 25 Jan 2023 20:14:58 +0000</pubDate>
        <dc:creator>Heinz Mauelshagen &lt;heinzm@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>3bd94003 - dm: add missing SPDX-License-Indentifiers</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#3bd94003</link>
        <description>dm: add missing SPDX-License-Indentifiers&apos;GPL-2.0-only&apos; is used instead of &apos;GPL-2.0&apos; because SPDX hasdeprecated its use.Suggested-by: John Wiele &lt;jwiele@redhat.com&gt;Signed-off-by: Heinz Mauelshagen &lt;heinzm@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Wed, 25 Jan 2023 20:00:44 +0000</pubDate>
        <dc:creator>Heinz Mauelshagen &lt;heinzm@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>e86f2b00 - dm: simplify basic targets</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#e86f2b00</link>
        <description>dm: simplify basic targetsRemove needless factoring and remap bi_sector regardless ofbio_sectors() being non-zero.Signed-off-by: Mike Snitzer &lt;snitzer@kernel.org&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Wed, 30 Mar 2022 17:52:10 +0000</pubDate>
        <dc:creator>Mike Snitzer &lt;snitzer@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>b7f8dff0 - dm: simplify dm_sumbit_bio_remap interface</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#b7f8dff0</link>
        <description>dm: simplify dm_sumbit_bio_remap interfaceRemove the from_wq argument from dm_sumbit_bio_remap(). Eliminates theneed for dm_sumbit_bio_remap() callers to know whether they arecalling for a workqueue or from the original dm_submit_bio().Add map_task to dm_io struct, record the map_task in alloc_io andclear it after all target -&gt;map() calls have completed. Updatedm_sumbit_bio_remap to check if &apos;current&apos; matches io-&gt;map_task ratherthan rely on passed &apos;from_rq&apos; argument.This change really simplifies the chore of porting each DM target tousing dm_sumbit_bio_remap() because there is no longer the risk ofprogramming error by not completely knowing all the different contextsa particular method that calls dm_sumbit_bio_remap() might be used in.Signed-off-by: Mike Snitzer &lt;snitzer@redhat.com&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Thu, 10 Mar 2022 16:45:58 +0000</pubDate>
        <dc:creator>Mike Snitzer &lt;snitzer@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>c3573421 - dm delay: use dm_submit_bio_remap</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#c3573421</link>
        <description>dm delay: use dm_submit_bio_remapReviewed-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@redhat.com&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Fri, 18 Feb 2022 04:40:37 +0000</pubDate>
        <dc:creator>Mike Snitzer &lt;snitzer@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>8ec45662 - dm: update target status functions to support IMA measurement</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#8ec45662</link>
        <description>dm: update target status functions to support IMA measurementFor device mapper targets to take advantage of IMA&apos;s measurementcapabilities, the status functions for the individual targets need to beupdated to handle the status_type_t case for value STATUSTYPE_IMA.Update status functions for the following target types, to log theirrespective attributes to be measured using IMA. 01. cache 02. crypt 03. integrity 04. linear 05. mirror 06. multipath 07. raid 08. snapshot 09. striped 10. verityFor rest of the targets, handle the STATUSTYPE_IMA case by setting themeasurement buffer to NULL.For IMA to measure the data on a given system, the IMA policy on thesystem needs to be updated to have the following line, and the systemneeds to be restarted for the measurements to take effect./etc/ima/ima-policy measure func=CRITICAL_DATA label=device-mapper template=ima-bufThe measurements will be reflected in the IMA logs, which are located at:/sys/kernel/security/integrity/ima/ascii_runtime_measurements/sys/kernel/security/integrity/ima/binary_runtime_measurementsThese IMA logs can later be consumed by various attestation clientsrunning on the system, and send them to external services for attestingthe system.The DM target data measured by IMA subsystem can alternativelybe queried from userspace by setting DM_IMA_MEASUREMENT_FLAG withDM_TABLE_STATUS_CMD.Signed-off-by: Tushar Sugandhi &lt;tusharsu@linux.microsoft.com&gt;Signed-off-by: Mike Snitzer &lt;snitzer@redhat.com&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Tue, 13 Jul 2021 00:49:03 +0000</pubDate>
        <dc:creator>Tushar Sugandhi &lt;tusharsu@linux.microsoft.com&gt;</dc:creator>
    </item>
<item>
        <title>ed00aabd - block: rename generic_make_request to submit_bio_noacct</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#ed00aabd</link>
        <description>block: rename generic_make_request to submit_bio_noacctgeneric_make_request has always been very confusingly misnamed, so renameit to submit_bio_noacct to make it clear that it is submit_bio minusaccounting and a few checks.Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;Signed-off-by: Jens Axboe &lt;axboe@kernel.dk&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Wed, 01 Jul 2020 08:59:44 +0000</pubDate>
        <dc:creator>Christoph Hellwig &lt;hch@lst.de&gt;</dc:creator>
    </item>
<item>
        <title>81bc6d15 - dm delay: fix a crash when invalid device is specified</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/drivers/md/dm-delay.c#81bc6d15</link>
        <description>dm delay: fix a crash when invalid device is specifiedWhen the target line contains an invalid device, delay_ctr() will calldelay_dtr() with NULL workqueue.  Attempting to destroy the NULLworkqueue causes a crash.Signed-off-by: Mikulas Patocka &lt;mpatocka@redhat.com&gt;Cc: stable@vger.kernel.orgSigned-off-by: Mike Snitzer &lt;snitzer@redhat.com&gt;

            List of files:
            /linux-6.15/drivers/md/dm-delay.c</description>
        <pubDate>Thu, 25 Apr 2019 16:07:54 +0000</pubDate>
        <dc:creator>Mikulas Patocka &lt;mpatocka@redhat.com&gt;</dc:creator>
    </item>
</channel>
</rss>
