Changeset ac4b70b in mainline


Ignore:
Timestamp:
2025-05-07T10:39:54Z (5 weeks ago)
Author:
Miroslav Cimerman <mc@…>
Children:
fc265b4
Parents:
31eb568
Message:

hr: fail only failable extents

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/hr/hr.c

    r31eb568 rac4b70b  
    365365        }
    366366
     367        fibril_rwlock_read_lock(&vol->extents_lock);
    367368        fibril_rwlock_write_lock(&vol->states_lock);
    368         fibril_rwlock_read_lock(&vol->extents_lock);
    369 
    370         hr_update_ext_status(vol, fail_extent, HR_EXT_FAILED);
    371         hr_mark_vol_state_dirty(vol);
    372 
     369
     370        switch (vol->extents[fail_extent].status) {
     371        case HR_EXT_NONE:
     372        case HR_EXT_MISSING:
     373        case HR_EXT_FAILED:
     374                fibril_rwlock_write_unlock(&vol->states_lock);
     375                fibril_rwlock_read_unlock(&vol->extents_lock);
     376                async_answer_0(icall, EINVAL);
     377                return;
     378        default:
     379                hr_update_ext_status(vol, fail_extent, HR_EXT_FAILED);
     380                hr_mark_vol_state_dirty(vol);
     381        }
     382
     383        fibril_rwlock_write_unlock(&vol->states_lock);
    373384        fibril_rwlock_read_unlock(&vol->extents_lock);
    374         fibril_rwlock_write_unlock(&vol->states_lock);
    375385
    376386        vol->hr_ops.status_event(vol);
Note: See TracChangeset for help on using the changeset viewer.