| 1062 | } |
| 1063 | |
| 1064 | static int |
| 1065 | dnode_slots_tryenter(dnode_children_t *children, int idx, int slots) |
| 1066 | { |
| 1067 | ASSERT3S(idx + slots, <=, DNODES_PER_BLOCK); |
| 1068 | |
| 1069 | for (int i = idx; i < idx + slots; i++) { |
| 1070 | dnode_handle_t *dnh = &children->dnc_children[i]; |
| 1071 | |
| 1072 | if (!zrl_tryenter(&dnh->dnh_zrlock)) { |
| 1073 | for (int j = idx; j < i; j++) { |
| 1074 | dnh = &children->dnc_children[j]; |
| 1075 | zrl_exit(&dnh->dnh_zrlock); |
| 1076 | } |
| 1077 | |
| 1078 | return (0); |
| 1079 | } |
| 1080 | } |
| 1081 | |
| 1082 | return (1); |
| 1083 | } |
| 1084 | |
| 1085 | static void |
| 1086 | dnode_set_slots(dnode_children_t *children, int idx, int slots, void *ptr) |
no test coverage detected