Lines Matching full:notifier
1042 struct read_only_notifier *notifier = &vdo->read_only_notifier; in vdo_enable_read_only_entry() local
1045 notifier->read_only_error = VDO_READ_ONLY; in vdo_enable_read_only_entry()
1046 notifier->state = NOTIFIED; in vdo_enable_read_only_entry()
1048 notifier->state = MAY_NOT_NOTIFY; in vdo_enable_read_only_entry()
1051 spin_lock_init(¬ifier->lock); in vdo_enable_read_only_entry()
1052 vdo_initialize_completion(¬ifier->completion, vdo, in vdo_enable_read_only_entry()
1073 struct read_only_notifier *notifier = &vdo->read_only_notifier; in vdo_wait_until_not_entering_read_only_mode() local
1077 if (notifier->waiter != NULL) { in vdo_wait_until_not_entering_read_only_mode()
1082 spin_lock(¬ifier->lock); in vdo_wait_until_not_entering_read_only_mode()
1083 if (notifier->state == NOTIFYING) in vdo_wait_until_not_entering_read_only_mode()
1084 notifier->waiter = parent; in vdo_wait_until_not_entering_read_only_mode()
1085 else if (notifier->state == MAY_NOTIFY) in vdo_wait_until_not_entering_read_only_mode()
1086 notifier->state = MAY_NOT_NOTIFY; in vdo_wait_until_not_entering_read_only_mode()
1087 spin_unlock(¬ifier->lock); in vdo_wait_until_not_entering_read_only_mode()
1089 if (notifier->waiter == NULL) { in vdo_wait_until_not_entering_read_only_mode()
1117 struct read_only_notifier *notifier = as_notifier(completion); in finish_entering_read_only_mode() local
1121 spin_lock(¬ifier->lock); in finish_entering_read_only_mode()
1122 notifier->state = NOTIFIED; in finish_entering_read_only_mode()
1123 spin_unlock(¬ifier->lock); in finish_entering_read_only_mode()
1125 if (notifier->waiter != NULL) in finish_entering_read_only_mode()
1126 vdo_continue_completion(vdo_forget(notifier->waiter), in finish_entering_read_only_mode()
1138 struct read_only_notifier *notifier = as_notifier(completion); in make_thread_read_only() local
1148 vdo_log_error_strerror(READ_ONCE(notifier->read_only_error), in make_thread_read_only()
1187 * vdo_allow_read_only_mode_entry() - Allow the notifier to put the VDO into read-only mode,
1201 struct read_only_notifier *notifier = &vdo->read_only_notifier; in vdo_allow_read_only_mode_entry() local
1205 if (notifier->waiter != NULL) { in vdo_allow_read_only_mode_entry()
1210 spin_lock(¬ifier->lock); in vdo_allow_read_only_mode_entry()
1211 if (notifier->state == MAY_NOT_NOTIFY) { in vdo_allow_read_only_mode_entry()
1212 if (notifier->read_only_error == VDO_SUCCESS) { in vdo_allow_read_only_mode_entry()
1213 notifier->state = MAY_NOTIFY; in vdo_allow_read_only_mode_entry()
1215 notifier->state = NOTIFYING; in vdo_allow_read_only_mode_entry()
1216 notifier->waiter = parent; in vdo_allow_read_only_mode_entry()
1219 spin_unlock(¬ifier->lock); in vdo_allow_read_only_mode_entry()
1221 if (notifier->waiter == NULL) { in vdo_allow_read_only_mode_entry()
1228 make_thread_read_only(¬ifier->completion); in vdo_allow_read_only_mode_entry()
1243 struct read_only_notifier *notifier = &vdo->read_only_notifier; in vdo_enter_read_only_mode() local
1257 spin_lock(¬ifier->lock); in vdo_enter_read_only_mode()
1258 if (notifier->read_only_error == VDO_SUCCESS) { in vdo_enter_read_only_mode()
1259 WRITE_ONCE(notifier->read_only_error, error_code); in vdo_enter_read_only_mode()
1260 if (notifier->state == MAY_NOTIFY) { in vdo_enter_read_only_mode()
1261 notifier->state = NOTIFYING; in vdo_enter_read_only_mode()
1265 spin_unlock(¬ifier->lock); in vdo_enter_read_only_mode()
1268 /* The notifier is already aware of a read-only error */ in vdo_enter_read_only_mode()
1273 vdo_launch_completion_callback(¬ifier->completion, make_thread_read_only, 0); in vdo_enter_read_only_mode()