Whamcloud - gitweb
fix LBUG in ptlrpc_check_set() "bad phase ebc0de00"
authorshadow <shadow>
Mon, 28 Jan 2008 15:34:38 +0000 (15:34 +0000)
committershadow <shadow>
Mon, 28 Jan 2008 15:34:38 +0000 (15:34 +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 d933b24..3422dfb 100644 (file)
@@ -13,6 +13,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 bc17911..cf63180 100644 (file)
@@ -59,8 +59,13 @@ struct find_param {
         int     size_sign;
         unsigned long long size_units;
 
-        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 5c8719d..047c98c 100644 (file)
@@ -104,7 +104,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_in_recovery:1,
                                   exp_disconnected:1,
                                   exp_connecting:1,
index 76197c9..5dee54a 100644 (file)
@@ -90,7 +90,7 @@ struct obd_import {
         spinlock_t                imp_lock;
 
         /* flags */
-        unsigned int              imp_no_timeout:1,       /* timeouts are disabled */
+        unsigned long             imp_no_timeout:1,       /* timeouts are disabled */
                                   imp_invalid:1,          /* evicted */
                                   imp_deactive:1,         /* administratively disabled */
                                   imp_replayable:1,       /* try to recover the import */
index 4f5bc8a..0635010 100644 (file)
@@ -242,12 +242,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;
@@ -297,7 +297,7 @@ struct ptlrpc_request {
         int rq_status;
         spinlock_t rq_lock;
         /* client-side flags */
-        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
@@ -339,7 +339,7 @@ struct ptlrpc_request {
         struct list_head         rq_ctx_chain;   /* link to waited ctx */
         ptlrpc_sec_flavor_t      rq_sec_flavor;  /* client & server */
                                  /* client security flags */
-        unsigned int             rq_ctx_init:1,      /* context initiation */
+        unsigned long            rq_ctx_init:1,      /* context initiation */
                                  rq_ctx_fini:1,      /* context destroy */
                                  rq_bulk_read:1,     /* request bulk read */
                                  rq_bulk_write:1,    /* request bulk write */
@@ -524,10 +524,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 91afc47..b5c14c0 100644 (file)
@@ -69,7 +69,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;
@@ -238,7 +238,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 */
@@ -464,7 +464,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;
@@ -631,7 +631,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 */
@@ -644,7 +644,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 */
 };
@@ -863,21 +863,21 @@ struct obd_device {
         struct lu_device       *obd_lu_dev;
 
         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_req_replaying:1, /* replaying requests */
-                     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_req_replaying:1, /* replaying requests */
+                      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;