{"push_id":1398931350,"size":33,"distinct_size":33,"ref":"refs/heads/dax-on-btrfs","head":"81a702a22fbbbd6b2df53d82e54416a41bb721e4","before":"cf4014a048d586aca01be4d6859835b31f96265a","commits":[{"sha":"509c44123e160f2e38ebf99350d8612b5b9c5c6d","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: fix truncate down when no_holes feature is enabled\n\nFor such a file mapping,\n\n[0-4k][hole][8k-12k]\n\nIn NO_HOLES mode, we don't have the [hole] extent any more.\nCommit c1aa45759e90 (\"Btrfs: fix shrinking truncate when the no_holes feature is enabled\")\n fixed disk isize not being updated in NO_HOLES mode when data is not flushed.\n\nHowever, even if data has been flushed, we can still have trouble\nin updating disk isize since we updated disk isize to 'start' of\nthe last evicted extent.\n\nAlso add a ASSERT for better catching (for developers only).\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/509c44123e160f2e38ebf99350d8612b5b9c5c6d"},{"sha":"c7f59665cd396352ceef2f0b81a0fb43217a8251","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"MM: make function noinline to have ftrace function entry\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/c7f59665cd396352ceef2f0b81a0fb43217a8251"},{"sha":"b173811cf55a5a6e985966e7dbeed5dd19efa859","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: add dax mount option\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/b173811cf55a5a6e985966e7dbeed5dd19efa859"},{"sha":"5c7d04eb7f646c2d43e344e5d54df21c125b1b35","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: dax implies NODATACOW\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/5c7d04eb7f646c2d43e344e5d54df21c125b1b35"},{"sha":"4c66c1c94ea22e06320d3a50b89ce4d5a147ba4b","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: add dax support (read part)\n\nThis uses get_extent plus map_block to get the device address to\nfeed dax_fault().  Other code remains as same as directio get_blocks().\n\nv2: fix bh_result->b_blocknr to 'phy_addr >> inode->i_blkbits'\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/4c66c1c94ea22e06320d3a50b89ce4d5a147ba4b"},{"sha":"0383ff3f5e227547201352634844c2f4919e4b63","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: dax fault write (prealloc part)\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/0383ff3f5e227547201352634844c2f4919e4b63"},{"sha":"c73e096f48b982d3844ef162d708f46fa2753ffa","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: fix em double free\n\nWe've already had a free_extent_map in unlock_err section.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/c73e096f48b982d3844ef162d708f46fa2753ffa"},{"sha":"07efef95173dc83d07267a73b1e41fc61d3f276a","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: make dax write on prealloc work\n\nThis patch contains the following stuff,\n- adds debug info.\n- fixes several compile errors, including typos and btrfs_err's args\n- initializes ret so that dax_fault doesn't bail out,\n- use [start, end] instead of [start, len) for btrfs_mark_extent_written,\n- fix to use btrfs logical bytenr for btrfs_map_block.\n- fix to use len instead of stripe->length since stripe->length is\n  only valid when using REQ_OP_DISCARD.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/07efef95173dc83d07267a73b1e41fc61d3f276a"},{"sha":"4e69d89513ff6d79876398600fe0aada3d420ba7","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: dax write on hole extent\n\ndax write on hole extent will do\n- reserve data and metadata\n- allocate a block\n- insert file extent item\n- update inode\n- zeroout the extent to avoid stale content\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/4e69d89513ff6d79876398600fe0aada3d420ba7"},{"sha":"34aae0aec221ba81846509cd7bff10a9cbaf6023","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: dax read/write path\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/34aae0aec221ba81846509cd7bff10a9cbaf6023"},{"sha":"06f30ce651cc0469f406b89ee980d0bc6cfee18c","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: fix partial block from write, truncate, punch_hole\n\nWith this, generic/127 won't complain.\n\n- add end_io for dax io so that we can update isize accordingly and correctly.\n- fix truncate and punch_hole to zero out partial block properly.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/06f30ce651cc0469f406b89ee980d0bc6cfee18c"},{"sha":"64e389be32a66d2b8b4e69b3e921cc5eb2b2936d","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"DAX: use proper length when the range span two blocks\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/64e389be32a66d2b8b4e69b3e921cc5eb2b2936d"},{"sha":"2ef29f096bfa03c0dac24c21a75a3b32b615e8b1","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: disable dax if device doesn't support dax\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/2ef29f096bfa03c0dac24c21a75a3b32b615e8b1"},{"sha":"bf0ab6bc2c8abe62c563c3015a2c6ce8da5c507e","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: dax inode doesn't need inline extent\n\nIt's unnecessary to put inline extent to dax inode.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/bf0ab6bc2c8abe62c563c3015a2c6ce8da5c507e"},{"sha":"3295312197eaf402d0d01ca18ae3d11222d4aa3e","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: serialize unlocked dio read/write with punch_hole\n\nSince punch_hole can free blocks, we may have problems like\n unlock dio tasks                     punch_hole\n\n ->btrfs_direct_IO\n   ->btrfs_get_blocks_direct\n                                      ->__btrfs_drop_extents\n                                      ->btrfs_end_transaction\n                                      # allocate blocks to other inode\n   ->submit_io()\n   # IO goes to other inode\n\nWe don't change inode size within punch_hole, so we need to keep blocking\nupcoming unlock dio read till we finish our job, while upcoming unlocked\n dio write will be blocked by inode_lock.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/3295312197eaf402d0d01ca18ae3d11222d4aa3e"},{"sha":"ba4d43b40993dda64e46e2a2e0ee6cf49655fa76","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Revert \"Btrfs: serialize unlocked dio read/write with punch_hole\"\n\nThis reverts commit ac30aaf2a5447b0dbc4928bf324f32e6a95b362e.\n\nbtrfs_punch_hole has used extent state lock and ordered extent to\nserialize unlocked dio read/write and punch_hole, also it checks\npage cache cache after truncate_page_cache and taking extent state\nlock, if there is any pages reinstantiated by page fault, it'd go\nover again to do truncate_page_cache.","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/ba4d43b40993dda64e46e2a2e0ee6cf49655fa76"},{"sha":"1a76d818e3f4181d1a6b7073b38a1dc4eeeab1d4","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: add mmap_sem to serialise page faults with truncate/punch_hole\n\nCurrently truncate(btrfs_setsize) performs following steps,\n1. update inode size\n2. call truncate_pagecache if truncating down file.  (truncate_pagecache needs to take page lock)\n3. remove file's data extent\n\npunch_hole(btrfs_punch_hole) takes a different approach (it doesn't change inode size)\n1. lock_extent\n2. truncate_pagecache against the range that we're punching\n3. checking ordered extents (if true, go to 1)\n4. remove file's data extent and fill with hole extent if necessary\n5. unlock_extent\n\npage_mkwrite performs following steps,\n1. lock_page\n2. if (page beyond EOF or mapping is different)\n        /* FAIL and return */\n3. lock_extent\n4. checking ordered extent (if true, go to 1)\n5. create delalloc extent and set page dirty\n6. unlock_extent\n\nThe main concern about the race is that page fault comes after\ntruncate_pagecache in truncate/punch_hole so that page will\nbe reinstantiated and ends up read/write-after-free.\n\nFor truncate, the race is obviouly avoided by checking inode size,\nwhile for punch_hole, the race is avoided by lock_extent.\n\nAlthough it works, it's subtle and fragile comparing to using a mmap_sem.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/1a76d818e3f4181d1a6b7073b38a1dc4eeeab1d4"},{"sha":"df0da40a9fae1dc531df79362b7943f1702605d1","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: do not parse other options with -odax\n\n-o dax,compress can remove nodatacow implied by -odax.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/df0da40a9fae1dc531df79362b7943f1702605d1"},{"sha":"88e0eb4dbfd3c80dab57d6d256e794addd88683e","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: update inode in dax endio callback\n\nEven if we don't have an update for inode size, other fields like\ninode_nbytes and transid requires us to update inode.\n\nThis adds updating inode back.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/88e0eb4dbfd3c80dab57d6d256e794addd88683e"},{"sha":"c07a6eb2830e5bee32ac86be4077d621a3986cf8","author":{"name":"Liu Bo","email":"2320f47fd1b0bdd58584dbc8b4d320b2decf8329@oracle.com"},"message":"Btrfs: return EIO for shared extent\n\nNow that we don't know how to deal with shared extent in dax case,\njust return EIO.\n\nSigned-off-by: Liu Bo <bo.li.liu@oracle.com>","distinct":true,"url":"https://api.github.com/repos/liubogithub/btrfs-work/commits/c07a6eb2830e5bee32ac86be4077d621a3986cf8"}]}
{"actor":{"display_login":"liubogithub"}}