{"push_id":1098097337,"size":22,"distinct_size":22,"ref":"refs/heads/for-next","head":"2a65aee4011bd3a372ce23681ceb3a6960a96c8c","before":"d32bc8613b684e9fdd51b0db0b733703c0b956c6","commits":[{"sha":"4bb438ffdc5d3a330a30ecbe9ca1119f65625641","author":{"email":"b7b23ccda0e17b06db3f8f9fbe3256e03bf19cd0@gmail.com","name":"Wenwei Tao"},"message":"lightnvm: calculate rrpc total blocks and sectors up front\n\nCalculate rrpc total blocks and sectors up front, make sense\nto use them. For example, we use rrpc->nr_sects to calculate rrpc\narea size, but it makes no sense if we don't initialize it up front,\nsince it would be zero until we finish rrpc luns init.\n\nSigned-off-by: Wenwei Tao <ww.tao0320@gmail.com>\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/4bb438ffdc5d3a330a30ecbe9ca1119f65625641"},{"sha":"d8abc99bcf7918825a55bf95f5d77f5e055fdfdf","author":{"email":"b7b23ccda0e17b06db3f8f9fbe3256e03bf19cd0@gmail.com","name":"Wenwei Tao"},"message":"lightnvm: store rrpc->soffset in device sector size\n\nSince we mainly use soffset in device sector size, we therefore store\nthis value in rrpc->soffset, instead of the offset in 512byte sector\nsize. This eliminates the \"(ilog2(dev->sec_size) - 9)\" calculation on\neach I/O.\n\nSigned-off-by: Wenwei Tao <ww.tao0320@gmail.com>\nUpdated patch description.\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/d8abc99bcf7918825a55bf95f5d77f5e055fdfdf"},{"sha":"6c82d35a75ac864e0c638ee6602b1433062718ad","author":{"email":"6ce069e1d99260e2d193aacfff6b591eb2396ebf@cnexlabs.com","name":"Simon A. F. Lund"},"message":"lightnvm: rename nvm_targets to nvm_tgt_type\n\nThe functions nvm_register_target(), nvm_unregister_target() and\nassociated list refers to a target type that is being registered by a\ntarget type module. Rename nvm_*_targets() to nvm_*_tgt_type(), so that\nthe intension is clear.\n\nThis enables target instances to use the _nvm_*_targets() naming.\n\nSigned-off-by: Simon A. F. Lund <slund@cnexlabs.com>\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/6c82d35a75ac864e0c638ee6602b1433062718ad"},{"sha":"888b824ee050ed20177987dc449702ad0ab5daef","author":{"email":"6ce069e1d99260e2d193aacfff6b591eb2396ebf@cnexlabs.com","name":"Simon A. F. Lund"},"message":"lightnvm: refactor dev->online_target to global nvm_targets\n\nA target name must be unique. However, a per-device registration of\ntargets is maintained on a dev->online_targets list, with a per-device\nsearch for targets upon registration.\n\nThis results in a name collision when two targets, with the same name,\nare created on two different targets, where the per-device list is not\nshared.\n\nSigned-off-by: Simon A. F. Lund <slund@cnexlabs.com>\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/888b824ee050ed20177987dc449702ad0ab5daef"},{"sha":"f86eeaa498f9b3c34d97fceb918bf28a033e26af","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: introduce nvm_for_each_lun_ppa() macro\n\nUsers that wish to iterate all luns on a device. Must create a\nstruct ppa_addr and separate iterators for channels and luns. To set the\niterators, two loops are required, one to iterate channels, and another\nto iterate luns. This leads to decrease in readability.\n\nIntroduce nvm_for_each_lun_ppa, which implements the nested loop and\nsets ppa, channel, and lun variable for each loop body, eliminating\nthe boilerplate code.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/f86eeaa498f9b3c34d97fceb918bf28a033e26af"},{"sha":"2ee23cf9e550416555d0cd3290b52b45dce05098","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: refactor device ops->get_bb_tbl()\n\nThe device ops->get_bb_tbl() takes a callback, that allows the caller\nto use its own callback function to update its data structures in the\nreturning function.\n\nThis makes it difficult to send parameters to the callback, and usually\nis circumvented by small private structures, that both carry the callers\nstate and any flags needed to fulfill the update.\n\nRefactor ops->get_bb_tbl() to fill a data buffer with the status of the\nblocks returned, and let the user call the callback function manually.\nThat will provide the necessary flags and data structures and simplify\nthe logic around ops->get_bb_tbl().\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/2ee23cf9e550416555d0cd3290b52b45dce05098"},{"sha":"18c84c2b550c57717284ae96c4536c0fa8f72a3f","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: remove struct factory_blks\n\nNow that device ops->get_bb_table no longer uses a callback, the\nstruct factory_blks can be removed.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/18c84c2b550c57717284ae96c4536c0fa8f72a3f"},{"sha":"6fb82a1776f91e82f250e4b22bb578603ae1e531","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: make nvm_set_rqd_ppalist() aware of vblks\n\nA virtual block enables a block to identify multiple physical blocks.\nThis is useful for metadata where a device media supports multiple\nplanes. In that case, a block, with multiple planes can be managed\nas a single vblk. Reducing the metadata required by one forth.\n\nnvm_set_rqd_ppalist() takes care of expanding a ppa_list with vblks\nautomatically. However, for some use-cases, where only a single physical\nblock is required, the ppa_list should not be expanded.\n\nTherefore, add a vblk parameter to nvm_set_rqd_ppalist(), and only\nexpand the ppa_list if vblk is set.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/6fb82a1776f91e82f250e4b22bb578603ae1e531"},{"sha":"04660aed3982c7c6a43357573c5f28f29b97242f","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: move responsibility for bad blk mgmt to target\n\nWe move the responsibility of managing the persistent bad block table to\nthe target. The target may choose to mark a block bad or retry writing\nto it. Never the less, it should be the target that makes the decision\nand not the media manager.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/04660aed3982c7c6a43357573c5f28f29b97242f"},{"sha":"505ba06a187e51365d2dd60a802c92aceed67099","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: refactor set_bb_tbl for accepting ppa list\n\nThe set_bb_tbl takes struct nvm_rq and only uses its ppa_list and\nnr_pages internally. Instead, make these two variables explicit.\nThis allows a user to call it without initializing a struct nvm_rq\nfirst.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/505ba06a187e51365d2dd60a802c92aceed67099"},{"sha":"33181698fc737faee9852415202b77eaf1c59b78","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: fix out of bound ppa lun id on bb tbl\n\nThe ppa configured for retrieving the bad block table uses the internal\nlun id to setup the get bad block ppa. This increases monotonically\nwith the number luns available. When configuring a ppa, the channel and\nlun must be specified separately, leading to an out of bound memory\naccess in gennvm_block_bb when lun id goes beyond the luns available\nwithin a channel.\n\nAdditional, remove out of bound check in gennvm_block_bb(), as it was a\nbuggy to begin with.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/33181698fc737faee9852415202b77eaf1c59b78"},{"sha":"21fa006531854c496821081d0188e293145da01e","author":{"email":"828c1a17681e8566a17a1a4801ea67306010b273@cnexlabs.com","name":"Javier González"},"message":"lightnvm: do not free unused metadata on rrpc\n\nrrpc does not save any metadata on a given request. Thus, do not attempt\nto free the metadata dma region.\n\nSigned-off-by: Javier González <javier@cnexlabs.com>\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/21fa006531854c496821081d0188e293145da01e"},{"sha":"8235fd02a36decdf00cfbbbf903d437c3c9c2a6d","author":{"email":"828c1a17681e8566a17a1a4801ea67306010b273@cnexlabs.com","name":"Javier González"},"message":"lightnvm: enable metadata to be sent to device\n\nEnable metadata buffer to be sent to the device through the metadata\nfield on the physical rw nvme command. The size of the metadata buffer\nmust follow dev->oob_size * # of PPAs.\n\nSigned-off-by: Javier González <javier@cnexlabs.com>\nUpdated description.\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/8235fd02a36decdf00cfbbbf903d437c3c9c2a6d"},{"sha":"1f5bd6094de204d94bd93bde4ec476c107e1f144","author":{"email":"828c1a17681e8566a17a1a4801ea67306010b273@cnexlabs.com","name":"Javier González"},"message":"lightnvm: rename dma helper functions\n\nUntil now, the dma pool have been exclusively used to allocate the ppa\nlist being sent to the device. In pblk (upcoming), we use these pools to\nallocate metadata too. Thus, we generalize the names of some variables\non the dma helper functions to make the code more readable.\n\nSigned-off-by: Javier González <javier@cnexlabs.com>\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/1f5bd6094de204d94bd93bde4ec476c107e1f144"},{"sha":"714b02262c4d90f1d329379aa9e6fb25ec7665dc","author":{"email":"bf169a711b430cb763859053627bb76d98a96051@grimberg.me","name":"Sagi Grimberg"},"message":"nvme/lightnvm: Log using the ctrl named device\n\nAlign with the rest of the nvme subsystem.\n\nSigned-off-by: Sagi Grimberg <sagi@grimberg.me>\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/714b02262c4d90f1d329379aa9e6fb25ec7665dc"},{"sha":"10a4ee89174d7177c3c5d002e6fc5f092f022bcf","author":{"email":"10f507e71980d391161c979d35809259368b6261@lightnvm.io","name":"Javier González"},"message":"lightnvm: do not assume sequential lun alloc.\n\nWhen doing GC, rrpc calculates the physical LUN to which the rrpc block\nbelongs too. This calculation is based on the assumption that LUNs are\nassigned sequentially to the LUN list. Use the reference to the LUN\ninstead. This saves us the calculation and allows us to align LUNs in a\ndifferent manner to, for example, take advantage of devide parallelism.\n\nSigned-off-by: Javier González <javier@cnexlabs.com>\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/10a4ee89174d7177c3c5d002e6fc5f092f022bcf"},{"sha":"5abe835e20aea37c6cbd285f2cafbe009a7acdfd","author":{"email":"f2c659f01951776204a6c5b902787d9019fbeebd@arndb.de","name":"Arnd Bergmann"},"message":"lightnvm: pass dma address to hardware rather than pointer\n\nA recent change to lightnvm added code to pass a kernel pointer\nto the hardware, which gcc complained about:\n\ndrivers/nvme/host/lightnvm.c: In function 'nvme_nvm_rqtocmd':\ndrivers/nvme/host/lightnvm.c:472:32: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]\n  c->ph_rw.metadata = cpu_to_le64(rqd->meta_list);\n\nIt looks like this has no way of working anyway, so this changes\nthe code to pass the dma_address instead. This was most likely\nwhat was intended here. Neither of the two are currently ever\nwritten to, so the effect is the same for now.\n\nSigned-off-by: Arnd Bergmann <arnd@arndb.de>\nFixes: a34b1eb78e21 (\"lightnvm: enable metadata to be sent to device\")\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/5abe835e20aea37c6cbd285f2cafbe009a7acdfd"},{"sha":"ac50cac54c7617f48195c3d421285c5c0c76ebfb","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: remove mgt targets on mgt removal\n\nTargets associated with a device manager are not freed on device\nremoval. They have to be manually removed before shutdown. Make sure\nany outstanding targets are freed upon shutdown.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/ac50cac54c7617f48195c3d421285c5c0c76ebfb"},{"sha":"d0ee38bbefd2100567a5b0bef32129d31bb304ea","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: expose gennvm_mark_blk to targets\n\nTargets can update a block state when having a reference to an\nin-memory virtual block. In the case that a target does not keep the\nblock metadata in memory, it does not have a way to update this\nstructure.\n\nTherefore, expose gennvm_mark_blk() through the media managers\n->mark_blk() callback and let targets update the state structure through\nthis callback.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/d0ee38bbefd2100567a5b0bef32129d31bb304ea"},{"sha":"bb063e5ba32ea29c64117fe3cd6e869cd7de9307","author":{"email":"6b0d31c0d563223024da45691584643ac78c96e8@bjorling.me","name":"Matias Bjørling"},"message":"lightnvm: add is_cached entry to struct ppa_addr\n\nA target requires a method to identify PPAs that are either cached in\nmemory or on disk. This can efficiently be maintained within the PPA.\nThe target host-side translation table can then lookup a PPA and know\nfrom the PPA if it is cached or on disk. In the case it is cached, it is\nthe responsibility of the target to maintain this cache.\n\nSigned-off-by: Matias Bjørling <m@bjorling.me>","distinct":true,"url":"https://api.github.com/repos/OpenChannelSSD/linux/commits/bb063e5ba32ea29c64117fe3cd6e869cd7de9307"}]}