[00:29:58] *** Joins: tkulasek (~tkulasek@192.55.54.42) [04:59:12] *** Joins: tomzawadzki (~tomzawadz@134.134.139.76) [05:05:36] *** Joins: johnmeneghini (~johnmeneg@pool-100-0-53-181.bstnma.fios.verizon.net) [05:08:57] *** Quits: johnmeneghini (~johnmeneg@pool-100-0-53-181.bstnma.fios.verizon.net) (Client Quit) [06:06:31] FYI community meeting in just a few hours...https://trello.com/b/DvM7XayJ/spdk-community-meeting-agenda [06:38:03] *** Joins: johnmeneghini (~johnmeneg@216.240.30.5) [06:38:44] Is it possible to add me to trello ? [07:48:25] sure [07:48:38] whats you trello id/handle? [07:49:43] alekseymmm [07:50:20] yes [07:50:46] I mean @alekseymmm [07:56:10] hmm, can't find you for some reason, one sec [07:56:36] OK got ya [07:56:46] Thanks a lot [07:57:05] see if that works, sometimes I think you have to be added to each board depending on where the first was added, let me know if you can't add yourself somewhere [08:04:02] my intel laptop can't handle webex [08:04:10] sorry, i won't be on the community meeting [08:36:36] bwalker: I'm working on building a shared library corresponding to each static one. Do you have any feelings where those shared libraries are placed? The static ones (along with the all-encompassing, libspdk.so) are in build/lib. Can I create a subdir within there, say build/lib/shared for the shared variants, or do you think they should ALL go into build/lib? The latter creates some complications. [09:21:28] *** Quits: tkulasek (~tkulasek@192.55.54.42) (Remote host closed the connection) [09:30:56] *** Quits: tomzawadzki (~tomzawadz@134.134.139.76) (Ping timeout: 256 seconds) [09:31:13] I don't have much of an opinion [09:31:34] build/shared maybe? [09:31:36] or build/lib/shared? [09:32:18] I guess maybe the starting point would be where would these get installed on a Linux system using a standard layout typically [09:33:07] and what's the conflict with putting them in build/lib? [09:33:35] (and should our apps actually go into build/bin while we're thinking about this?) [10:15:42] *** Joins: travis-ci (~travis-ci@ec2-174-129-162-69.compute-1.amazonaws.com) [10:15:43] (spdk/master) bdev/nvme: fix error path on nvme bdev creation (wuzhouhui) [10:15:43] Diff URL: https://github.com/spdk/spdk/compare/66a91a04980d...2b3abb2a339c [10:15:43] *** Parts: travis-ci (~travis-ci@ec2-174-129-162-69.compute-1.amazonaws.com) () [10:41:17] bwalker: Looks like if I try to keep both static and shared libs in the same dir, I'm going to need to sprinkle some additional linker flags around groups of libs, else the final links on executables fail. Adding some -Wl,-Bstatic and -Wl,-Bdynamic seemed to do the trick; well, as far as final linking. I haven't tried building executables with all shared objects and running them yet. [10:42:04] bwalker: I need to run an errand. Be back in a few.... [12:38:43] *** Joins: alekseymmm_ (bcf3adf1@gateway/web/freenode/ip.188.243.173.241) [12:55:00] you guys ready for this yet? https://review.gerrithub.io/c/spdk/spdk/+/420929 [12:55:09] (dpdk submodule to include crypto) [12:56:38] also... slight change in ipsec lib again, yay :) They changed the installation process. What we currently do doesn't work, the make in dpdkbuild/Makefile needs to be followed by 'make isntall [12:57:03] and one more thing in that file can be removed. I'm not sure how to do the make install change though [13:47:35] Hello. Need some help to understand what happens if I do the following. In bdev module init i store to some variable current thread id (spdk_get_thread) . I believe this is some kind of master thread that perform all the management. Then do spdk_send_msg to this thread with function callback __send. In this __send function I register poller and in poller function just do sleep(100). [13:47:48] Does it mean that after this poller starts spdk master thread will stuck for 100 sec and doesn't respond to anything? [13:48:10] it will be stuck every time the poller is called, yes [13:48:21] so if you have the poller period at 0, it gets called as fast as it can [13:48:23] so it is not a good idea then [13:48:30] sleep in spdk is always bad [13:48:55] I mean to register poller that do some really hard work. sleep was just an example [13:49:03] it's effectively a cooperative multi-tasking system, or an event-loop system [13:49:13] you don't want to do anything that takes too long because you're blocking other things [13:50:08] What then the proper way to do some hard work and not to disturb other workers [13:50:14] allocate my own pthread ? [13:50:19] how hard is hard? [13:50:52] I am thinking about device reconstruction in raid [13:51:10] well that isn't computationally hard right? [13:51:12] Like I have to send a lot of reconstruct requset , wait for them to complete and so on [13:51:20] so it is definetly hard [13:51:23] it's I/O intensive [13:51:27] not computationally intensive, right [13:51:32] wight [13:51:34] right [13:51:44] so that's not a problem at all - just don't block waiting for each I/O [13:51:44] but some while () inside [13:51:47] write it asynchronously [13:52:00] i.e. your algorithm would look like: [13:52:11] 1. send first read for data, provide a callback, return [13:52:26] 2. when callback is called, submit second read, return [13:52:26] etc. [13:52:44] makes sense [13:53:05] is it a good idea to use master thread to register this kind of poller ? [13:53:16] I'm not sure you even need a poller [13:53:20] or I still would rather have my own pthread ? [13:53:48] you want to do the reconstruction on one of the spdk threads - I don't know if it really matters which one you pick [13:53:53] the master one is probably a great choice [13:54:12] but when you detect that you need to do a reconstruction [13:54:17] just submit the I/O with a callback [13:54:25] that callback will get called when it is done, at which point you continue [13:54:29] you don't even need to register a poller [13:54:43] the callback will get called automatically when the I/O completes anyway [13:54:44] I see. Have to think about it. Thanks a lot [13:54:59] each bdev module has pollers registered at the lowest level already that are actually checking the hardware for completions [13:55:00] Yep I understand the idea [13:55:50] admittedly, it's hard to program asynchronously in C [13:55:54] it's a major mindset change [13:56:13] it's almost more akin to writing javascript where you just chain together lambdas everywhere, except the syntax is even worse than javascript [13:56:33] It is true about C , but we love it still) [13:56:47] I wrote an article about the challenges of this: http://www.spdk.io/doc/concurrency [13:57:08] I have red this article twice) [13:57:40] ok good :) [13:59:51] thanks for ideas anyway [14:00:11] sure thing [14:15:30] *** Quits: johnmeneghini (~johnmeneg@216.240.30.5) (Quit: Leaving.) [14:27:58] *** Quits: alekseymmm_ (bcf3adf1@gateway/web/freenode/ip.188.243.173.241) (Quit: Page closed) [15:24:14] *** Joins: johnmeneghini (~johnmeneg@pool-100-0-53-181.bstnma.fios.verizon.net) [15:53:39] *** Joins: Shuhei (caf6fc61@gateway/web/freenode/ip.202.246.252.97) [16:28:34] bwalker: ping (re: shared libs, redux) [17:28:21] *** Quits: Shuhei (caf6fc61@gateway/web/freenode/ip.202.246.252.97) (Ping timeout: 252 seconds) [17:45:52] *** Joins: Shuhei (caf6fc61@gateway/web/freenode/ip.202.246.252.97) [19:02:59] *** Quits: Shuhei (caf6fc61@gateway/web/freenode/ip.202.246.252.97) (Ping timeout: 252 seconds) [21:01:39] *** Quits: johnmeneghini (~johnmeneg@pool-100-0-53-181.bstnma.fios.verizon.net) (Quit: Leaving.)