Github user animeshtrivedi commented on a diff in the pull request:

    https://github.com/apache/incubator-crail/pull/16#discussion_r180316603
  
    --- Diff: 
storage-nvmf/src/main/java/org/apache/crail/storage/nvmf/client/NvmfStorageEndpoint.java
 ---
    @@ -19,208 +19,229 @@
     
     package org.apache.crail.storage.nvmf.client;
     
    -import com.ibm.disni.nvmef.NvmeCommand;
    -import com.ibm.disni.nvmef.NvmeEndpoint;
    -import com.ibm.disni.nvmef.NvmeEndpointGroup;
    -import com.ibm.disni.nvmef.spdk.IOCompletion;
    -
    +import com.ibm.jnvmf.*;
     import org.apache.crail.CrailBuffer;
    +import org.apache.crail.CrailBufferCache;
    +import org.apache.crail.CrailStatistics;
     import org.apache.crail.conf.CrailConstants;
    -import org.apache.crail.memory.BufferCache;
     import org.apache.crail.metadata.BlockInfo;
    +import org.apache.crail.metadata.DataNodeInfo;
     import org.apache.crail.storage.StorageEndpoint;
     import org.apache.crail.storage.StorageFuture;
    -import org.apache.crail.storage.nvmf.NvmfBufferCache;
     import org.apache.crail.storage.nvmf.NvmfStorageConstants;
     import org.apache.crail.utils.CrailUtils;
     import org.slf4j.Logger;
     
     import java.io.IOException;
    +import java.net.InetAddress;
     import java.net.InetSocketAddress;
    -import java.net.URI;
    -import java.net.URISyntaxException;
    -import java.util.concurrent.*;
    +import java.util.List;
    +import java.util.Queue;
    +import java.util.concurrent.ArrayBlockingQueue;
    +import java.util.concurrent.TimeoutException;
    +import java.util.concurrent.atomic.AtomicInteger;
     
     public class NvmfStorageEndpoint implements StorageEndpoint {
        private static final Logger LOG = CrailUtils.getLogger();
     
    -   private final InetSocketAddress inetSocketAddress;
    -   private final NvmeEndpoint endpoint;
    -   private final int sectorSize;
    -   private final BufferCache cache;
    -   private final BlockingQueue<NvmeCommand> freeCommands;
    -   private final NvmeCommand[] commands;
    -   private final NvmfStorageFuture[] futures;
    -   private final ThreadLocal<long[]> completed;
    -   private final int ioQeueueSize;
    -
    -   public NvmfStorageEndpoint(NvmeEndpointGroup group, InetSocketAddress 
inetSocketAddress) throws IOException {
    -           this.inetSocketAddress = inetSocketAddress;
    -           endpoint = group.createEndpoint();
    +   private final Controller controller;
    +   private final IoQueuePair queuePair;
    +   private final int lbaDataSize;
    +   private final long namespaceCapacity;
    +   private final NvmfRegisteredBufferCache registeredBufferCache;
    +   private final NvmfStagingBufferCache stagingBufferCache;
    +   private final CrailStatistics statistics;
    +
    +   private final Queue<NvmWriteCommand> writeCommands;
    +   private final Queue<NvmReadCommand> readCommands;
    +
    +   private final AtomicInteger outstandingOperations;
    +
    +   public NvmfStorageEndpoint(Nvme nvme, DataNodeInfo info, 
CrailStatistics statistics,
    +                                                      CrailBufferCache 
bufferCache) throws IOException {
    +           InetSocketAddress inetSocketAddress = new InetSocketAddress(
    +                           InetAddress.getByAddress(info.getIpAddress()), 
info.getPort());
    +           // XXX FIXME: nsid from datanodeinfo
    +           NvmfTransportId transportId = new 
NvmfTransportId(inetSocketAddress,
    +                           new 
NvmeQualifiedName(NvmfStorageConstants.NQN.toString() + info.getPort()));
    +           LOG.info("Connecting to NVMf target at " + 
transportId.toString());
    +           controller = nvme.connect(transportId);
    +           controller.getControllerConfiguration().setEnable(true);
    +           controller.syncConfiguration();
                try {
    -                   URI url = new URI("nvmef://" + 
inetSocketAddress.getHostString() + ":" + inetSocketAddress.getPort() +
    -                                   "/0/" + NvmfStorageConstants.NAMESPACE 
+ "?subsystem=nqn.2016-06.io.spdk:cnode1");
    -                   LOG.info("Connecting to " + url.toString());
    -                   endpoint.connect(url);
    -           } catch (URISyntaxException e) {
    -                   //FIXME
    -                   e.printStackTrace();
    +                   controller.waitUntilReady();
    +           } catch (TimeoutException e) {
    +                   throw new IOException(e);
                }
    -           sectorSize = endpoint.getSectorSize();
    -           cache = new NvmfBufferCache();
    -           ioQeueueSize = endpoint.getIOQueueSize();
    -           freeCommands = new 
ArrayBlockingQueue<NvmeCommand>(ioQeueueSize);
    -           commands = new NvmeCommand[ioQeueueSize];
    -           for (int i = 0; i < ioQeueueSize; i++) {
    -                   NvmeCommand command = endpoint.newCommand();
    -                   command.setId(i);
    -                   commands[i] = command;
    -                   freeCommands.add(command);
    +           IdentifyControllerData identifyControllerData = 
controller.getIdentifyControllerData();
    +           if (CrailConstants.SLICE_SIZE > 
identifyControllerData.getMaximumDataTransferSize().toInt()) {
    +                   throw new 
IllegalArgumentException(CrailConstants.SLICE_SIZE_KEY + " > max transfer size 
(" +
    --- End diff --
    
    :+1: 


---

Reply via email to