Changeset abc2c4b in mainline


Ignore:
Timestamp:
2024-10-11T17:57:17Z (7 months ago)
Author:
Miroslav Cimerman <mc@…>
Children:
c7b4452
Parents:
68c966e
Message:

hr: remove big lock, add lock for individual volumes

Location:
uspace/srv/bd/hr
Files:
6 edited

Legend:

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

    r68c966e rabc2c4b  
    5454
    5555loc_srv_t *hr_srv;
    56 fibril_mutex_t big_lock; /* for now */
    5756
    5857static fibril_mutex_t hr_volumes_lock;
     
    206205        }
    207206
     207        fibril_mutex_initialize(&new_volume->lock);
     208
    208209        rc = new_volume->hr_ops.create(new_volume);
    209210        if (rc != EOK)
     
    389390        }
    390391
    391         fibril_mutex_initialize(&big_lock);
    392 
    393392        fibril_mutex_initialize(&hr_volumes_lock);
    394393        list_initialize(&hr_volumes);
  • uspace/srv/bd/hr/raid0.c

    r68c966e rabc2c4b  
    5252#include "var.h"
    5353
    54 extern fibril_mutex_t big_lock;
    5554extern loc_srv_t *hr_srv;
    5655
     
    112111                return rc;
    113112
    114         fibril_mutex_lock(&big_lock);
     113        fibril_mutex_lock(&vol->lock);
    115114
    116115        left = cnt;
     
    125124        }
    126125
    127         fibril_mutex_unlock(&big_lock);
     126        fibril_mutex_unlock(&vol->lock);
    128127        return rc;
    129128}
     
    144143                return rc;
    145144
    146         fibril_mutex_lock(&big_lock);
     145        fibril_mutex_lock(&vol->lock);
    147146
    148147        left = cnt;
     
    158157        }
    159158
    160         fibril_mutex_unlock(&big_lock);
     159        fibril_mutex_unlock(&vol->lock);
    161160        return rc;
    162161}
     
    177176                return rc;
    178177
    179         fibril_mutex_lock(&big_lock);
     178        fibril_mutex_lock(&vol->lock);
    180179
    181180        left = cnt;
     
    191190        }
    192191
    193         fibril_mutex_unlock(&big_lock);
     192        fibril_mutex_unlock(&vol->lock);
    194193        return rc;
    195194}
  • uspace/srv/bd/hr/raid1.c

    r68c966e rabc2c4b  
    5151#include "var.h"
    5252
    53 extern fibril_mutex_t big_lock;
    5453extern loc_srv_t *hr_srv;
    5554
     
    9998        hr_add_ba_offset(vol, &ba);
    10099
    101         fibril_mutex_lock(&big_lock);
     100        fibril_mutex_lock(&vol->lock);
    102101
    103102        for (i = 0; i < vol->dev_no; i++) {
     
    107106        }
    108107
    109         fibril_mutex_unlock(&big_lock);
     108        fibril_mutex_unlock(&vol->lock);
    110109        return rc;
    111110}
     
    125124        hr_add_ba_offset(vol, &ba);
    126125
    127         fibril_mutex_lock(&big_lock);
     126        fibril_mutex_lock(&vol->lock);
    128127
    129128        for (i = 0; i < vol->dev_no; i++) {
     
    133132        }
    134133
    135         fibril_mutex_unlock(&big_lock);
     134        fibril_mutex_unlock(&vol->lock);
    136135        return rc;
    137136}
     
    151150        hr_add_ba_offset(vol, &ba);
    152151
    153         fibril_mutex_lock(&big_lock);
     152        fibril_mutex_lock(&vol->lock);
    154153
    155154        for (i = 0; i < vol->dev_no; i++) {
     
    159158        }
    160159
    161         fibril_mutex_unlock(&big_lock);
     160        fibril_mutex_unlock(&vol->lock);
    162161        return rc;
    163162}
  • uspace/srv/bd/hr/raid4.c

    r68c966e rabc2c4b  
    5252#include "var.h"
    5353
    54 extern fibril_mutex_t big_lock;
    5554extern loc_srv_t *hr_srv;
    5655
     
    157156                return rc;
    158157
    159         fibril_mutex_lock(&big_lock);
     158        fibril_mutex_lock(&vol->lock);
    160159
    161160        size_t left = cnt;
     
    170169        }
    171170
    172         fibril_mutex_unlock(&big_lock);
     171        fibril_mutex_unlock(&vol->lock);
    173172        return rc;
    174173}
     
    189188                return rc;
    190189
    191         fibril_mutex_lock(&big_lock);
     190        fibril_mutex_lock(&vol->lock);
    192191
    193192        size_t left = cnt;
     
    203202        }
    204203
    205         fibril_mutex_unlock(&big_lock);
     204        fibril_mutex_unlock(&vol->lock);
    206205        return rc;
    207206}
     
    222221                return rc;
    223222
    224         fibril_mutex_lock(&big_lock);
     223        fibril_mutex_lock(&vol->lock);
    225224
    226225        size_t left = cnt;
     
    239238        }
    240239
    241         fibril_mutex_unlock(&big_lock);
     240        fibril_mutex_unlock(&vol->lock);
    242241        return rc;
    243242}
  • uspace/srv/bd/hr/raid5.c

    r68c966e rabc2c4b  
    5252#include "var.h"
    5353
    54 extern fibril_mutex_t big_lock;
    5554extern loc_srv_t *hr_srv;
    5655
     
    169168                return rc;
    170169
    171         fibril_mutex_lock(&big_lock);
     170        fibril_mutex_lock(&vol->lock);
    172171
    173172        size_t left = cnt;
     
    182181        }
    183182
    184         fibril_mutex_unlock(&big_lock);
     183        fibril_mutex_unlock(&vol->lock);
    185184        return rc;
    186185}
     
    201200                return rc;
    202201
    203         fibril_mutex_lock(&big_lock);
     202        fibril_mutex_lock(&vol->lock);
    204203
    205204        size_t left = cnt;
     
    215214        }
    216215
    217         fibril_mutex_unlock(&big_lock);
     216        fibril_mutex_unlock(&vol->lock);
    218217        return rc;
    219218}
     
    234233                return rc;
    235234
    236         fibril_mutex_lock(&big_lock);
     235        fibril_mutex_lock(&vol->lock);
    237236
    238237        size_t left = cnt;
     
    251250        }
    252251
    253         fibril_mutex_unlock(&big_lock);
     252        fibril_mutex_unlock(&vol->lock);
    254253        return rc;
    255254}
  • uspace/srv/bd/hr/var.h

    r68c966e rabc2c4b  
    5656        bd_srvs_t hr_bds;
    5757        link_t lvolumes;
     58        fibril_mutex_t lock;
    5859        char devname[HR_DEVNAME_LEN];
    5960        hr_extent_t extents[HR_MAXDEVS];
Note: See TracChangeset for help on using the changeset viewer.