Commit Graph

2320 Commits

Author SHA1 Message Date
Daniel Verkamp
c6d32d39af lvol: pass UUID as a string in public API
Modify the vbdev_get_lvol_store_by_uuid() API function to take the UUID
as a string instead of a uuid_t, since this simplifies the calling code.

This also allows us to remove #include <uuid/uuid.h> from the public
API, giving us the freedom to change the underlying UUID implementation
later if necessary without breaking API.

Change-Id: Ib360281f384f95722c5ab64e75dcf3603f826e4c
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389893
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-12-01 16:36:12 -05:00
Daniel Verkamp
f5acc37221 lvol: pass lvol store to vbdev_lvol_create()
All of the call sites already have a lvs pointer; there's no need to
look up the lvs by UUID again.

Change-Id: Icef54d84e7c89f682ea47f10b282839ab4237ce0
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389892
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-12-01 16:36:12 -05:00
Daniel Verkamp
24c8d965b0 rte_virtio: make vhost_msg_strings static
The array of message strings is now only used in vhost_user.c, so it
doesn't need to be exported.

Change-Id: I40163b95a52a1762eb3639db5553814bf1299959
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389652
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-12-01 14:35:30 -05:00
Daniel Verkamp
f3e0bfd7ef bdev: remove get_ctx_size functions that return 0
The bdev module get_ctx_size callback is only necessary if it returns a
non-zero size.

Change-Id: I00ca366b8a1949bdb091c5e8aefb19cb606481d0
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389900
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-12-01 13:25:16 -05:00
Daniel Verkamp
474632ba7b bdev/nvme: simplify spdk_bdev_nvme_get_ctrlr()
Rather than iterating over the g_nvme_bdevs list to determine if a bdev
is an NVMe bdev, we can just compare the module pointer.

Also, the function can take a spdk_bdev pointer directly rather than
casting from a void pointer.

Change-Id: Iccf3c9b3263e9b2d67d07d037dc00d1cbc0f22a1
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389899
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-12-01 13:24:45 -05:00
Cunyin Chang
c9b18a9f3f bdev/nvme: optimization of the process when destruct the nvme bdev.
This patch will make sure the nvme bdev work in correct way when we delete
bdev by using rpc method and then exit the app.

Change-Id: I19172440d46d96c7396282e1bef07d98ab601390
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
Reviewed-on: https://review.gerrithub.io/389930
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
2017-12-01 13:17:09 -05:00
Cunyin Chang
6d65bfcfe2 bdev/nvme: unregister all nvme bdev when the app exit.
replace the bdev_nvme_destruct() with spdk_bdev_unregister(),
clean all the resource in the bdev layer.

Change-Id: Ic4b85dee6225f42babe868796a8c24dec5c22af6
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
Reviewed-on: https://review.gerrithub.io/389855
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
2017-12-01 13:17:09 -05:00
Sebastian Basierski
2b415f2c89 vhost: Reduces size of vhost app coredump file.
Fixes #215

Change-Id: Ib65d9479e87c6007fa903b02a37d82e3d319e290
Signed-off-by: Sebastian Basierski <sebastianx.basierski@intel.com>
Reviewed-on: https://review.gerrithub.io/388615
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
2017-12-01 12:56:04 -05:00
Changpeng Liu
415a1485cf nvmf: align the data buffers for AIO backend
Currently SPDK NVMeoF will allocate data buffer from mempool, however,
some data buffers may not block size aligned, this is okay for NVMe
backend but will fail for AIO backend. 4KiB aligned data buffers
should be okay for most AIO backends.

Change-Id: If7b9c2962d716addbd755e80e59620377f2ba488
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/389245
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-30 00:01:33 -05:00
Cunyin Chang
f386909cd8 rpc/log: provide the rpc interface for set log level.
Change-Id: I86bfeb20bcdb987012466a2b4a7555994a46e65e
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
Reviewed-on: https://review.gerrithub.io/388340
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
2017-11-29 19:57:00 -05:00
Daniel Verkamp
c24340a588 rte_virtio: remove unused static variable 'm'
The 'm' variable was only used in sizeof expressions; m was a struct
vhost_user_msg, and we already have one of those called 'msg' in the
function where it was needed.

A previous commit removed a RTE_USED() marking on m, which introduced a
warning on clang, since it can now see that m is unused.

Fixes: 73bfcede86 ("rte_virtio: remove rte_memzone from vq")

Change-Id: I63eb0d82c7c750b4181b6312bbda82ef3213c205
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389648
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-29 18:21:15 -05:00
Dariusz Stojaczyk
86745294ce virtio: remove virtio_dev_start
Also removed vdev->started field.
Used vdev->status field to determine
if a device has been `started`.
This is simply a cleanup.

Change-Id: Ieb06b03b3bd60bd5906b41c987c418604906c913
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/388296
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
2017-11-29 17:26:59 -05:00
Dariusz Stojaczyk
b948246133 virtio: remove vdev->id
Now that vtpci_internal has been removed,
the vdev->id and g_ctrlr_counter are
obsolete and can be removed as well.

Change-Id: Ia1e83cdc81552173f4b57283f83c5791e2b90daa
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/388301
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-29 17:26:59 -05:00
Dariusz Stojaczyk
a87768a2ea virtio: use spdk_dma_zmalloc to allocate virtqueue
Removed another direct DPDK dependency.

Change-Id: I12d9a49fb16fbefad42c09f46c280f6f7be094d1
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/388300
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-29 17:26:59 -05:00
Dariusz Stojaczyk
73bfcede86 rte_virtio: remove rte_memzone from vq
Use standard spdk_dma_malloc instead.
This removes another direct DPDK
dependency. Yet, for multi-process
support we will more likely use a
memzone for the entire virtio device,
not it's virtqueues.

Change-Id: I57119ad830b573b718605b46cc3099b105651ee9
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385629
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-29 17:26:59 -05:00
Dariusz Stojaczyk
17a1f07e57 rte_virtio: removed direct rte_smb_*mb calls
Replaced them with spdk alternatives.
While here, also clarified the documentation
for virtio_*mb.

Change-Id: Ia604e9abd8eadc18fa3ea1a782e29e7da6b3c162
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385627
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-29 17:26:59 -05:00
Jim Harris
75cb2da951 blob: fail _spdk_blob_parse_page on bad md descriptors
Currently there are a bunch of asserts() on metadata
descriptors - change these to fail the blob parsing
instead.

While here also return -ENOMEM if any of the memory
allocations fail.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ie37b73c57b304d05a45d10a8d33bcc1d47e7a1be

Reviewed-on: https://review.gerrithub.io/388702
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-29 17:25:34 -05:00
Jim Harris
f2223d7d21 blob: add data_ro and md_ro flags to spdk_blob
data_ro means that write, write_zeroes and unmap operations are not
allowed.

md_ro means that resize, set_xattr and remove_xattr are not
allowed.

There is no code yet that can activate this - it is coming in a future
patch.  Two usages are planned though:

1) a user explicitly marks a blob as read-only - this is persisted so that
   future loads of the blob will ensure the blob cannot be modified - neither
   metadata nor data
2) a future feature flag framework (how's that for alliteration) may allow
   a blob to be opened, but not allow metadata modifications, if there are
   feature flags set in the blob's or blobstore's metadata that the
   application does not understand

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I247fd900430c56f7176edfb80dddd5a1a6c8dc87

Reviewed-on: https://review.gerrithub.io/388663
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-29 17:25:34 -05:00
Changpeng Liu
500f531200 vhost: free destroy context structure when stopping device
Change-Id: Ifd0cf56804df016c2d9b80a266f882eb8117083e
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/389220
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-29 13:03:07 -05:00
Tomasz Zawadzki
161a300275 VPP: change sockets from FIONBIO to O_NONBLOCK type
There are two ways to set stockets to nonblocking type:
- ioctl with FIONBIO
- fcntl with O_NONBLOCK
Those two should be equivalent for sockets used in SPDK.

During testing it was shown that VPP interprets only
the second type, so this patch changes all occurences of it.

When here, more descriptive error logs were set in case of
failure.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Ifa5b30e3a4fa04fe23f41fa2ae9dab4b01dd7d3c
Reviewed-on: https://review.gerrithub.io/388816
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-29 11:23:32 -05:00
Dariusz Stojaczyk
3b2ed0e968 rte_virtio: hide some internal functions
Moved some vq-related functions
to virtio.c. It's the only place
they're used in.

This patch also removes the
virtqueue_full() function. It's
not used anywhere.

Note: all the functions content
has been moved 1:1.

Change-Id: Ib854fc0836378e6955c0a7358ecabcf2c3107d06
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385628
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-28 18:17:06 -05:00
Daniel Verkamp
bb2444f474 nvme: add a per-process attached_ctrlrs list
Only multi-process shared controllers should be inserted into the shared
list in g_spdk_nvme_driver.  To accomplish this, create a second
per-process global list of attached controllers (g_nvme_attached_ctrlrs)
and rename the driver struct field to shared_attached_ctrlrs to clarify
its purpose.  Additionally, a new helper function, nvme_ctrlr_shared(),
returns whether a given controller should be on the shared or
per-process list.

Change-Id: I46d4e558ece8b7fc3d28868e32bb56d794f21aab
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389190
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-28 16:21:07 -05:00
Daniel Verkamp
4525fc898f nvme/pcie: use common trid -> ctrlr function
Simplify the PCIe transport by using an existing function to look up a
controller by transport ID.

Change-Id: I261865df1ba23069b052ca64944b7637d70c85ba
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/388701
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-28 16:21:07 -05:00
Daniel Verkamp
1804f3c528 nvme: move init_ctrlrs out of multi-process struct
Each process should manage its own list of controllers that are
initializing; the list doesn't need to be shared between processes.

This is the first step toward preventing non-PCI controllers from being
added into the shared attached_ctrlrs list.

Change-Id: Ia6f85fe89e28a04f0950da5362bb2f49d1b76da9
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/388695
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-28 16:21:07 -05:00
Daniel Verkamp
1c4bdde9a4 rpc: set g_jsonrpc_server to NULL on close
If the user calls spdk_rpc_close() multiple times, there would be a
double free.  This is not normally possible when using the SPDK event
framework RPC subsystem, since it will only call spdk_rpc_close() once,
but it doesn't hurt to make the RPC library public API handle this case.

Fixes GitHub issue #219.

Change-Id: I80cff0ed871dec6b90bd2658e85b0cd0914b6ada
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389394
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-28 16:20:47 -05:00
Ziye Yang
6802fe99f4 bdev: handling duplicated bdev name
Change the return type of spdk_bdev_register related
functions and try to handle the duplicated name
issue.

Change-Id: I23af11583cf2050579d1624508306a35394bffde
Signed-off-by: Ziye Yang <optimistyzy@gmail.com>
Reviewed-on: https://review.gerrithub.io/388178
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-28 16:20:30 -05:00
Ben Walker
44770c2a11 bdev: Remove poller abstraction
Use the new one from io_channel.h.

Change-Id: I7bf6729caf6eeebcb58450a36119601957ad5da4
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/388290
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-28 15:29:35 -05:00
Ben Walker
111eef8f19 channel: Add spdk_for_each_thread
This function will send a message to each allocated
thread asynchronously, then call a callback on
the originating thread.

Change-Id: I3ebe7c6c5b460a944a32487d1091b601a482a256
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/388041
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-28 15:29:35 -05:00
Ben Walker
eaaddf3d48 nvmf: Poll groups now automatically register pollers
This simplifies the public API and requirements for
user applications.

Change-Id: Ibb0d25a7838a0fa683f39e79cb4fef78adf6aee8
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/388040
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
2017-11-28 15:29:35 -05:00
Xiaodong Liu
df14d53dfe nbd: add pthread_detach for created thread
Using pthead_detach to let system take back the resources owned
by SPDK created thread for nbd kernel module.

Change-Id: I39f3c0b60ecf57f3227a7b4733a0f144a6e169c5
Signed-off-by: Xiaodong Liu <xiaodong.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/388722
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: <shuhei.matsumoto.xt@hitachi.com>
2017-11-28 12:43:49 -05:00
Ben Walker
9c35e39c54 event: Move spdk_poller_register to io_channel
Make this generic and not directly dependent on
the event framework. That way our libraries can
register pollers without adding a dependency.

Change-Id: I7ad7a7ddc131596ca1791a7b0f43dabfda050f5f
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/387690
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
2017-11-28 12:30:37 -05:00
Cunyin Chang
07a521db1c nvmf: remove ununsed tail entry.
Change-Id: I4587d7bcea1f5eabfaacb489db24942d7b45a22c
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
Reviewed-on: https://review.gerrithub.io/388716
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ziye Yang <optimistyzy@gmail.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-27 18:44:09 -05:00
Maciej Szwed
9e477c7b2e lvol: check argument for NULL in vbdev_lvol_store_next function
Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: Id0f7751d8889584fff1a947160ee89e2f158af1c

Reviewed-on: https://review.gerrithub.io/388943
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-27 16:26:24 -05:00
Maciej Szwed
0b9cfae48f lvol: do not try to unload lvs until previous one is unloaded
With configuration where there are nested lvol stores we
encounter situation when hotremove and fini functions try
to unload the same lvol store second time (previous unloading
have not finished yet).

Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: Icb5d430d17024fbda0e6113b380d8f346a3e9a84

Reviewed-on: https://review.gerrithub.io/388790
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-27 16:26:24 -05:00
Daniel Verkamp
3b1fb32f9c bdev: make g_fini_thread static
It doesn't need to be accessed outside of bdev.c.

Change-Id: Ib1a1abe88b0993e391e0a39c5483781b2c0ad523
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/388508
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
2017-11-27 13:01:32 -05:00
Dariusz Stojaczyk
7e0951d7f5 bdev_virtio: ensure thread safety for virtio_dev unregister
The io_device_unregister callback might be
deferred and called on a different core, but
the virtio device has to be released from
the same thread that created it. Hence, once
the unregister callback is called, it has
to send yet another msg to the vdev-owning
thread. Since all virtio devices are currently
created on the same thread, no mutexes are
needed. They will need to be introduced once
we publish the API to connect to virtio
controllers.

This patch also defers bdev_virtio module-
-finish until all virtio_devs are destroyed.

Change-Id: Iaafceefa1e862b839b5db8c6c4975bf51441a083
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/388835
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-27 12:18:24 -05:00
Dariusz Stojaczyk
ba9528c97b rte_virtio: bind virtqueues to spdk_threads instead of lcores
This will allow us to send a message
to a virtqueue via spdk_thread_send_msg.

Change-Id: I8502f27e74de107bc5e5ccf2939448896579acc2
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/388834
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-27 11:43:58 -05:00
Dariusz Stojaczyk
5e8ec497d4 bdev_virtio: use a single io_device per virtio_dev
We previously used a separate io_device
for each bdev created from a virtio_dev.
The new approach makes us reuse the same
io_channel for different bdevs on the same
core. It also provides a built-in safety
check for freeing virtio_dev only when
all io_channels on this device have been
closed.

Change-Id: Iaae66964f90aa3cef95ed2e261c6f3dfb2f26caa
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/388505
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-27 11:40:41 -05:00
Maciej Szwed
b9d123b814 blobstore: on init write zeroes to metadata and unmap rest
Currently on blobstore creation we use write zeros everytime.
Some drives does not support write zeros, but support unmap.
We should do write zeroes only on metadata and try to unmap
data clusters

Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: Iae36c1ccacc08340e79ad40c4c9a2c53dda920ba
Reviewed-on: https://review.gerrithub.io/387152
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-22 14:12:29 -05:00
Jim Harris
dd01e9353d nbd: use pthread_create instead of fork
Using pthread_create is much cleaner, and avoids race
conditions related to the forked process sharing memory
with the primary process.  Specifically this fixes
a double spdk_event_call() of the shutdown event - one
from each process.  The primary process may have already
recycled the shutdown event, and when the forked process
calls it again, hilarity ensues.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I3e4b77b8b380a8fa0227b770758099bcee0ef35b

Reviewed-on: https://review.gerrithub.io/388520
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-22 11:44:05 -05:00
Jim Harris
1517ed376d nbd: put all fds in spdk_nbd_disk
dev_fd => fd for /dev/nbdX device node
spdk_sp_fd => fd that SPDK will use to poll for new
		I/O requests from the kernel nbd thread
kernel_sp_fd => fd passed to the kernel to send I/O
		to SPDK

This enables an upcoming patch to switch from using
fork() to pthread_create().

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I0840a35eb1ba12810b7fc12775ee0df9ad3d99f9

Reviewed-on: https://review.gerrithub.io/388519
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2017-11-22 11:44:05 -05:00
Shuhei Matsumoto
4df5329092 iscsi: stop using "OK/NG" for comments in ACL
"OK/NG" may be only used in Japan. It may cause misunderstanding.
Hence remove "OK/NG" or change to "Allowed/Denied".

Access control of iSCSI target follows further refactoring.
Hence to save the amount of change, "OK/NG"s are mainly removed.

Change-Id: I1f2ef9bc2be21caa86a6ae98377b6d6b3f85386a
Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-on: https://review.gerrithub.io/385075
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-22 11:17:13 -05:00
Dariusz Stojaczyk
f7370b65bd rte_virtio: rename virtio_pci_ops to virtio_dev_ops
Removed another vtpci leftover.

Change-Id: I3bcc200a07ff82adf824c4a5579644ec906e86da
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385626
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00
Dariusz Stojaczyk
ec0b92faf2 rte_virtio: removed virtio_dev conversion macros
The vdev->ctx conversion is now
straighforward and doesn't need
any macro.

Change-Id: I88b0cf3fa5e95b93e5f69a0a3ae9508f9fac3683
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385625
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00
Dariusz Stojaczyk
d42de5c864 rte_virtio: renamed virtio_dev.h to virtio.h
This is a single header file that
provides access to all virtio initiator
capabilities. This is a preparation
to exporting rte_virtio as a separate
spdk lib. Also renamed virtio_dev.c.

Change-Id: If45a0cadc61943b6ffd87cf70a59321a83b238a6
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385624
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00
Dariusz Stojaczyk
9daed64edb rte_virtio/user: removed virtio_user_dev.h
It's contents have been moved to
virtio_user/vhost.h and virtio_dev.h.
The virtio_user_dev struct can't be hidden
in virtio_user.c (similarly to the virtio_hw),
due to another abstraction layer in virtio_user
- vhost-user and vhost-kernel. Even though only
vhost-user is implemented now, let's not close
the possibility to implement vhost-kernel in
the future. The vhost-user/vhost-kernel code
should probably be placed in separate files,
with the virtio_user_dev struct in common
vhost.h header.

Change-Id: I36ee96eff30b398dd129953a874513e727619f98
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385622
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00
Dariusz Stojaczyk
136eb1150a rte_virtio: removed virtio_user_dev.c
Moved it's contents to virtio_user.c.
Having this logic separated across
multiple files doesn't make much sense.

Change-Id: Ib2daaa56e1b3d755d9476abca247c7cbcfa7096b
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385621
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00
Dariusz Stojaczyk
ad1c9bd791 rte_virtio/user: use linux virtio includes
Removed internal copy of virtio
structures.

Change-Id: Ie66e6717e3313e089565189e5377491af793640a
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385620
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00
Dariusz Stojaczyk
21f46353a5 rte_virtio: remove vtpci references
Renamed all vtpci functions.
While here, also added some documentation.

Change-Id: Id24aaab8c5b556b969c60ee1c95b9d46936ea13d
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385426
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00
Dariusz Stojaczyk
38a22db999 rte_virtio: remove virtio_pci.h
virtio_hw struct definition is now hidden
in virtio_pci.c. The API to enumerate all
PCI devices is available through virtio_dev.h.

Change-Id: Ib9c968732d9f78204e9664c426ad99542cfe8c93
Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-on: https://review.gerrithub.io/385425
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2017-11-21 17:21:00 -05:00