Lines Matching refs:osb
64 static int ocfs2_recover_node(struct ocfs2_super *osb,
67 static int ocfs2_commit_cache(struct ocfs2_super *osb);
68 static int __ocfs2_wait_on_mount(struct ocfs2_super *osb, int quota);
69 static int ocfs2_journal_toggle_dirty(struct ocfs2_super *osb,
71 static int ocfs2_trylock_journal(struct ocfs2_super *osb,
73 static int ocfs2_recover_orphans(struct ocfs2_super *osb,
84 static inline int ocfs2_wait_on_mount(struct ocfs2_super *osb) in ocfs2_wait_on_mount() argument
86 return __ocfs2_wait_on_mount(osb, 0); in ocfs2_wait_on_mount()
89 static inline int ocfs2_wait_on_quotas(struct ocfs2_super *osb) in ocfs2_wait_on_quotas() argument
91 return __ocfs2_wait_on_mount(osb, 1); in ocfs2_wait_on_quotas()
111 static void ocfs2_replay_map_set_state(struct ocfs2_super *osb, int state) in ocfs2_replay_map_set_state() argument
113 if (!osb->replay_map) in ocfs2_replay_map_set_state()
117 if (osb->replay_map->rm_state == REPLAY_DONE) in ocfs2_replay_map_set_state()
120 osb->replay_map->rm_state = state; in ocfs2_replay_map_set_state()
123 int ocfs2_compute_replay_slots(struct ocfs2_super *osb) in ocfs2_compute_replay_slots() argument
129 if (osb->replay_map) in ocfs2_compute_replay_slots()
133 (osb->max_slots * sizeof(char)), GFP_KERNEL); in ocfs2_compute_replay_slots()
140 spin_lock(&osb->osb_lock); in ocfs2_compute_replay_slots()
142 replay_map->rm_slots = osb->max_slots; in ocfs2_compute_replay_slots()
147 if (ocfs2_slot_to_node_num_locked(osb, i, &node_num) == -ENOENT) in ocfs2_compute_replay_slots()
151 osb->replay_map = replay_map; in ocfs2_compute_replay_slots()
152 spin_unlock(&osb->osb_lock); in ocfs2_compute_replay_slots()
156 static void ocfs2_queue_replay_slots(struct ocfs2_super *osb, in ocfs2_queue_replay_slots() argument
159 struct ocfs2_replay_map *replay_map = osb->replay_map; in ocfs2_queue_replay_slots()
170 ocfs2_queue_recovery_completion(osb->journal, i, NULL, in ocfs2_queue_replay_slots()
176 static void ocfs2_free_replay_slots(struct ocfs2_super *osb) in ocfs2_free_replay_slots() argument
178 struct ocfs2_replay_map *replay_map = osb->replay_map; in ocfs2_free_replay_slots()
180 if (!osb->replay_map) in ocfs2_free_replay_slots()
184 osb->replay_map = NULL; in ocfs2_free_replay_slots()
187 int ocfs2_recovery_init(struct ocfs2_super *osb) in ocfs2_recovery_init() argument
191 mutex_init(&osb->recovery_lock); in ocfs2_recovery_init()
192 osb->disable_recovery = 0; in ocfs2_recovery_init()
193 osb->recovery_thread_task = NULL; in ocfs2_recovery_init()
194 init_waitqueue_head(&osb->recovery_event); in ocfs2_recovery_init()
197 osb->max_slots * sizeof(unsigned int), in ocfs2_recovery_init()
206 osb->recovery_map = rm; in ocfs2_recovery_init()
214 static int ocfs2_recovery_thread_running(struct ocfs2_super *osb) in ocfs2_recovery_thread_running() argument
217 return osb->recovery_thread_task != NULL; in ocfs2_recovery_thread_running()
220 void ocfs2_recovery_exit(struct ocfs2_super *osb) in ocfs2_recovery_exit() argument
226 mutex_lock(&osb->recovery_lock); in ocfs2_recovery_exit()
227 osb->disable_recovery = 1; in ocfs2_recovery_exit()
228 mutex_unlock(&osb->recovery_lock); in ocfs2_recovery_exit()
229 wait_event(osb->recovery_event, !ocfs2_recovery_thread_running(osb)); in ocfs2_recovery_exit()
240 rm = osb->recovery_map; in ocfs2_recovery_exit()
246 static int __ocfs2_recovery_map_test(struct ocfs2_super *osb, in __ocfs2_recovery_map_test() argument
250 struct ocfs2_recovery_map *rm = osb->recovery_map; in __ocfs2_recovery_map_test()
252 assert_spin_locked(&osb->osb_lock); in __ocfs2_recovery_map_test()
263 static int ocfs2_recovery_map_set(struct ocfs2_super *osb, in ocfs2_recovery_map_set() argument
266 struct ocfs2_recovery_map *rm = osb->recovery_map; in ocfs2_recovery_map_set()
268 spin_lock(&osb->osb_lock); in ocfs2_recovery_map_set()
269 if (__ocfs2_recovery_map_test(osb, node_num)) { in ocfs2_recovery_map_set()
270 spin_unlock(&osb->osb_lock); in ocfs2_recovery_map_set()
275 BUG_ON(rm->rm_used >= osb->max_slots); in ocfs2_recovery_map_set()
279 spin_unlock(&osb->osb_lock); in ocfs2_recovery_map_set()
284 static void ocfs2_recovery_map_clear(struct ocfs2_super *osb, in ocfs2_recovery_map_clear() argument
288 struct ocfs2_recovery_map *rm = osb->recovery_map; in ocfs2_recovery_map_clear()
290 spin_lock(&osb->osb_lock); in ocfs2_recovery_map_clear()
304 spin_unlock(&osb->osb_lock); in ocfs2_recovery_map_clear()
307 static int ocfs2_commit_cache(struct ocfs2_super *osb) in ocfs2_commit_cache() argument
313 journal = osb->journal; in ocfs2_commit_cache()
342 ocfs2_wake_downconvert_thread(osb); in ocfs2_commit_cache()
348 handle_t *ocfs2_start_trans(struct ocfs2_super *osb, int max_buffs) in ocfs2_start_trans() argument
350 journal_t *journal = osb->journal->j_journal; in ocfs2_start_trans()
353 BUG_ON(!osb || !osb->journal->j_journal); in ocfs2_start_trans()
355 if (ocfs2_is_hard_readonly(osb)) in ocfs2_start_trans()
358 BUG_ON(osb->journal->j_state == OCFS2_JOURNAL_FREE); in ocfs2_start_trans()
365 sb_start_intwrite(osb->sb); in ocfs2_start_trans()
367 down_read(&osb->journal->j_trans_barrier); in ocfs2_start_trans()
371 up_read(&osb->journal->j_trans_barrier); in ocfs2_start_trans()
372 sb_end_intwrite(osb->sb); in ocfs2_start_trans()
377 ocfs2_abort(osb->sb, "Detected aborted journal\n"); in ocfs2_start_trans()
381 if (!ocfs2_mount_local(osb)) in ocfs2_start_trans()
382 atomic_inc(&(osb->journal->j_num_trans)); in ocfs2_start_trans()
388 int ocfs2_commit_trans(struct ocfs2_super *osb, in ocfs2_commit_trans() argument
392 struct ocfs2_journal *journal = osb->journal; in ocfs2_commit_trans()
403 sb_end_intwrite(osb->sb); in ocfs2_commit_trans()
655 struct ocfs2_super *osb = in __ocfs2_journal_access() local
696 ocfs2_set_ci_lock_trans(osb->journal, ci); in __ocfs2_journal_access()
713 if (!status && ocfs2_meta_ecc(osb) && triggers) in __ocfs2_journal_access()
810 void ocfs2_set_journal_params(struct ocfs2_super *osb) in ocfs2_set_journal_params() argument
812 journal_t *journal = osb->journal->j_journal; in ocfs2_set_journal_params()
815 if (osb->osb_commit_interval) in ocfs2_set_journal_params()
816 commit_interval = osb->osb_commit_interval; in ocfs2_set_journal_params()
820 if (osb->s_mount_opt & OCFS2_MOUNT_BARRIER) in ocfs2_set_journal_params()
834 struct ocfs2_super *osb; in ocfs2_journal_init() local
839 osb = journal->j_osb; in ocfs2_journal_init()
842 inode = ocfs2_get_system_file_inode(osb, JOURNAL_SYSTEM_INODE, in ocfs2_journal_init()
843 osb->slot_num); in ocfs2_journal_init()
901 ocfs2_set_journal_params(osb); in ocfs2_journal_init()
930 static int ocfs2_journal_toggle_dirty(struct ocfs2_super *osb, in ocfs2_journal_toggle_dirty() argument
935 struct ocfs2_journal *journal = osb->journal; in ocfs2_journal_toggle_dirty()
956 ocfs2_compute_meta_ecc(osb->sb, bh->b_data, &fe->i_check); in ocfs2_journal_toggle_dirty()
957 status = ocfs2_write_block(osb, bh, INODE_CACHE(journal->j_inode)); in ocfs2_journal_toggle_dirty()
968 void ocfs2_journal_shutdown(struct ocfs2_super *osb) in ocfs2_journal_shutdown() argument
975 BUG_ON(!osb); in ocfs2_journal_shutdown()
977 journal = osb->journal; in ocfs2_journal_shutdown()
990 num_running_trans = atomic_read(&(osb->journal->j_num_trans)); in ocfs2_journal_shutdown()
1002 if (osb->commit_task) { in ocfs2_journal_shutdown()
1004 trace_ocfs2_journal_shutdown_wait(osb->commit_task); in ocfs2_journal_shutdown()
1005 kthread_stop(osb->commit_task); in ocfs2_journal_shutdown()
1006 osb->commit_task = NULL; in ocfs2_journal_shutdown()
1009 BUG_ON(atomic_read(&(osb->journal->j_num_trans)) != 0); in ocfs2_journal_shutdown()
1011 if (ocfs2_mount_local(osb)) { in ocfs2_journal_shutdown()
1024 status = ocfs2_journal_toggle_dirty(osb, 0, 0); in ocfs2_journal_shutdown()
1070 struct ocfs2_super *osb; in ocfs2_journal_load() local
1074 osb = journal->j_osb; in ocfs2_journal_load()
1082 ocfs2_clear_journal_error(osb->sb, journal->j_journal, osb->slot_num); in ocfs2_journal_load()
1084 status = ocfs2_journal_toggle_dirty(osb, 1, replayed); in ocfs2_journal_load()
1092 osb->commit_task = kthread_run(ocfs2_commit_thread, osb, in ocfs2_journal_load()
1093 "ocfs2cmt-%s", osb->uuid_str); in ocfs2_journal_load()
1094 if (IS_ERR(osb->commit_task)) { in ocfs2_journal_load()
1095 status = PTR_ERR(osb->commit_task); in ocfs2_journal_load()
1096 osb->commit_task = NULL; in ocfs2_journal_load()
1102 osb->commit_task = NULL; in ocfs2_journal_load()
1131 static int ocfs2_recovery_completed(struct ocfs2_super *osb) in ocfs2_recovery_completed() argument
1134 struct ocfs2_recovery_map *rm = osb->recovery_map; in ocfs2_recovery_completed()
1136 spin_lock(&osb->osb_lock); in ocfs2_recovery_completed()
1138 spin_unlock(&osb->osb_lock); in ocfs2_recovery_completed()
1143 void ocfs2_wait_for_recovery(struct ocfs2_super *osb) in ocfs2_wait_for_recovery() argument
1145 wait_event(osb->recovery_event, ocfs2_recovery_completed(osb)); in ocfs2_wait_for_recovery()
1228 struct ocfs2_super *osb = journal->j_osb; in ocfs2_complete_recovery() local
1245 ocfs2_wait_on_quotas(osb); in ocfs2_complete_recovery()
1258 ret = ocfs2_complete_local_alloc_recovery(osb, in ocfs2_complete_recovery()
1267 ret = ocfs2_complete_truncate_log_recovery(osb, in ocfs2_complete_recovery()
1275 ret = ocfs2_recover_orphans(osb, item->lri_slot, in ocfs2_complete_recovery()
1281 ret = ocfs2_finish_quota_recovery(osb, qrec, in ocfs2_complete_recovery()
1336 void ocfs2_complete_mount_recovery(struct ocfs2_super *osb) in ocfs2_complete_mount_recovery() argument
1338 struct ocfs2_journal *journal = osb->journal; in ocfs2_complete_mount_recovery()
1340 if (ocfs2_is_hard_readonly(osb)) in ocfs2_complete_mount_recovery()
1345 ocfs2_queue_recovery_completion(journal, osb->slot_num, in ocfs2_complete_mount_recovery()
1346 osb->local_alloc_copy, NULL, NULL, in ocfs2_complete_mount_recovery()
1348 ocfs2_schedule_truncate_log_flush(osb, 0); in ocfs2_complete_mount_recovery()
1350 osb->local_alloc_copy = NULL; in ocfs2_complete_mount_recovery()
1351 osb->dirty = 0; in ocfs2_complete_mount_recovery()
1354 ocfs2_replay_map_set_state(osb, REPLAY_NEEDED); in ocfs2_complete_mount_recovery()
1355 ocfs2_queue_replay_slots(osb, ORPHAN_NEED_TRUNCATE); in ocfs2_complete_mount_recovery()
1356 ocfs2_free_replay_slots(osb); in ocfs2_complete_mount_recovery()
1359 void ocfs2_complete_quota_recovery(struct ocfs2_super *osb) in ocfs2_complete_quota_recovery() argument
1361 if (osb->quota_rec) { in ocfs2_complete_quota_recovery()
1362 ocfs2_queue_recovery_completion(osb->journal, in ocfs2_complete_quota_recovery()
1363 osb->slot_num, in ocfs2_complete_quota_recovery()
1366 osb->quota_rec, in ocfs2_complete_quota_recovery()
1368 osb->quota_rec = NULL; in ocfs2_complete_quota_recovery()
1375 struct ocfs2_super *osb = arg; in __ocfs2_recovery_thread() local
1376 struct ocfs2_recovery_map *rm = osb->recovery_map; in __ocfs2_recovery_thread()
1381 status = ocfs2_wait_on_mount(osb); in __ocfs2_recovery_thread()
1386 rm_quota = kzalloc(osb->max_slots * sizeof(int), GFP_NOFS); in __ocfs2_recovery_thread()
1392 status = ocfs2_super_lock(osb, 1); in __ocfs2_recovery_thread()
1398 status = ocfs2_compute_replay_slots(osb); in __ocfs2_recovery_thread()
1403 ocfs2_queue_recovery_completion(osb->journal, osb->slot_num, NULL, in __ocfs2_recovery_thread()
1406 spin_lock(&osb->osb_lock); in __ocfs2_recovery_thread()
1411 spin_unlock(&osb->osb_lock); in __ocfs2_recovery_thread()
1412 slot_num = ocfs2_node_num_to_slot(osb, node_num); in __ocfs2_recovery_thread()
1429 status = ocfs2_recover_node(osb, node_num, slot_num); in __ocfs2_recovery_thread()
1432 ocfs2_recovery_map_clear(osb, node_num); in __ocfs2_recovery_thread()
1437 MAJOR(osb->sb->s_dev), MINOR(osb->sb->s_dev)); in __ocfs2_recovery_thread()
1441 spin_lock(&osb->osb_lock); in __ocfs2_recovery_thread()
1443 spin_unlock(&osb->osb_lock); in __ocfs2_recovery_thread()
1447 status = ocfs2_check_journals_nolocks(osb); in __ocfs2_recovery_thread()
1456 qrec = ocfs2_begin_quota_recovery(osb, rm_quota[i]); in __ocfs2_recovery_thread()
1462 ocfs2_queue_recovery_completion(osb->journal, rm_quota[i], in __ocfs2_recovery_thread()
1467 ocfs2_super_unlock(osb, 1); in __ocfs2_recovery_thread()
1470 ocfs2_queue_replay_slots(osb, ORPHAN_NEED_TRUNCATE); in __ocfs2_recovery_thread()
1473 mutex_lock(&osb->recovery_lock); in __ocfs2_recovery_thread()
1474 if (!status && !ocfs2_recovery_completed(osb)) { in __ocfs2_recovery_thread()
1475 mutex_unlock(&osb->recovery_lock); in __ocfs2_recovery_thread()
1479 ocfs2_free_replay_slots(osb); in __ocfs2_recovery_thread()
1480 osb->recovery_thread_task = NULL; in __ocfs2_recovery_thread()
1482 wake_up(&osb->recovery_event); in __ocfs2_recovery_thread()
1484 mutex_unlock(&osb->recovery_lock); in __ocfs2_recovery_thread()
1494 void ocfs2_recovery_thread(struct ocfs2_super *osb, int node_num) in ocfs2_recovery_thread() argument
1496 mutex_lock(&osb->recovery_lock); in ocfs2_recovery_thread()
1498 trace_ocfs2_recovery_thread(node_num, osb->node_num, in ocfs2_recovery_thread()
1499 osb->disable_recovery, osb->recovery_thread_task, in ocfs2_recovery_thread()
1500 osb->disable_recovery ? in ocfs2_recovery_thread()
1501 -1 : ocfs2_recovery_map_set(osb, node_num)); in ocfs2_recovery_thread()
1503 if (osb->disable_recovery) in ocfs2_recovery_thread()
1506 if (osb->recovery_thread_task) in ocfs2_recovery_thread()
1509 osb->recovery_thread_task = kthread_run(__ocfs2_recovery_thread, osb, in ocfs2_recovery_thread()
1510 "ocfs2rec-%s", osb->uuid_str); in ocfs2_recovery_thread()
1511 if (IS_ERR(osb->recovery_thread_task)) { in ocfs2_recovery_thread()
1512 mlog_errno((int)PTR_ERR(osb->recovery_thread_task)); in ocfs2_recovery_thread()
1513 osb->recovery_thread_task = NULL; in ocfs2_recovery_thread()
1517 mutex_unlock(&osb->recovery_lock); in ocfs2_recovery_thread()
1518 wake_up(&osb->recovery_event); in ocfs2_recovery_thread()
1521 static int ocfs2_read_journal_inode(struct ocfs2_super *osb, in ocfs2_read_journal_inode() argument
1529 BUG_ON(slot_num >= osb->max_slots); in ocfs2_read_journal_inode()
1531 inode = ocfs2_get_system_file_inode(osb, JOURNAL_SYSTEM_INODE, in ocfs2_read_journal_inode()
1559 static int ocfs2_replay_journal(struct ocfs2_super *osb, in ocfs2_replay_journal() argument
1572 status = ocfs2_read_journal_inode(osb, slot_num, &bh, &inode); in ocfs2_replay_journal()
1591 if (osb->slot_recovery_generations[slot_num] != slot_reco_gen) { in ocfs2_replay_journal()
1593 osb->slot_recovery_generations[slot_num], slot_reco_gen); in ocfs2_replay_journal()
1594 osb->slot_recovery_generations[slot_num] = slot_reco_gen; in ocfs2_replay_journal()
1618 osb->slot_recovery_generations[slot_num] = slot_reco_gen; in ocfs2_replay_journal()
1623 ocfs2_replay_map_set_state(osb, REPLAY_NEEDED); in ocfs2_replay_journal()
1626 "device (%u,%u)\n", node_num, slot_num, MAJOR(osb->sb->s_dev), in ocfs2_replay_journal()
1627 MINOR(osb->sb->s_dev)); in ocfs2_replay_journal()
1653 ocfs2_clear_journal_error(osb->sb, journal, slot_num); in ocfs2_replay_journal()
1669 osb->slot_recovery_generations[slot_num] = in ocfs2_replay_journal()
1672 ocfs2_compute_meta_ecc(osb->sb, bh->b_data, &fe->i_check); in ocfs2_replay_journal()
1673 status = ocfs2_write_block(osb, bh, INODE_CACHE(inode)); in ocfs2_replay_journal()
1683 "device (%u,%u)\n", node_num, slot_num, MAJOR(osb->sb->s_dev), in ocfs2_replay_journal()
1684 MINOR(osb->sb->s_dev)); in ocfs2_replay_journal()
1710 static int ocfs2_recover_node(struct ocfs2_super *osb, in ocfs2_recover_node() argument
1717 trace_ocfs2_recover_node(node_num, slot_num, osb->node_num); in ocfs2_recover_node()
1721 BUG_ON(osb->node_num == node_num); in ocfs2_recover_node()
1723 status = ocfs2_replay_journal(osb, node_num, slot_num); in ocfs2_recover_node()
1735 status = ocfs2_begin_local_alloc_recovery(osb, slot_num, &la_copy); in ocfs2_recover_node()
1744 status = ocfs2_begin_truncate_log_recovery(osb, slot_num, &tl_copy); in ocfs2_recover_node()
1750 status = ocfs2_clear_slot(osb, slot_num); in ocfs2_recover_node()
1755 ocfs2_queue_recovery_completion(osb->journal, slot_num, la_copy, in ocfs2_recover_node()
1767 static int ocfs2_trylock_journal(struct ocfs2_super *osb, in ocfs2_trylock_journal() argument
1773 inode = ocfs2_get_system_file_inode(osb, JOURNAL_SYSTEM_INODE, in ocfs2_trylock_journal()
1807 int ocfs2_mark_dead_nodes(struct ocfs2_super *osb) in ocfs2_mark_dead_nodes() argument
1818 for (i = 0; i < osb->max_slots; i++) { in ocfs2_mark_dead_nodes()
1820 status = ocfs2_read_journal_inode(osb, i, &bh, NULL); in ocfs2_mark_dead_nodes()
1830 spin_lock(&osb->osb_lock); in ocfs2_mark_dead_nodes()
1831 osb->slot_recovery_generations[i] = gen; in ocfs2_mark_dead_nodes()
1834 osb->slot_recovery_generations[i]); in ocfs2_mark_dead_nodes()
1836 if (i == osb->slot_num) { in ocfs2_mark_dead_nodes()
1837 spin_unlock(&osb->osb_lock); in ocfs2_mark_dead_nodes()
1841 status = ocfs2_slot_to_node_num_locked(osb, i, &node_num); in ocfs2_mark_dead_nodes()
1843 spin_unlock(&osb->osb_lock); in ocfs2_mark_dead_nodes()
1847 if (__ocfs2_recovery_map_test(osb, node_num)) { in ocfs2_mark_dead_nodes()
1848 spin_unlock(&osb->osb_lock); in ocfs2_mark_dead_nodes()
1851 spin_unlock(&osb->osb_lock); in ocfs2_mark_dead_nodes()
1856 status = ocfs2_trylock_journal(osb, i); in ocfs2_mark_dead_nodes()
1861 ocfs2_recovery_thread(osb, node_num); in ocfs2_mark_dead_nodes()
1914 static void ocfs2_queue_orphan_scan(struct ocfs2_super *osb) in ocfs2_queue_orphan_scan() argument
1920 os = &osb->osb_orphan_scan; in ocfs2_queue_orphan_scan()
1928 status = ocfs2_orphan_scan_lock(osb, &seqno); in ocfs2_queue_orphan_scan()
1944 for (i = 0; i < osb->max_slots; i++) in ocfs2_queue_orphan_scan()
1945 ocfs2_queue_recovery_completion(osb->journal, i, NULL, NULL, in ocfs2_queue_orphan_scan()
1955 ocfs2_orphan_scan_unlock(osb, seqno); in ocfs2_queue_orphan_scan()
1966 struct ocfs2_super *osb; in ocfs2_orphan_scan_work() local
1970 osb = os->os_osb; in ocfs2_orphan_scan_work()
1973 ocfs2_queue_orphan_scan(osb); in ocfs2_orphan_scan_work()
1980 void ocfs2_orphan_scan_stop(struct ocfs2_super *osb) in ocfs2_orphan_scan_stop() argument
1984 os = &osb->osb_orphan_scan; in ocfs2_orphan_scan_stop()
1993 void ocfs2_orphan_scan_init(struct ocfs2_super *osb) in ocfs2_orphan_scan_init() argument
1997 os = &osb->osb_orphan_scan; in ocfs2_orphan_scan_init()
1998 os->os_osb = osb; in ocfs2_orphan_scan_init()
2005 void ocfs2_orphan_scan_start(struct ocfs2_super *osb) in ocfs2_orphan_scan_start() argument
2009 os = &osb->osb_orphan_scan; in ocfs2_orphan_scan_start()
2011 if (ocfs2_is_hard_readonly(osb) || ocfs2_mount_local(osb)) in ocfs2_orphan_scan_start()
2023 struct ocfs2_super *osb; member
2047 iter = ocfs2_iget(p->osb, ino, in ocfs2_orphan_filldir()
2072 static int ocfs2_queue_orphans(struct ocfs2_super *osb, in ocfs2_queue_orphans() argument
2081 .osb = osb, in ocfs2_queue_orphans()
2086 orphan_dir_inode = ocfs2_get_system_file_inode(osb, in ocfs2_queue_orphans()
2118 static int ocfs2_orphan_recovery_can_continue(struct ocfs2_super *osb, in ocfs2_orphan_recovery_can_continue() argument
2123 spin_lock(&osb->osb_lock); in ocfs2_orphan_recovery_can_continue()
2124 ret = !osb->osb_orphan_wipes[slot]; in ocfs2_orphan_recovery_can_continue()
2125 spin_unlock(&osb->osb_lock); in ocfs2_orphan_recovery_can_continue()
2129 static void ocfs2_mark_recovering_orphan_dir(struct ocfs2_super *osb, in ocfs2_mark_recovering_orphan_dir() argument
2132 spin_lock(&osb->osb_lock); in ocfs2_mark_recovering_orphan_dir()
2135 ocfs2_node_map_set_bit(osb, &osb->osb_recovering_orphan_dirs, slot); in ocfs2_mark_recovering_orphan_dir()
2136 while (osb->osb_orphan_wipes[slot]) { in ocfs2_mark_recovering_orphan_dir()
2140 spin_unlock(&osb->osb_lock); in ocfs2_mark_recovering_orphan_dir()
2141 wait_event_interruptible(osb->osb_wipe_event, in ocfs2_mark_recovering_orphan_dir()
2142 ocfs2_orphan_recovery_can_continue(osb, slot)); in ocfs2_mark_recovering_orphan_dir()
2143 spin_lock(&osb->osb_lock); in ocfs2_mark_recovering_orphan_dir()
2145 spin_unlock(&osb->osb_lock); in ocfs2_mark_recovering_orphan_dir()
2148 static void ocfs2_clear_recovering_orphan_dir(struct ocfs2_super *osb, in ocfs2_clear_recovering_orphan_dir() argument
2151 ocfs2_node_map_clear_bit(osb, &osb->osb_recovering_orphan_dirs, slot); in ocfs2_clear_recovering_orphan_dir()
2172 static int ocfs2_recover_orphans(struct ocfs2_super *osb, in ocfs2_recover_orphans() argument
2185 ocfs2_mark_recovering_orphan_dir(osb, slot); in ocfs2_recover_orphans()
2186 ret = ocfs2_queue_orphans(osb, slot, &inode, orphan_reco_type); in ocfs2_recover_orphans()
2187 ocfs2_clear_recovering_orphan_dir(osb, slot); in ocfs2_recover_orphans()
2230 ret = ocfs2_del_inode_from_orphan(osb, inode, in ocfs2_recover_orphans()
2261 static int __ocfs2_wait_on_mount(struct ocfs2_super *osb, int quota) in __ocfs2_wait_on_mount() argument
2266 wait_event(osb->osb_mount_event, in __ocfs2_wait_on_mount()
2267 (!quota && atomic_read(&osb->vol_state) == VOLUME_MOUNTED) || in __ocfs2_wait_on_mount()
2268 atomic_read(&osb->vol_state) == VOLUME_MOUNTED_QUOTAS || in __ocfs2_wait_on_mount()
2269 atomic_read(&osb->vol_state) == VOLUME_DISABLED); in __ocfs2_wait_on_mount()
2274 if (atomic_read(&osb->vol_state) == VOLUME_DISABLED) { in __ocfs2_wait_on_mount()
2286 struct ocfs2_super *osb = arg; in ocfs2_commit_thread() local
2287 struct ocfs2_journal *journal = osb->journal; in ocfs2_commit_thread()
2296 wait_event_interruptible(osb->checkpoint_event, in ocfs2_commit_thread()
2300 status = ocfs2_commit_cache(osb); in ocfs2_commit_thread()
2332 int ocfs2_check_journals_nolocks(struct ocfs2_super *osb) in ocfs2_check_journals_nolocks() argument
2340 for(slot = 0; slot < osb->max_slots; slot++) { in ocfs2_check_journals_nolocks()
2341 ret = ocfs2_read_journal_inode(osb, slot, &di_bh, NULL); in ocfs2_check_journals_nolocks()
2349 osb->slot_recovery_generations[slot] = in ocfs2_check_journals_nolocks()