libiscsi | iscsi client library and utilities
kandi X-RAY | libiscsi Summary
kandi X-RAY | libiscsi Summary
Libiscsi is a client-side library to implement the iSCSI protocol that can be used to access the resources of an iSCSI target. The library is fully asynchronous with regards to iSCSI commands and SCSI tasks, but a synchronous layer is also provided for ease of use for simpler applications. The src directory contains a handful of useful iSCSI utilities such as logging in to and enumerating all targets on a portal and all devices of a target. The examples directory contains example implementation of how to access both the synchronous and asynchronous APIs of libiscsi. Libiscsi is a work in progress. It aims to become a fully asynchronous library for iSCSI functionality, including all features required to establish and maintain an iSCSI session, as well as a low-level SCSI library to create SCSI CDBs and parse/unmarshall data-in structures.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of libiscsi
libiscsi Key Features
libiscsi Examples and Code Snippets
Community Discussions
Trending Discussions on libiscsi
QUESTION
Yes, I will ultimately be using this for DMA but lets leave coherency aside for the moment. I have 64 bit BAR registers, therefore, AFAIK, all of RAM (e.g. higher than 4G) is available for DMA.
I am looking for about 64MB of contiguous RAM. Yes, that's a lot.
Ubuntu 16 and 18 have CONFIG_CMA=y but CONFIG_DMA_CMA is not set at kernel compile time.
I note that if both were set (at Kernel build time) I could simply call dma_alloc_coherent, however, for logistical reasons, it is undesirable to recompile the kernel.
The machines will always have at least 32GB of RAM, do not run anything RAM intensive, and the kernel module will load shortly after boot before RAM becomes significantly fragmented and, AFAIK, nothing else is using the CMA.
I have set the kernel parameter CMA=1G. (and have tried 256M and 512M)
...ANSWER
Answered 2020-Feb-20 at 15:49The short version is that __GFP_DIRECT_RECLAIM
(also provided by __GFP_RECLAIM
) is necessary as dma_alloc_contiguous
is eventually called and it checks, via a call to gfpflags_allow_blocking
, that blocking is okay. I used the usual GFP_KERNEL
which provides __GFP_RECLAIM | __GFP_IO | __GFP_FS
. But before all that one must call dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64))
with DMA_BIT_MASK(64)
not DMA_BIT_MASK(32)
.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install libiscsi
To build RPMs run the following script from the libiscsi root directory ./packaging/RPM/makerpms.sh.
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page