[01:00:37] *** Quits: ziyeyang_ (~ziyeyang@192.102.204.38) (Read error: Connection reset by peer) [01:19:55] *** Joins: alekseymmm (050811aa@gateway/web/freenode/ip.5.8.17.170) [01:20:24] Hello. I have a small question about buffers required alignment in spdk bdev drivers. Anyone is here who can help me ? [06:15:12] alekseymmm: please ask away [06:15:45] everyone is here to help you :) [06:16:13] *** Quits: alekseymmm (050811aa@gateway/web/freenode/ip.5.8.17.170) (Quit: Page closed) [06:20:11] *** Joins: alekseymmm (050811aa@gateway/web/freenode/ip.5.8.17.170) [06:22:08] I noticed that all the bdevs define required_alignment. Which is in my understaning is for proper memory buffers allignment in bdev_io. my question is why only aio bdev use spdk_bdev_io_get_buf() ? [06:28:46] Actually from what I see it is the other way around. Just a few bdevs set their own required_alignment (such as aio, ftl, crypto). Most of virtual bdevs just pass what device underneath has. Meanwhile spdk_bdev_io_get_buf() is used throughout the bdevs, not just aio. [06:33:06] what I mean is that they define it somehow may be from underlying devs (not just set 0 - no alignment) [06:34:32] oh I see [06:35:21] about usage. Why then for example passthru use spdk_bdev_io_get_buf only for reads, whereas aio use it both for reads and writes ? [06:35:54] and raid only use it for reads [06:37:24] aio needs all I/O to have a specific alignment [06:38:19] spdk_bdev_io_get_buf() for aio writes can either pass-through the provided buffer as is, or allocate a bounce-buffer with proper alignment [06:40:09] passthru doesn't require any specific alignment, so for writes it always uses the provided buffer as is and doesn't call spdk_bdev_io_get_buf() [06:41:02] it still calls spdk_bdev_io_get_buf() for READs, because the user might have not provided the buffer [06:42:39] so to reword what I just said - spdk_bdev_io_get_buf() has two usages: [06:43:06] * allocate a buffer if the user hasn't provided one [06:43:57] * allocate a bounce-buffer if the bdev module specified a required alignment, but the provided buffer does not have that alignment [06:44:43] thanks for summing that up [06:45:06] but it still unclear for me in which cases for write do I have to call spdk_bdev_io_get_buf [06:46:45] you only need to call it for writes if you require your buffers to have a specific alignment [06:48:55] i.e. if the underlying bdev module implementation requires it [06:49:01] like linux AIO does [06:49:09] aio module do not do any operations with buffers, why does it require alignment for writes? [06:49:50] i think i got it [06:49:51] the buffer provided to the AIO ioctl needs to have a specific alignment [06:49:53] thanks [06:51:08] so even if the user calls spdk_bdev_write([...], void *unaligned_buf, int buf_len, [...]) for AIO bdev, it will work [06:52:10] *** Joins: guerby (~guerby@april/board/guerby) [06:52:29] because with that spdk_bdev_io_get_buf(), AIO will internally allocate a perfectly aligned buffer, copy there all the data from unaligned_buf, and pass it to AIO ioctl [06:53:27] ok, Am I correct thinking that this get buffer stuf could significantly decrease the performance for badly aligned io ? [06:53:43] correct [06:57:25] ok thanks for all the explanations [10:27:16] *** Joins: alekseymmm_ (bcf3adf1@gateway/web/freenode/ip.188.243.173.241) [10:28:48] Hello, I have a question. If I want the address of some bdev_io data what ptr should I use bdev_io->iov.iov_base or bdev_io->u.bdev.iovs.iov_base ? [10:31:38] what is the difference between this to ptrs? [10:31:43] *two [10:38:54] *** Joins: felipef (~felipef@62.254.189.133) [10:39:41] sorry for the typo : I meant "bdev_io->u.bdev.iovs[0].iov_base" [11:18:48] *** Quits: tomzawadzki (uid327004@gateway/web/irccloud.com/x-uplnronicoxtqeuk) (Quit: Connection closed for inactivity) [11:24:48] *** Joins: travis-ci (~travis-ci@ec2-34-227-20-111.compute-1.amazonaws.com) [11:24:49] (spdk/master) add option to set proc type (Jörg Thalheim) [11:24:49] Diff URL: https://github.com/Mic92/spdk/compare/cc818e7c56aa...889d7b41f46b [11:24:49] *** Parts: travis-ci (~travis-ci@ec2-34-227-20-111.compute-1.amazonaws.com) () [11:56:00] *** Quits: felipef (~felipef@62.254.189.133) (Remote host closed the connection) [14:01:27] *** Quits: alekseymmm_ (bcf3adf1@gateway/web/freenode/ip.188.243.173.241) (Quit: Page closed) [14:41:12] *** Joins: jrgruher (c0373628@gateway/web/freenode/ip.192.55.54.40) [14:42:05] anyone familiar with pmem in spdk [14:42:49] specifically the commands all reference "pmem_file Path to pmemblk pool file" what is that? is this a file on an fsdax namespace to use as the actual capacity for the pool? or is this like some kind of config file or metadata file? [14:45:48] it's all based on this library: http://pmem.io/pmdk/libpmemblk/ [14:46:10] I don't have it all in my head at the moment - I think you just give it a file name you want to create though [14:49:23] hmm [14:49:37] on an fsdax namespace? [14:49:44] yeah [14:49:55] k i'll give that a shot, thx [14:54:12] hey it works [14:54:20] i created pmem pools and pmem bdevs anyway [14:56:22] does spdk only do raid0? no raid1 support? [14:56:32] just raid0 atm [14:56:36] (patches welcome) [14:57:16] shoot i forgot about that - so much for experimenting with redundantly RAIDed pmem devices [14:57:18] thanks! [14:58:25] *** Quits: jrgruher (c0373628@gateway/web/freenode/ip.192.55.54.40) (Quit: Page closed) [15:29:57] *** Quits: gila (~gila@5ED4D979.cm-7-5d.dynamic.ziggo.nl) (Quit: My Mac Pro has gone to sleep. ZZZzzz…) [17:08:27] *** Joins: travis-ci (~travis-ci@ec2-54-166-241-255.compute-1.amazonaws.com) [17:08:28] (spdk/master) nvme: Add getting supported flag for controllers (Chunyang Hui) [17:08:28] Diff URL: https://github.com/spdk/spdk/compare/d92a1fb4ac1f...51ab378862af [17:08:28] *** Parts: travis-ci (~travis-ci@ec2-54-166-241-255.compute-1.amazonaws.com) () [20:04:11] *** Joins: travis-ci (~travis-ci@ec2-3-85-15-245.compute-1.amazonaws.com) [20:04:12] (spdk/master) nvme/tcp: optimize nvme_tcp_build_iovecs function. (Ziye Yang) [20:04:12] Diff URL: https://github.com/spdk/spdk/compare/51ab378862af...791d89bfa74a [20:04:12] *** Parts: travis-ci (~travis-ci@ec2-3-85-15-245.compute-1.amazonaws.com) () [21:26:32] *** Quits: darsto (~darsto@89-78-174-111.dynamic.chello.pl) (*.net *.split) [21:53:36] *** Joins: darsto (~darsto@89-78-174-111.dynamic.chello.pl) [22:03:39] *** Joins: felipef (~felipef@cpc92310-cmbg19-2-0-cust421.5-4.cable.virginm.net) [22:07:47] *** Quits: felipef (~felipef@cpc92310-cmbg19-2-0-cust421.5-4.cable.virginm.net) (Ping timeout: 240 seconds) [23:51:51] *** Joins: travis-ci (~travis-ci@ec2-3-81-72-64.compute-1.amazonaws.com) [23:51:52] (spdk/master) nvmf: release the reservation when unregistering one registrant (Changpeng Liu) [23:51:52] Diff URL: https://github.com/spdk/spdk/compare/791d89bfa74a...8ccf24ed52de [23:51:52] *** Parts: travis-ci (~travis-ci@ec2-3-81-72-64.compute-1.amazonaws.com) ()