For more information, please refer to bugzilla 13904.
Severity : normal
+Bugzilla : 14835
+Frequency : after recovery
+Description: precreate to many object's after del orphan.
+Details : del orphan st in oscc last_id == next_id and this triger growing
+ count of precreated objects. Set flag LOW to skip increase count
+ of precreated objects.
+
+Severity : normal
Bugzilla : 15139
Frequency : rare, on clear nid stats
Description: ASSERTION(client_stat->nid_exp_ref_count == 0)
LASSERT_SPIN_LOCKED(&oscc->oscc_lock);
+ if (oscc->oscc_flags & OSCC_FLAG_CREATING ||
+ oscc->oscc_flags & OSCC_FLAG_RECOVERING) {
+ spin_unlock(&oscc->oscc_lock);
+ RETURN(0);
+ }
+
if (oscc->oscc_grow_count < OST_MAX_PRECREATE &&
- !(oscc->oscc_flags & (OSCC_FLAG_LOW | OSCC_FLAG_RECOVERING)) &&
+ ((oscc->oscc_flags & OSCC_FLAG_LOW) == 0) &&
(__s64)(oscc->oscc_last_id - oscc->oscc_next_id) <=
(oscc->oscc_grow_count / 4 + 1)) {
oscc->oscc_flags |= OSCC_FLAG_LOW;
if (oscc->oscc_grow_count > OST_MAX_PRECREATE / 2)
oscc->oscc_grow_count = OST_MAX_PRECREATE / 2;
- if (oscc->oscc_flags & OSCC_FLAG_CREATING ||
- oscc->oscc_flags & OSCC_FLAG_RECOVERING) {
- spin_unlock(&oscc->oscc_lock);
- RETURN(0);
- }
oscc->oscc_flags |= OSCC_FLAG_CREATING;
spin_unlock(&oscc->oscc_lock);
RETURN(0);
}
oscc->oscc_flags |= OSCC_FLAG_SYNC_IN_PROGRESS;
+ /* seting flag LOW we prevent extra grow precreate size
+ * and enforce use last assigned size */
+ oscc->oscc_flags |= OSCC_FLAG_LOW;
spin_unlock(&oscc->oscc_lock);
CDEBUG(D_HA, "%s: oscc recovery started - delete to "LPU64"\n",
oscc->oscc_obd->obd_name, oscc->oscc_next_id - 1);