Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-6324

CLASSERT(sizeof(struct osd_thread_info) <= PAGE_SIZE) fails for some configs

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • Lustre 2.8.0
    • Lustre 2.8.0
    • None
    • 3
    • 17696

    Description

      I am unable to build v2_7_50_0-10-g56875fd (LU-3680 osd: reduce osd_thread_info in ldiskfs osd, http://review.whamcloud.com/9726) due to the added CLASSERT() in osd_mod_init() and the that fact that I enable several CONFIG_DEBUG_*.

      struct osd_thread_info {
              const struct lu_env  *     oti_env;              /*     0     8 */
              struct dentry              oti_obj_dentry;       /*     8   256 */
              /* --- cacheline 4 boundary (256 bytes) was 8 bytes ago --- */
              struct dentry              oti_child_dentry;     /*   264   256 */
              /* --- cacheline 8 boundary (512 bytes) was 8 bytes ago --- */
              struct dentry              oti_it_dentry;        /*   520   256 */
              /* --- cacheline 12 boundary (768 bytes) was 8 bytes ago --- */
              union {
                      struct file        oti_file;             /*         304 */
                      struct kstatfs     oti_ksfs;             /*         120 */
              };                                               /*   776   304 */
              /* --- cacheline 16 boundary (1024 bytes) was 56 bytes ago --- */
              struct htree_lock *        oti_hlock;            /*  1080     8 */
              /* --- cacheline 17 boundary (1088 bytes) --- */
              struct lu_fid              oti_fid;              /*  1088    16 */
              struct lu_fid              oti_fid2;             /*  1104    16 */
              struct lu_fid              oti_fid3;             /*  1120    16 */
              struct osd_inode_id        oti_id;               /*  1136     8 */
              struct osd_inode_id        oti_id2;              /*  1144     8 */
              /* --- cacheline 18 boundary (1152 bytes) --- */
              struct osd_inode_id        oti_id3;              /*  1152     8 */
              struct ost_id              oti_ostid;            /*  1160    16 */
              struct timespec            oti_time;             /*  1176    16 */
              struct lustre_capa_key     oti_capa_key;         /*  1192    72 */
              /* --- cacheline 19 boundary (1216 bytes) was 48 bytes ago --- */
              struct lustre_capa         oti_capa;             /*  1264   120 */
              /* --- cacheline 21 boundary (1344 bytes) was 40 bytes ago --- */
              struct osd_device *        oti_dev;              /*  1384     8 */
              void *                     oti_it_ea_buf;        /*  1392     8 */
              unsigned int               oti_it_ea_buf_used:1; /*  1400:31  4 */
      
              /* XXX 31 bits hole, try to pack */
              /* XXX 4 bytes hole, try to pack */
      
              /* --- cacheline 22 boundary (1408 bytes) --- */
              struct iam_iterator        oti_idx_it;           /*  1408   312 */
              /* --- cacheline 26 boundary (1664 bytes) was 56 bytes ago --- */
              union {
                      char               oti_name[48];         /*          48 */
                      char               oti_it_ipd[816];      /*         816 */
                      long long int      oti_alignment_lieutenant; /*           8 */
              };                                               /*  1720   816 */
              /* --- cacheline 39 boundary (2496 bytes) was 40 bytes ago --- */
              union {
                      char               oti_idx_ipd[816];     /*         816 */
                      long long int      oti_alignment_lieutenant_colonel; /*           8 */
              };                                               /*  2536   816 */
              /* --- cacheline 52 boundary (3328 bytes) was 24 bytes ago --- */
              struct osd_idmap_cache     oti_cache;            /*  3352    32 */
              int                        oti_r_locks;          /*  3384     4 */
              int                        oti_w_locks;          /*  3388     4 */
              /* --- cacheline 53 boundary (3392 bytes) --- */
              int                        oti_txns;             /*  3392     4 */
      
              /* XXX 4 bytes hole, try to pack */
      
              struct lu_buf              oti_buf;              /*  3400    16 */
              struct lu_buf              oti_big_buf;          /*  3416    16 */
              union {
                      struct lustre_mdt_attrs oti_mdt_attrs;   /*          24 */
                      char               oti_mdt_attrs_old[64]; /*          64 */
                      struct filter_fid_old oti_ff;            /*          32 */
                      struct filter_fid  oti_ff_new;           /*          16 */
              };                                               /*  3432    64 */
              /* --- cacheline 54 boundary (3456 bytes) was 40 bytes ago --- */
              struct osd_iobuf           oti_iobuf;            /*  3496   184 */
      
              /* XXX last struct has 4 bytes of padding */
      
              /* --- cacheline 57 boundary (3648 bytes) was 32 bytes ago --- */
              struct inode *             oti_inode;            /*  3680     8 */
              char                       oti_ldp[32];          /*  3688    32 */
              /* --- cacheline 58 boundary (3712 bytes) was 8 bytes ago --- */
              char                       oti_ldp2[32];         /*  3720    32 */
              union {
                      struct if_dqblk    oti_dqblk;            /*          72 */
                      struct if_dqinfo   oti_dqinfo;           /*          24 */
              };                                               /*  3752    72 */
              /* --- cacheline 59 boundary (3776 bytes) was 48 bytes ago --- */
              struct lquota_id_info      oti_qi;               /*  3824    48 */
      
              /* XXX last struct has 7 bytes of padding */
      
              /* --- cacheline 60 boundary (3840 bytes) was 32 bytes ago --- */
              struct lquota_trans        oti_quota_trans;      /*  3872   200 */
              /* --- cacheline 63 boundary (4032 bytes) was 40 bytes ago --- */
              union lquota_rec           oti_quota_rec;        /*  4072    32 */
              /* --- cacheline 64 boundary (4096 bytes) was 8 bytes ago --- */
              __u64                      oti_quota_id;         /*  4104     8 */
              struct lu_seq_range        oti_seq_range;        /*  4112    24 */
              short unsigned int         oti_declare_ops[11];  /*  4136    22 */
              short unsigned int         oti_declare_ops_rb[11]; /*  4158    22 */
              /* --- cacheline 65 boundary (4160 bytes) was 20 bytes ago --- */
              short unsigned int         oti_declare_ops_cred[11]; /*  4180    22 */
              bool                       oti_rollback;         /*  4202     1 */
      
              /* size: 4208, cachelines: 66, members: 43 */
              /* sum members: 4195, holes: 2, sum holes: 8 */
              /* bit holes: 1, sum bit holes: 31 bits */
              /* padding: 5 */
              /* paddings: 2, sum paddings: 11 */
              /* last cacheline: 48 bytes */
      };
      

      My config is attached.

      Attachments

        Issue Links

          Activity

            People

              bzzz Alex Zhuravlev
              jhammond John Hammond
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: