- int result;
- __u32 tgt_size;
- __u32 sub_size;
-
- ENTRY;
- result = 0;
- tgt_size = dev->ld_lov->lov_tgt_size;
- sub_size = dev->ld_target_nr;
- if (sub_size < tgt_size) {
- struct lovsub_device **newd;
- struct lov_device_emerg **emerg;
- const size_t sz = sizeof newd[0];
-
- emerg = lov_emerg_alloc(tgt_size);
- if (IS_ERR(emerg))
- RETURN(PTR_ERR(emerg));
-
- OBD_ALLOC(newd, tgt_size * sz);
- if (newd != NULL) {
- cfs_mutex_lock(&dev->ld_mutex);
- if (sub_size > 0) {
- memcpy(newd, dev->ld_target, sub_size * sz);
- OBD_FREE(dev->ld_target, sub_size * sz);
- }
- dev->ld_target = newd;
- dev->ld_target_nr = tgt_size;
-
- if (dev->ld_emrg != NULL)
- lov_emerg_free(dev->ld_emrg, sub_size);
- dev->ld_emrg = emerg;
- cfs_mutex_unlock(&dev->ld_mutex);
- } else {
- lov_emerg_free(emerg, tgt_size);
- result = -ENOMEM;
- }
- }
- RETURN(result);
+ int result;
+ __u32 tgt_size;
+ __u32 sub_size;
+
+ ENTRY;
+ result = 0;
+ tgt_size = dev->ld_lov->lov_tgt_size;
+ sub_size = dev->ld_target_nr;
+ if (sub_size < tgt_size) {
+ struct lovsub_device **newd;
+ const size_t sz = sizeof(newd[0]);
+
+ OBD_ALLOC(newd, tgt_size * sz);
+ if (newd != NULL) {
+ if (sub_size > 0) {
+ memcpy(newd, dev->ld_target, sub_size * sz);
+ OBD_FREE(dev->ld_target, sub_size * sz);
+ }
+
+ dev->ld_target = newd;
+ dev->ld_target_nr = tgt_size;
+ } else {
+ result = -ENOMEM;
+ }
+ }
+
+ RETURN(result);