{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:25:43Z","timestamp":1750220743814,"version":"3.41.0"},"reference-count":23,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2020,4,30]],"date-time":"2020-04-30T00:00:00Z","timestamp":1588204800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Queue"],"published-print":{"date-parts":[[2020,4,30]]},"abstract":"<jats:p>Power failures pose the most severe threat to application data integrity, and painful experience teaches that the integrity promises of failure-atomic update mechanisms can\u2019t be taken at face value. Diligent developers and operators insist on confirming integrity claims by extensive firsthand tests. This article presents a simple and inexpensive testbed capable of subjecting storage devices, system software, and application software to ten thousand sudden whole-system power-interruption tests per week.<\/jats:p>","DOI":"10.1145\/3400899.3400902","type":"journal-article","created":{"date-parts":[[2020,5,19]],"date-time":"2020-05-19T10:08:57Z","timestamp":1589882937000},"page":"25-46","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Is Persistent Memory Persistent?"],"prefix":"10.1145","volume":"18","author":[{"given":"Terence","family":"Kelly","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,5,19]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"crossref","unstructured":"Allspaw J. 2012. Fault injection in production. acmqueue 10(8); http:\/\/queue.acm.org\/detail.cfm?id=2353017.","DOI":"10.1145\/2346916.2353017"},{"key":"e_1_2_1_2_1","doi-asserted-by":"crossref","unstructured":"Alvaro. P. Tymon S. 2017. Abstracting the geniuses away from failure testing. acmqueue 15(5); https:\/\/queue.acm.org\/detail.cfm?id=3155114.","DOI":"10.1145\/3155112.3155114"},{"key":"e_1_2_1_4_1","unstructured":"Hellwig C. 2017. Failure-atomic writes for file systems and block devices. https:\/\/lwn.net\/Articles\/715918\/."},{"volume-title":"Linux Piter 2019","author":"Hellwig C.","key":"e_1_2_1_5_1","unstructured":"Hellwig. C. 2019. Failure-atomic file updates for Linux. In Linux Piter 2019; Presentation: https:\/\/linuxpiter.com\/en\/materials\/2307; patches: https:\/\/www.spinics.net\/lists\/linux-xfs\/msg04536.html and http:\/\/git.infradead.org\/users\/hch\/vfs.git\/shortlog\/refs\/heads\/O_ATOMIC."},{"key":"e_1_2_1_6_1","first-page":"38","volume-title":"The Art of Electronics","author":"Horowitz P.","unstructured":"Horowitz, P., Hill, W. 2015. The Art of Electronics, third edition, pages 38-39 and 818. Cambridge University Press."},{"key":"e_1_2_1_7_1","unstructured":"Intel. Optane technology; http:\/\/www.intel.com\/optane\/."},{"key":"e_1_2_1_8_1","unstructured":"Intel. Persistent Memory Development Kit; http:\/\/pmem.io\/pmdk\/."},{"key":"e_1_2_1_9_1","unstructured":"Kelly T. famus: Failure-Atomic msync() in User Space. http:\/\/web.eecs.umich.edu\/~tpkelly\/famus\/."},{"volume-title":"Good old-fashioned persistent memory. ;login: 44(4), 29-34","author":"Kelly T.","key":"e_1_2_1_10_1","unstructured":"Kelly, T. 2019. Good old-fashioned persistent memory. ;login: 44(4), 29-34; https:\/\/www.usenix.org\/system\/files\/login\/articles\/login_winter19_08_kelly.pdf. (Source code for famus_snap library available at https:\/\/www.usenix.org\/sites\/default\/files\/kelly_code.tgz.)"},{"key":"e_1_2_1_11_1","doi-asserted-by":"crossref","unstructured":"Kelly T. 2019. Persistent memory programming on conventional hardware. acmqueue 17(4); https:\/\/dl.acm.org\/citation.cfm?id=3358957.","DOI":"10.1145\/3358955.3358957"},{"key":"e_1_2_1_12_1","unstructured":"Linux Programmer's Manual. ioctl_ficlone(); http:\/\/man7.org\/linux\/man-pages\/man2\/ioctl_ficlonerange.2.html."},{"key":"e_1_2_1_13_1","doi-asserted-by":"crossref","unstructured":"McCaffrey C. 2016. The verification of a distributed system. acmqueue 13(9); http:\/\/queue.acm.org\/detail.cfm?id=2889274.","DOI":"10.1145\/2857274.2889274"},{"volume-title":"Raspberry Pi","author":"McManus S.","key":"e_1_2_1_14_1","unstructured":"McManus, S., Cook, M. 2015. Raspberry Pi, second edition, 281. John Wiley & Sons."},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2150976.2151018"},{"key":"e_1_2_1_16_1","unstructured":"Swanson S. (organizer). Persistent programming in real life (conference); https:\/\/pirl.nvsl.io\/."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2465351.2465374"},{"key":"e_1_2_1_18_1","unstructured":"Raspberry Pi 3 Model B+; https:\/\/www.raspberrypi.org\/products\/raspberry-pi-3-model-b-plus\/."},{"key":"e_1_2_1_19_1","volume-title":"Axicom relay, product code IM21TS, part number 1-1462039-5. Vendor datasheets: https:\/\/www.te.com\/usa-en\/product-1-1462039-5.html","author":"Connectivity","year":"2039","unstructured":"TE Connectivity. Axicom relay, product code IM21TS, part number 1-1462039-5. Vendor datasheets: https:\/\/www.te.com\/usa-en\/product-1-1462039-5.html; https:\/\/www.te.com\/usa-en\/product-1-1462039-5.datasheet.pdf; https:\/\/www.te.com\/commerce\/DocumentDelivery\/DDEController?Action=srchrtrv&DocNm=1-1773734-7_IM_Relay_I_Type&DocType=DS&DocLang=English."},{"key":"e_1_2_1_20_1","volume-title":"Proceedings of the 13th Usenix Conference on File and Storage Technologies (FAST); https:\/\/www.usenix.org\/system\/files\/conference\/fast15\/fast15-paper-verma.pdf.","author":"Verma R.","year":"2015","unstructured":"Verma, R., Mendez, A. A., Park, S., Mannarswamy, S., Kelly, T., Morrey, B. 2015. Failure-atomic updates of application data in a Linux file system. In Proceedings of the 13th Usenix Conference on File and Storage Technologies (FAST); https:\/\/www.usenix.org\/system\/files\/conference\/fast15\/fast15-paper-verma.pdf."},{"key":"e_1_2_1_22_1","volume-title":"Proceedings of the 14th Usenix Conference on File and Storage Technologies (FAST); https:\/\/www.usenix.org\/system\/files\/conference\/fast16\/fast16-papers-xu.pdf.","author":"Xu J.","year":"2016","unstructured":"Xu, J., Swanson, S. 2016. NOVA: A log-structured file system for hybrid volatile\/nonvolatile main memories. In Proceedings of the 14th Usenix Conference on File and Storage Technologies (FAST); https:\/\/www.usenix.org\/system\/files\/conference\/fast16\/fast16-papers-xu.pdf."},{"key":"e_1_2_1_23_1","volume-title":"Usenix Annual Technical Conference. https:\/\/www.usenix.org\/conference\/atc12\/technical-sessions\/presentation\/yoo.","author":"Yoo S.","year":"2012","unstructured":"Yoo, S., Killian, C., Kelly, T., Cho, H. K., Plite, S. 2012. Composable reliability for asynchronous systems. Usenix Annual Technical Conference. https:\/\/www.usenix.org\/conference\/atc12\/technical-sessions\/presentation\/yoo."},{"volume-title":"Proceedings of the 11th Usenix Symposium on Operating Systems Design and Implementation (OSDI)","author":"Zheng M.","key":"e_1_2_1_24_1","unstructured":"Zheng, M., Tucek, J., Huang, D., Qin, F., Lillibridge, M., Yang, E. S., Bill W. Zhao, B. W., Singh, S. 2014. Torturing databases for fun and profit. In Proceedings of the 11th Usenix Symposium on Operating Systems Design and Implementation (OSDI); https:\/\/www.usenix.org\/system\/files\/conference\/osdi14\/osdi14-paper-zheng_mai.pdf (Note that an errata sheet is provided separately.)"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.5555\/2591272.2591300"}],"container-title":["Queue"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3400899.3400902","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3400899.3400902","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:38:43Z","timestamp":1750199923000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3400899.3400902"}},"subtitle":["A simple and inexpensive test of failure-atomic update mechanisms"],"short-title":[],"issued":{"date-parts":[[2020,4,30]]},"references-count":23,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2020,4,30]]}},"alternative-id":["10.1145\/3400899.3400902"],"URL":"https:\/\/doi.org\/10.1145\/3400899.3400902","relation":{},"ISSN":["1542-7730","1542-7749"],"issn-type":[{"type":"print","value":"1542-7730"},{"type":"electronic","value":"1542-7749"}],"subject":[],"published":{"date-parts":[[2020,4,30]]},"assertion":[{"value":"2020-05-19","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}