Whamcloud - gitweb
LU-1194 llog: fix for not sync llcd at thread stop
[fs/lustre-release.git] / lustre / include / obd.h
index 7c20ac2..5fa66e2 100644 (file)
@@ -453,10 +453,22 @@ struct client_obd {
         long                     cl_dirty_transit; /* dirty synchronous */
         long                     cl_avail_grant;   /* bytes of credit for ost */
         long                     cl_lost_grant;    /* lost credits (trunc) */
-        cfs_list_t               cl_cache_waiters; /* waiting for cache/grant */
-        cfs_time_t               cl_next_shrink_grant;   /* jiffies */
-        cfs_list_t               cl_grant_shrink_list;  /* Timeout event list */
-        int                      cl_grant_shrink_interval; /* seconds */
+
+       /* since we allocate grant by blocks, we don't know how many grant will
+        * be used to add a page into cache. As a solution, we reserve maximum
+        * grant before trying to dirty a page and unreserve the rest.
+        * See osc_{reserve|unreserve}_grant for details. */
+       long                 cl_reserved_grant;
+       cfs_list_t           cl_cache_waiters; /* waiting for cache/grant */
+       cfs_time_t           cl_next_shrink_grant;   /* jiffies */
+       cfs_list_t           cl_grant_shrink_list;  /* Timeout event list */
+       int                  cl_grant_shrink_interval; /* seconds */
+
+       /* A chunk is an optimal size used by osc_extent to determine
+        * the extent size. A chunk is max(CFS_PAGE_SIZE, OST block size) */
+       int                  cl_chunkbits;
+       int                  cl_chunk;
+       int                  cl_extent_tax; /* extent overhead, by bytes */
 
         /* keep track of objects that have lois that contain pages which
          * have been queued for async brw.  this lock also protects the
@@ -478,7 +490,7 @@ struct client_obd {
         *
         * NB by Jinshan: though field names are still _loi_, but actually
         * osc_object{}s are in the list.
-         */
+        */
         client_obd_lock_t        cl_loi_list_lock;
         cfs_list_t               cl_loi_ready_list;
         cfs_list_t               cl_loi_hp_ready_list;
@@ -487,9 +499,9 @@ struct client_obd {
         int                      cl_r_in_flight;
         int                      cl_w_in_flight;
         /* just a sum of the loi/lop pending numbers to be exported by /proc */
-        int                      cl_pending_w_pages;
-        int                      cl_pending_r_pages;
-        int                      cl_max_pages_per_rpc;
+       cfs_atomic_t             cl_pending_w_pages;
+       cfs_atomic_t             cl_pending_r_pages;
+       int                      cl_max_pages_per_rpc;
         int                      cl_max_rpcs_in_flight;
         struct obd_histogram     cl_read_rpc_hist;
         struct obd_histogram     cl_write_rpc_hist;
@@ -822,6 +834,7 @@ struct niobuf_local {
 #define LUSTRE_CMM_NAME         "cmm"
 #define LUSTRE_MDD_NAME         "mdd"
 #define LUSTRE_OSD_NAME         "osd-ldiskfs"
+#define LUSTRE_OSD_ZFS_NAME     "osd-zfs"
 #define LUSTRE_VVP_NAME         "vvp"
 #define LUSTRE_LMV_NAME         "lmv"
 #define LUSTRE_CMM_MDC_NAME     "cmm-mdc"
@@ -864,6 +877,8 @@ struct obd_trans_info {
         struct llog_cookie       oti_onecookie;
         struct llog_cookie      *oti_logcookies;
         int                      oti_numcookies;
+       /** synchronous write is needed */
+       long                     oti_sync_write:1;
 
         /* initial thread handling transaction */
         struct ptlrpc_thread *   oti_thread;
@@ -1169,6 +1184,7 @@ struct obd_device {
 };
 
 #define OBD_LLOG_FL_SENDNOW     0x0001
+#define OBD_LLOG_FL_EXIT       0x0002
 
 enum obd_cleanup_stage {
 /* Special case hack for MDS LOVs */