- struct obd_statfs *msfs = &d->opd_statfs;
- int old = d->opd_pre_status;
- __u64 available;
-
- d->opd_pre_status = rc;
- if (rc)
- goto out;
-
- if (likely(msfs->os_type)) {
- if (unlikely(d->opd_reserved_mb_high == 0 &&
- d->opd_reserved_mb_low == 0)) {
- /* Use ~0.1% by default to disable object allocation,
- * and ~0.2% to enable, size in MB, set both watermark
- */
- spin_lock(&d->opd_pre_lock);
- if (d->opd_reserved_mb_high == 0 &&
- d->opd_reserved_mb_low == 0) {
- d->opd_reserved_mb_low =
- ((msfs->os_bsize >> 10) *
- msfs->os_blocks) >> 20;
- if (d->opd_reserved_mb_low == 0)
- d->opd_reserved_mb_low = 1;
- d->opd_reserved_mb_high =
- (d->opd_reserved_mb_low << 1) + 1;
- }
- spin_unlock(&d->opd_pre_lock);
- }
- /* in MB */
- available = (msfs->os_bavail * (msfs->os_bsize >> 10)) >> 10;
- if (msfs->os_ffree < 32)
- msfs->os_state |= OS_STATE_ENOINO;
- else if (msfs->os_ffree > 64)
- msfs->os_state &= ~OS_STATE_ENOINO;
-
- CDEBUG(D_INFO, "%s: status: %llu blocks, %llu "
- "free, %llu avail, %llu MB avail, %u "
- "hwm -> %d: rc = %d\n",
- d->opd_obd->obd_name, msfs->os_blocks,
- msfs->os_bfree, msfs->os_bavail,
- available, d->opd_reserved_mb_high,
- d->opd_pre_status, rc);
- if (available < d->opd_reserved_mb_low)
- msfs->os_state |= OS_STATE_ENOSPC;
- else if (available > d->opd_reserved_mb_high)
- msfs->os_state &= ~OS_STATE_ENOSPC;
- if (msfs->os_state & (OS_STATE_ENOINO | OS_STATE_ENOSPC)) {
- d->opd_pre_status = -ENOSPC;
- if (old != -ENOSPC)
- CDEBUG(D_INFO, "%s: status: %llu blocks, %llu "
- "free, %llu avail, %llu MB avail, %u "
- "hwm -> %d: rc = %d\n",
- d->opd_obd->obd_name, msfs->os_blocks,
- msfs->os_bfree, msfs->os_bavail,
- available, d->opd_reserved_mb_high,
- d->opd_pre_status, rc);
- CDEBUG(D_INFO,
- "non-committed changes: %u, in progress: %u\n",
- atomic_read(&d->opd_sync_changes),
- atomic_read(&d->opd_sync_rpcs_in_progress));
- } else if (unlikely(old == -ENOSPC)) {
- d->opd_pre_status = 0;
- spin_lock(&d->opd_pre_lock);
- d->opd_pre_create_slow = 0;
- d->opd_pre_create_count = OST_MIN_PRECREATE;
- spin_unlock(&d->opd_pre_lock);
- wake_up(&d->opd_pre_waitq);
-
- CDEBUG(D_INFO, "%s: space available: %llu blocks, %llu"
- " free, %llu avail, %lluMB avail, %u lwm"
- " -> %d: rc = %d\n", d->opd_obd->obd_name,
- msfs->os_blocks, msfs->os_bfree, msfs->os_bavail,
- available, d->opd_reserved_mb_low,
- d->opd_pre_status, rc);
+ u32 old_state = d->opd_statfs.os_state;
+ u32 reserved_ino_low = 32; /* could be tunable in the future */
+ u32 reserved_ino_high = reserved_ino_low * 2;
+ u64 available_mb;
+
+ /* statfs structure not initialized yet */
+ if (unlikely(!msfs->os_type))
+ return;
+
+ /* if the low and high watermarks have not been initialized yet */
+ if (unlikely(d->opd_reserved_mb_high == 0 &&
+ d->opd_reserved_mb_low == 0)) {
+ /* Use ~0.1% by default to disable object allocation,
+ * and ~0.2% to enable, size in MB, set both watermark
+ */
+ spin_lock(&d->opd_pre_lock);
+ if (d->opd_reserved_mb_high == 0 &&
+ d->opd_reserved_mb_low == 0) {
+ d->opd_reserved_mb_low = ((msfs->os_bsize >> 10) *
+ msfs->os_blocks) >> 20;
+ if (d->opd_reserved_mb_low == 0)
+ d->opd_reserved_mb_low = 1;
+ d->opd_reserved_mb_high =
+ (d->opd_reserved_mb_low << 1) + 1;