Diff for /embedaddon/istgt/src/istgt_lu.h between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2012/02/21 16:42:02 version 1.1.1.2, 2012/10/09 09:13:23
Line 1 Line 1
 /*  /*
 * Copyright (C) 2008-2011 Daisuke Aoyama <aoyama@peach.ne.jp>. * Copyright (C) 2008-2012 Daisuke Aoyama <aoyama@peach.ne.jp>.
  * All rights reserved.   * All rights reserved.
  *   *
  * Redistribution and use in source and binary forms, with or without   * Redistribution and use in source and binary forms, with or without
Line 30 Line 30
   
 #include <pthread.h>  #include <pthread.h>
 #include <time.h>  #include <time.h>
   #ifdef HAVE_UUID_H
   #include <uuid.h>
   #endif
 #include "istgt.h"  #include "istgt.h"
   #include "istgt_queue.h"
   
#define MAX_LU_LUN 16#define MAX_LU_LUN 64
 #define MAX_LU_LUN_SLOT 8  #define MAX_LU_LUN_SLOT 8
 #define MAX_LU_TSIH 256  #define MAX_LU_TSIH 256
 #define MAX_LU_MAP 256  #define MAX_LU_MAP 256
Line 88 Line 92
 #define MAX_INQUIRY_SERIAL 16  #define MAX_INQUIRY_SERIAL 16
   
 #define ISTGT_LU_WORK_BLOCK_SIZE (1ULL * 1024ULL * 1024ULL)  #define ISTGT_LU_WORK_BLOCK_SIZE (1ULL * 1024ULL * 1024ULL)
   #define ISTGT_LU_WORK_ATS_BLOCK_SIZE (1ULL * 1024ULL * 1024ULL)
 #define ISTGT_LU_MAX_WRITE_CACHE_SIZE (8ULL * 1024ULL * 1024ULL)  #define ISTGT_LU_MAX_WRITE_CACHE_SIZE (8ULL * 1024ULL * 1024ULL)
 #define ISTGT_LU_MEDIA_SIZE_MIN (1ULL * 1024ULL * 1024ULL)  #define ISTGT_LU_MEDIA_SIZE_MIN (1ULL * 1024ULL * 1024ULL)
 #define ISTGT_LU_MEDIA_EXTEND_UNIT (256ULL * 1024ULL * 1024ULL)  #define ISTGT_LU_MEDIA_EXTEND_UNIT (256ULL * 1024ULL * 1024ULL)
Line 229  typedef struct istgt_lu_t { Line 234  typedef struct istgt_lu_t {
         int readonly;          int readonly;
         int blocklen;          int blocklen;
         int queue_depth;          int queue_depth;
           int queue_check;
   
         int maxlun;          int maxlun;
         ISTGT_LU_LUN lun[MAX_LU_LUN];          ISTGT_LU_LUN lun[MAX_LU_LUN];
Line 255  typedef struct istgt_lu_cmd_t { Line 261  typedef struct istgt_lu_cmd_t {
         uint8_t *cdb;          uint8_t *cdb;
   
         uint8_t *iobuf;          uint8_t *iobuf;
        int iobufsize;        size_t iobufsize;
         uint8_t *data;          uint8_t *data;
        int data_len;        size_t data_len;
        int alloc_len;        size_t alloc_len;
   
         int status;          int status;
         uint8_t *sense_data;          uint8_t *sense_data;
        int sense_data_len;        size_t sense_data_len;
        int sense_alloc_len;        size_t sense_alloc_len;
 } ISTGT_LU_CMD;  } ISTGT_LU_CMD;
 typedef ISTGT_LU_CMD *ISTGT_LU_CMD_Ptr;  typedef ISTGT_LU_CMD *ISTGT_LU_CMD_Ptr;
   
Line 276  enum { Line 282  enum {
 enum {  enum {
         ISTGT_LU_TASK_RESPONSE = 0,          ISTGT_LU_TASK_RESPONSE = 0,
         ISTGT_LU_TASK_REQPDU = 1,          ISTGT_LU_TASK_REQPDU = 1,
           ISTGT_LU_TASK_REQUPDPDU = 2,
 } ISTGT_LU_TASK_TYPE;  } ISTGT_LU_TASK_TYPE;
   
 typedef struct istgt_lu_task_t {  typedef struct istgt_lu_task_t {
Line 299  typedef struct istgt_lu_task_t { Line 306  typedef struct istgt_lu_task_t {
         uint8_t *iobuf;          uint8_t *iobuf;
         uint8_t *data;          uint8_t *data;
         uint8_t *sense_data;          uint8_t *sense_data;
           size_t alloc_len;
   
         int offset;          int offset;
         int req_execute;          int req_execute;
Line 310  typedef struct istgt_lu_task_t { Line 318  typedef struct istgt_lu_task_t {
         int lock;          int lock;
 } ISTGT_LU_TASK;  } ISTGT_LU_TASK;
 typedef ISTGT_LU_TASK *ISTGT_LU_TASK_Ptr;  typedef ISTGT_LU_TASK *ISTGT_LU_TASK_Ptr;
   
   /* lu_disk.c */
   typedef struct istgt_lu_pr_key_t {
           uint64_t key;
   
           /* transport IDs */
           char *registered_initiator_port;
           char *registered_target_port;
           /* PERSISTENT RESERVE OUT received from */
           int pg_idx; /* relative target port */
           int pg_tag; /* target port group */
   
           int ninitiator_ports;
           char **initiator_ports;
           int all_tpg;
   } ISTGT_LU_PR_KEY;
   
   typedef struct istgt_lu_disk_t {
           ISTGT_LU_Ptr lu;
           int num;
           int lun;
   
           int fd;
           const char *file;
           const char *disktype;
           void *exspec;
           uint64_t fsize;
           uint64_t foffset;
           uint64_t size;
           uint64_t blocklen;
           uint64_t blockcnt;
   
   #ifdef HAVE_UUID_H
           uuid_t uuid;
   #endif /* HAVE_UUID_H */
   
           /* cache flags */
           int read_cache;
           int write_cache;
           /* parts for cache */
           int wbufsize;
           uint8_t *wbuf;
           uint64_t woffset;
           uint64_t wnbytes;
           int req_write_cache;
           int err_write_cache;
   
           /* thin provisioning */
           int thin_provisioning;
   
           /* for ats */
           pthread_mutex_t ats_mutex;
           int watssize;
           uint8_t *watsbuf;
   
           int queue_depth;
           pthread_mutex_t cmd_queue_mutex;
           ISTGT_QUEUE cmd_queue;
           pthread_mutex_t wait_lu_task_mutex;
           ISTGT_LU_TASK_Ptr wait_lu_task;
   
           /* PERSISTENT RESERVE */
           int npr_keys;
           ISTGT_LU_PR_KEY pr_keys[MAX_LU_RESERVE];
           uint32_t pr_generation;
   
           char *rsv_port;
           uint64_t rsv_key;
           int rsv_scope;
           int rsv_type;
   
           /* SCSI sense code */
           volatile int sense;
   
           /* entry */
           int (*open)(struct istgt_lu_disk_t *spec, int flags, int mode);
           int (*close)(struct istgt_lu_disk_t *spec);
           int64_t (*seek)(struct istgt_lu_disk_t *spec, uint64_t offset);
           int64_t (*read)(struct istgt_lu_disk_t *spec, void *buf, uint64_t nbytes);
           int64_t (*write)(struct istgt_lu_disk_t *spec, const void *buf, uint64_t nbytes);
           int64_t (*sync)(struct istgt_lu_disk_t *spec, uint64_t offset, uint64_t nbytes);
           int (*allocate)(struct istgt_lu_disk_t *spec);
           int (*setcache)(struct istgt_lu_disk_t *spec);
   } ISTGT_LU_DISK;
   
 #endif /* ISTGT_LU_H */  #endif /* ISTGT_LU_H */

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>