<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/lightnvm/gennvm.c, branch linux-4.5.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.5.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.5.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-01-12T15:21:17Z</updated>
<entry>
<title>lightnvm: manage open and closed blocks separately</title>
<updated>2016-01-12T15:21:17Z</updated>
<author>
<name>Javier González</name>
</author>
<published>2016-01-12T06:49:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ff0e498bfa185fad5e86c4c7a2db4f9648d2344f'/>
<id>urn:sha1:ff0e498bfa185fad5e86c4c7a2db4f9648d2344f</id>
<content type='text'>
LightNVM targets need to know the state of the flash block when doing
flash optimizations. An example is implementing a write buffer to
respect the flash page size. Currently, block state is not accounted
for; the media manager only differentiates among free, bad and in-use
blocks.

This patch adds the logic in the generic media manager to enable
targets manage blocks into open and close separately, and it implements
such management in rrpc. It also adds a set of flags to describe the
state of the block (open, closed, free, bad).

In order to avoid taking two locks (nvm_lun and rrpc_lun) consecutively,
we introduce lockless get_/put_block primitives so that the open and
close list locks and future common logic is handled within the nvm_lun
lock.

Signed-off-by: Javier González &lt;javier@cnexlabs.com&gt;
Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: move rq-&gt;error to nvm_rq-&gt;error</title>
<updated>2016-01-12T15:21:17Z</updated>
<author>
<name>Matias Bjørling</name>
</author>
<published>2016-01-12T06:49:29Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=72d256ecc5d0c8cbcc0bd5c6d983b434df556cb4'/>
<id>urn:sha1:72d256ecc5d0c8cbcc0bd5c6d983b434df556cb4</id>
<content type='text'>
Instead of passing request error into the LightNVM modules, incorporate
it into the nvm_rq.

Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: support multiple ppas in nvm_erase_ppa</title>
<updated>2016-01-12T15:21:17Z</updated>
<author>
<name>Matias Bjørling</name>
</author>
<published>2016-01-12T06:49:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=81e681d3f7424fc2f03b6269e15c63131473c98f'/>
<id>urn:sha1:81e681d3f7424fc2f03b6269e15c63131473c98f</id>
<content type='text'>
Sometimes a user want to erase multiple PPAs at the same time. Extend
nvm_erase_ppa to take multiple ppas and number of ppas to be erased.

Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: refactor end_io functions for sync</title>
<updated>2016-01-12T15:21:16Z</updated>
<author>
<name>Matias Bjørling</name>
</author>
<published>2016-01-12T06:49:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=91276162de9476b8ff32d9452e849210e5dd09e9'/>
<id>urn:sha1:91276162de9476b8ff32d9452e849210e5dd09e9</id>
<content type='text'>
To implement sync I/O support within the LightNVM core, the end_io
functions are refactored to take an end_io function pointer instead of
testing for initialized media manager, followed by calling its end_io
function.

Sync I/O can then be implemented using a callback that signal I/O
completion. This is similar to the logic found in blk_to_execute_io().
By implementing it this way, the underlying device I/Os submission logic
is abstracted away from core, targets, and media managers.

Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: move ppa erase logic to core</title>
<updated>2016-01-12T15:21:16Z</updated>
<author>
<name>Matias Bjørling</name>
</author>
<published>2016-01-12T06:49:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=069368e91879a3a640cfae4bdc1f9f8cc99c93a0'/>
<id>urn:sha1:069368e91879a3a640cfae4bdc1f9f8cc99c93a0</id>
<content type='text'>
A device may function in single, dual or quad plane mode. The gennvm
media manager manages this with explicit helpers. They convert a single
ppa to 1, 2 or 4 separate ppas in a ppa list. To aid implementation of
recovery and system blocks, this functionality can be moved directly
into the core.

Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: fix incorrect nr_free_blocks stat</title>
<updated>2016-01-12T15:21:15Z</updated>
<author>
<name>Chao Yu</name>
</author>
<published>2016-01-12T06:49:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bdded1552085b12d23c9be76147d2e96647a098f'/>
<id>urn:sha1:bdded1552085b12d23c9be76147d2e96647a098f</id>
<content type='text'>
When initing bad block list in gennvm_block_bb, once we move bad block
from free_list to bb_list, we should maintain both stat info
nr_free_blocks and nr_bad_blocks. So this patch fixes to add missing
operation related to nr_free_blocks.

Signed-off-by: Chao Yu &lt;chao2.yu@samsung.com&gt;
Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: fix bio submission issue</title>
<updated>2016-01-12T15:21:15Z</updated>
<author>
<name>Wenwei Tao</name>
</author>
<published>2016-01-12T06:49:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3cd485b1f8e25a6534eb4c542e7eba1b944fbaaf'/>
<id>urn:sha1:3cd485b1f8e25a6534eb4c542e7eba1b944fbaaf</id>
<content type='text'>
Put bio when submission fails, since we get it
before submission. And return error when backend
device driver doesn't provide a submit_io method,
thus we can end IO properly.

Signed-off-by: Wenwei Tao &lt;ww.tao0320@gmail.com&gt;
Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: wrong offset in bad blk lun calculation</title>
<updated>2015-12-29T15:28:32Z</updated>
<author>
<name>Matias Bjørling</name>
</author>
<published>2015-12-29T13:37:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c3293a9ac2a4f9160b85b5e986a8e0c54986e7f7'/>
<id>urn:sha1:c3293a9ac2a4f9160b85b5e986a8e0c54986e7f7</id>
<content type='text'>
dev-&gt;nr_luns reports the total number of luns available in a device
while dev-&gt;luns_per_chnl is the number of luns per channel.

When multiple channels are available, the offset is calculated from a
channel and lun id into a linear array. As it multiplies with
the total number of luns, we go out of bound when channel id &gt; 0 and
causes the kernel to panic when we read a protected kernel memory area.

Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: prevent gennvm module unload on use</title>
<updated>2015-12-07T16:14:19Z</updated>
<author>
<name>Matias Bjørling</name>
</author>
<published>2015-12-06T10:25:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=008b74438269b368d57a14452afbc194f7f9ff2f'/>
<id>urn:sha1:008b74438269b368d57a14452afbc194f7f9ff2f</id>
<content type='text'>
After the gennvm module has been initialized. It might be attached to
one or several devices. In that case, the module is in use. Make sure
that it can not be unloaded.

Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
<entry>
<title>lightnvm: replace req queue with nvmdev for lld</title>
<updated>2015-12-07T16:14:19Z</updated>
<author>
<name>Matias Bjørling</name>
</author>
<published>2015-12-06T10:25:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=16f26c3aa9b9c36a9d1092ae3258461d1008481e'/>
<id>urn:sha1:16f26c3aa9b9c36a9d1092ae3258461d1008481e</id>
<content type='text'>
In the case where a request queue is passed to the low lever lightnvm
device drive integration, the device driver might pass its admin
commands through another queue. Instead pass nvm_dev, and let the
low level drive the appropriate queue.

Reported-by: Christoph Hellwig &lt;hch@infradead.org&gt;
Signed-off-by: Matias Bjørling &lt;m@bjorling.me&gt;
Signed-off-by: Jens Axboe &lt;axboe@fb.com&gt;
</content>
</entry>
</feed>
