Whamcloud - gitweb
fix LBUG in ptlrpc_check_set() "bad phase ebc0de00"
authorshadow <shadow>
Mon, 28 Jan 2008 15:33:30 +0000 (15:33 +0000)
committershadow <shadow>
Mon, 28 Jan 2008 15:33:30 +0000 (15:33 +0000)
b=12228
i=nikita
i=johann

lustre/ChangeLog
lustre/include/lustre/liblustreapi.h
lustre/include/lustre_export.h
lustre/include/lustre_import.h
lustre/include/lustre_net.h
lustre/include/obd.h

index 611ac96..a4b0cdd 100644 (file)
@@ -18,6 +18,12 @@ tbd  Sun Microsystems, Inc.
         removed cwd "./" (refer to Bugzilla 14399).
 
 Severity   : normal
+Bugzilla   : 12228
+Description: LBUG in ptlrpc_check_set() bad phase ebc0de00
+Details    : access to bitfield in structure is always rounded to long 
+             and this produce problem with not atomic change any bit.
+
+Severity   : normal
 Bugzilla   : 13647
 Description: Lustre make rpms failed.
 Details    : Remove ldiskfs spec file to avoids rpmbuild be confused when
index eb45937..4d6c802 100644 (file)
@@ -60,8 +60,13 @@ struct find_param {
         unsigned long long size_units;
         int size_check;
 
-        unsigned zeroend:1, recursive:1, got_uuids:1, obds_printed:1,
-                 exclude_pattern:1, exclude_type:1, have_fileinfo:1;
+        unsigned long   zeroend:1,
+                        recursive:1,
+                        got_uuids:1,
+                        obds_printed:1,
+                        exclude_pattern:1,
+                        exclude_type:1,
+                        have_fileinfo:1;
 
         int     verbose;
         int     quiet;
index dab7bad..233f6e6 100644 (file)
@@ -91,7 +91,7 @@ struct obd_export {
         /* ^ protects exp_outstanding_replies too */
         __u64                     exp_connect_flags;
         int                       exp_flags;
-        unsigned int              exp_failed:1,
+        unsigned long             exp_failed:1,
                                   exp_disconnected:1,
                                   exp_connecting:1,
                                   exp_replay_needed:1,
index 9879f95..fb66323 100644 (file)
@@ -112,7 +112,7 @@ struct obd_import {
         spinlock_t                imp_lock;
 
         /* flags */
-        unsigned int              imp_invalid:1,          /* evicted */
+        unsigned long             imp_invalid:1,          /* evicted */
                                   imp_deactive:1,         /* administratively disabled */
                                   imp_replayable:1,       /* try to recover the import */
                                   imp_dlm_fake:1,         /* don't run recovery (timeout instead) */
index f72921b..67d86bf 100644 (file)
@@ -218,12 +218,12 @@ struct ptlrpc_reply_state {
         struct list_head       rs_debug_list;
 #endif
         /* updates to following flag serialised by srv_request_lock */
-        unsigned int           rs_difficult:1;     /* ACK/commit stuff */
-        unsigned int           rs_scheduled:1;     /* being handled? */
-        unsigned int           rs_scheduled_ever:1;/* any schedule attempts? */
-        unsigned int           rs_handled:1;  /* been handled yet? */
-        unsigned int           rs_on_net:1;   /* reply_out_callback pending? */
-        unsigned int           rs_prealloc:1; /* rs from prealloc list */
+        unsigned long          rs_difficult:1;     /* ACK/commit stuff */
+        unsigned long          rs_scheduled:1;     /* being handled? */
+        unsigned long          rs_scheduled_ever:1;/* any schedule attempts? */
+        unsigned long          rs_handled:1;  /* been handled yet? */
+        unsigned long          rs_on_net:1;   /* reply_out_callback pending? */
+        unsigned long          rs_prealloc:1; /* rs from prealloc list */
 
         int                    rs_size;
         __u64                  rs_transno;
@@ -267,7 +267,7 @@ struct ptlrpc_request {
         int rq_status;
         spinlock_t rq_lock;
         /* client-side flags are serialized by rq_lock */
-        unsigned int rq_intr:1, rq_replied:1, rq_err:1,
+        unsigned long rq_intr:1, rq_replied:1, rq_err:1,
                 rq_timedout:1, rq_resend:1, rq_restart:1,
                 /*
                  * when ->rq_replay is set, request is kept by the client even
@@ -459,10 +459,10 @@ struct ptlrpc_bulk_page {
 #define BULK_PUT_SOURCE   3
 
 struct ptlrpc_bulk_desc {
-        unsigned int bd_success:1;              /* completed successfully */
-        unsigned int bd_network_rw:1;           /* accessible to the network */
-        unsigned int bd_type:2;                 /* {put,get}{source,sink} */
-        unsigned int bd_registered:1;           /* client side */
+        unsigned long bd_success:1;              /* completed successfully */
+        unsigned long bd_network_rw:1;           /* accessible to the network */
+        unsigned long bd_type:2;                 /* {put,get}{source,sink} */
+        unsigned long bd_registered:1;           /* client side */
         spinlock_t   bd_lock;                   /* serialise with callback */
         int bd_import_generation;
         struct obd_export *bd_export;
index a846bdb..cf80b7a 100644 (file)
@@ -66,7 +66,7 @@ struct lov_oinfo {                 /* per-stripe data structure */
         struct list_head loi_write_item;
         struct list_head loi_read_item;
 
-        unsigned loi_kms_valid:1;
+        unsigned long loi_kms_valid:1;
         __u64 loi_kms;             /* known minimum size */
         struct ost_lvb loi_lvb;
         struct osc_async_rc     loi_ar;
@@ -229,7 +229,7 @@ struct oig_callback_context {
          * callees of this method are encouraged to abort their state
          * in the oig.  This may be called multiple times. */
         void (*occ_interrupted)(struct oig_callback_context *occ);
-        unsigned int interrupted:1;
+        unsigned long interrupted:1;
 };
 
 /* Individual type definitions */
@@ -407,7 +407,7 @@ struct client_obd {
         struct obd_export       *cl_mgc_mgsexp;
 
         /* Flags section */
-        unsigned int             cl_checksum:1; /* debug checksums */
+        unsigned long            cl_checksum:1; /* debug checksums */
 
         /* also protected by the poorly named _loi_list_lock lock above */
         struct osc_async_rc      cl_ar;
@@ -557,7 +557,7 @@ struct lov_qos {
         __u32              *lq_rr_array;    /* round-robin optimized list */
         unsigned int        lq_rr_size;     /* rr array size */
         unsigned int        lq_prio_free;   /* priority for free space */
-        unsigned int        lq_dirty:1,     /* recalc qos data */
+        unsigned long       lq_dirty:1,     /* recalc qos data */
                             lq_dirty_rr:1,  /* recalc round-robin list */
                             lq_same_space:1,/* the ost's all have approx.
                                                the same space avail */
@@ -570,7 +570,7 @@ struct lov_tgt_desc {
         struct ltd_qos      ltd_qos;     /* qos info per target */
         __u32               ltd_gen;
         __u32               ltd_index;   /* index in lov_obd->tgts */
-        unsigned int        ltd_active:1,/* is this target up for requests */
+        unsigned long       ltd_active:1,/* is this target up for requests */
                             ltd_activate:1,/* should this target be activated */
                             ltd_reap:1;  /* should this target be deleted */
 };
@@ -756,20 +756,20 @@ struct obd_device {
         struct obd_uuid         obd_uuid;
 
         int                     obd_minor;
-        unsigned int obd_attached:1,      /* finished attach */
-                     obd_set_up:1,        /* finished setup */
-                     obd_recovering:1,    /* there are recoverable clients */
-                     obd_abort_recovery:1,/* somebody ioctl'ed us to abort */ 
-                     obd_replayable:1,    /* recovery is enabled; inform clients */
-                     obd_no_transno:1,    /* no committed-transno notification */
-                     obd_no_recov:1,      /* fail instead of retry messages */
-                     obd_stopping:1,      /* started cleanup */
-                     obd_starting:1,      /* started setup */
-                     obd_force:1,         /* cleanup with > 0 obd refcount */
-                     obd_fail:1,          /* cleanup with failover */
-                     obd_async_recov:1,   /* allow asyncronous orphan cleanup */
-                     obd_no_conn:1,       /* deny new connections */
-                     obd_inactive:1;      /* device active/inactive
+        unsigned long obd_attached:1,      /* finished attach */
+                      obd_set_up:1,        /* finished setup */
+                      obd_recovering:1,    /* there are recoverable clients */
+                      obd_abort_recovery:1,/* somebody ioctl'ed us to abort */ 
+                      obd_replayable:1,    /* recovery is enabled; inform clients */
+                      obd_no_transno:1,    /* no committed-transno notification */
+                      obd_no_recov:1,      /* fail instead of retry messages */
+                      obd_stopping:1,      /* started cleanup */
+                      obd_starting:1,      /* started setup */
+                      obd_force:1,         /* cleanup with > 0 obd refcount */
+                      obd_fail:1,          /* cleanup with failover */
+                      obd_async_recov:1,   /* allow asyncronous orphan cleanup */
+                      obd_no_conn:1,       /* deny new connections */
+                      obd_inactive:1;      /* device active/inactive
                                            * (for /proc/status only!!) */
         /* uuid-export hash body */
         struct lustre_class_hash_body *obd_uuid_hash_body;