• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/fs/jbd2/

Lines Matching defs:jh

29 static void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh);
492 static void jbd_unexpected_dirty_buffer(struct journal_head *jh)
501 jlist = jh->b_jlist;
505 struct buffer_head *bh = jh2bh(jh);
523 do_get_write_access(handle_t *handle, struct journal_head *jh,
539 jbd_debug(5, "buffer_head %p, force_copy %d\n", jh, force_copy);
541 JBUFFER_TRACE(jh, "entry");
543 bh = jh2bh(jh);
568 if (jh->b_transaction) {
569 J_ASSERT_JH(jh,
570 jh->b_transaction == transaction ||
571 jh->b_transaction ==
573 if (jh->b_next_transaction)
574 J_ASSERT_JH(jh, jh->b_next_transaction ==
582 JBUFFER_TRACE(jh, "Unexpected dirty buffer");
583 jbd_unexpected_dirty_buffer(jh);
599 if (jh->b_transaction == transaction ||
600 jh->b_next_transaction == transaction)
607 if (jh->b_frozen_data) {
608 JBUFFER_TRACE(jh, "has frozen data");
609 J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
610 jh->b_next_transaction = transaction;
616 if (jh->b_transaction && jh->b_transaction != transaction) {
617 JBUFFER_TRACE(jh, "owned by older transaction");
618 J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
619 J_ASSERT_JH(jh, jh->b_transaction ==
631 if (jh->b_jlist == BJ_Shadow) {
637 JBUFFER_TRACE(jh, "on shadow: sleep");
643 if (jh->b_jlist != BJ_Shadow)
665 if (jh->b_jlist != BJ_Forget || force_copy) {
666 JBUFFER_TRACE(jh, "generate frozen data");
668 JBUFFER_TRACE(jh, "allocate memory for buffer");
671 jbd2_slab_alloc(jh2bh(jh)->b_size,
677 JBUFFER_TRACE(jh, "oom!");
684 jh->b_frozen_data = frozen_buffer;
688 jh->b_next_transaction = transaction;
697 if (!jh->b_transaction) {
698 JBUFFER_TRACE(jh, "no transaction");
699 J_ASSERT_JH(jh, !jh->b_next_transaction);
700 jh->b_transaction = transaction;
701 JBUFFER_TRACE(jh, "file as BJ_Reserved");
703 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved);
713 J_EXPECT_JH(jh, buffer_uptodate(jh2bh(jh)),
715 page = jh2bh(jh)->b_page;
716 offset = ((unsigned long) jh2bh(jh)->b_data) & ~PAGE_MASK;
718 memcpy(jh->b_frozen_data, source+offset, jh2bh(jh)->b_size);
727 jbd2_journal_cancel_revoke(handle, jh);
733 JBUFFER_TRACE(jh, "exit");
751 struct journal_head *jh = jbd2_journal_add_journal_head(bh);
757 rc = do_get_write_access(handle, jh, 0);
758 jbd2_journal_put_journal_head(jh);
786 struct journal_head *jh = jbd2_journal_add_journal_head(bh);
789 jbd_debug(5, "journal_head %p\n", jh);
795 JBUFFER_TRACE(jh, "entry");
805 J_ASSERT_JH(jh, (jh->b_transaction == transaction ||
806 jh->b_transaction == NULL ||
807 (jh->b_transaction == journal->j_committing_transaction &&
808 jh->b_jlist == BJ_Forget)));
810 J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
811 J_ASSERT_JH(jh, buffer_locked(jh2bh(jh)));
813 if (jh->b_transaction == NULL) {
814 jh->b_transaction = transaction;
815 JBUFFER_TRACE(jh, "file as BJ_Reserved");
816 __jbd2_journal_file_buffer(jh, transaction, BJ_Reserved);
817 } else if (jh->b_transaction == journal->j_committing_transaction) {
818 JBUFFER_TRACE(jh, "set next transaction");
819 jh->b_next_transaction = transaction;
831 JBUFFER_TRACE(jh, "cancelling revoke");
832 jbd2_journal_cancel_revoke(handle, jh);
833 jbd2_journal_put_journal_head(jh);
868 struct journal_head *jh = jbd2_journal_add_journal_head(bh);
871 JBUFFER_TRACE(jh, "entry");
878 err = do_get_write_access(handle, jh, 1);
883 if (!jh->b_committed_data) {
884 committed_data = jbd2_slab_alloc(jh2bh(jh)->b_size, GFP_NOFS);
894 if (!jh->b_committed_data) {
897 JBUFFER_TRACE(jh, "generate b_committed data");
903 jh->b_committed_data = committed_data;
905 memcpy(jh->b_committed_data, bh->b_data, bh->b_size);
909 jbd2_journal_put_journal_head(jh);
934 struct journal_head *jh;
939 jh = jbd2_journal_add_journal_head(bh);
940 JBUFFER_TRACE(jh, "entry");
946 jbd_debug(4, "jh: %p, tid:%d\n", jh, handle->h_transaction->t_tid);
974 JBUFFER_TRACE(jh, "unmapped buffer, bailing out");
978 if (jh->b_transaction) {
979 JBUFFER_TRACE(jh, "has transaction");
980 if (jh->b_transaction != handle->h_transaction) {
981 JBUFFER_TRACE(jh, "belongs to older transaction");
982 J_ASSERT_JH(jh, jh->b_transaction ==
1002 //J_ASSERT_JH(jh, jh->b_next_transaction == NULL);
1018 if (jh->b_jlist != BJ_None &&
1019 jh->b_jlist != BJ_SyncData &&
1020 jh->b_jlist != BJ_Locked) {
1021 JBUFFER_TRACE(jh, "Not stealing");
1041 JBUFFER_TRACE(jh, "buffer got unmapped");
1049 if (jh->b_transaction != NULL) {
1050 JBUFFER_TRACE(jh, "unfile from commit");
1051 __jbd2_journal_temp_unlink_buffer(jh);
1056 jh->b_transaction = handle->h_transaction;
1067 if (jh->b_jlist != BJ_SyncData && jh->b_jlist != BJ_Locked) {
1068 JBUFFER_TRACE(jh, "not on correct data list: unfile");
1069 J_ASSERT_JH(jh, jh->b_jlist != BJ_Shadow);
1070 __jbd2_journal_temp_unlink_buffer(jh);
1071 jh->b_transaction = handle->h_transaction;
1072 JBUFFER_TRACE(jh, "file as data");
1073 __jbd2_journal_file_buffer(jh, handle->h_transaction,
1077 JBUFFER_TRACE(jh, "not on a transaction");
1078 __jbd2_journal_file_buffer(jh, handle->h_transaction, BJ_SyncData);
1087 JBUFFER_TRACE(jh, "exit");
1088 jbd2_journal_put_journal_head(jh);
1115 struct journal_head *jh = bh2jh(bh);
1117 jbd_debug(5, "journal_head %p\n", jh);
1118 JBUFFER_TRACE(jh, "entry");
1124 if (jh->b_modified == 0) {
1130 jh->b_modified = 1;
1131 J_ASSERT_JH(jh, handle->h_buffer_credits > 0);
1142 if (jh->b_transaction == transaction && jh->b_jlist == BJ_Metadata) {
1143 JBUFFER_TRACE(jh, "fastpath");
1144 J_ASSERT_JH(jh, jh->b_transaction ==
1157 if (jh->b_transaction != transaction) {
1158 JBUFFER_TRACE(jh, "already on other transaction");
1159 J_ASSERT_JH(jh, jh->b_transaction ==
1161 J_ASSERT_JH(jh, jh->b_next_transaction == transaction);
1168 J_ASSERT_JH(jh, jh->b_frozen_data == 0);
1170 JBUFFER_TRACE(jh, "file as BJ_Metadata");
1172 __jbd2_journal_file_buffer(jh, handle->h_transaction, BJ_Metadata);
1177 JBUFFER_TRACE(jh, "exit");
1213 struct journal_head *jh;
1224 jh = bh2jh(bh);
1228 if (!J_EXPECT_JH(jh, !jh->b_committed_data,
1238 jh->b_modified = 0;
1240 if (jh->b_transaction == handle->h_transaction) {
1241 J_ASSERT_JH(jh, !jh->b_frozen_data);
1249 JBUFFER_TRACE(jh, "belongs to current transaction: unfile");
1265 if (jh->b_cp_transaction) {
1266 __jbd2_journal_temp_unlink_buffer(jh);
1267 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget);
1269 __jbd2_journal_unfile_buffer(jh);
1279 } else if (jh->b_transaction) {
1280 J_ASSERT_JH(jh, (jh->b_transaction ==
1284 JBUFFER_TRACE(jh, "belongs to older transaction");
1288 if (jh->b_next_transaction) {
1289 J_ASSERT(jh->b_next_transaction == transaction);
1290 jh->b_next_transaction = NULL;
1453 * jbd_lock_bh_state(jh2bh(jh)) is held.
1457 __blist_add_buffer(struct journal_head **list, struct journal_head *jh)
1460 jh->b_tnext = jh->b_tprev = jh;
1461 *list = jh;
1465 jh->b_tprev = last;
1466 jh->b_tnext = first;
1467 last->b_tnext = first->b_tprev = jh;
1477 * jbd_lock_bh_state(jh2bh(jh)) is held.
1481 __blist_del_buffer(struct journal_head **list, struct journal_head *jh)
1483 if (*list == jh) {
1484 *list = jh->b_tnext;
1485 if (*list == jh)
1488 jh->b_tprev->b_tnext = jh->b_tnext;
1489 jh->b_tnext->b_tprev = jh->b_tprev;
1503 void __jbd2_journal_temp_unlink_buffer(struct journal_head *jh)
1507 struct buffer_head *bh = jh2bh(jh);
1509 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh));
1510 transaction = jh->b_transaction;
1514 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types);
1515 if (jh->b_jlist != BJ_None)
1516 J_ASSERT_JH(jh, transaction != 0);
1518 switch (jh->b_jlist) {
1526 J_ASSERT_JH(jh, transaction->t_nr_buffers >= 0);
1549 __blist_del_buffer(list, jh);
1550 jh->b_jlist = BJ_None;
1555 void __jbd2_journal_unfile_buffer(struct journal_head *jh)
1557 __jbd2_journal_temp_unlink_buffer(jh);
1558 jh->b_transaction = NULL;
1561 void jbd2_journal_unfile_buffer(journal_t *journal, struct journal_head *jh)
1563 jbd_lock_bh_state(jh2bh(jh));
1565 __jbd2_journal_unfile_buffer(jh);
1567 jbd_unlock_bh_state(jh2bh(jh));
1578 struct journal_head *jh;
1580 jh = bh2jh(bh);
1585 if (jh->b_next_transaction != 0)
1589 if (jh->b_transaction != 0 && jh->b_cp_transaction == 0) {
1590 if (jh->b_jlist == BJ_SyncData || jh->b_jlist == BJ_Locked) {
1592 JBUFFER_TRACE(jh, "release data");
1593 __jbd2_journal_unfile_buffer(jh);
1597 } else if (jh->b_cp_transaction != 0 && jh->b_transaction == 0) {
1599 if (jh->b_jlist == BJ_None) {
1600 JBUFFER_TRACE(jh, "remove from checkpoint list");
1601 __jbd2_journal_remove_checkpoint(jh);
1658 struct journal_head *jh;
1665 jh = jbd2_journal_grab_journal_head(bh);
1666 if (!jh)
1671 jbd2_journal_put_journal_head(jh);
1693 static int __dispose_buffer(struct journal_head *jh, transaction_t *transaction)
1696 struct buffer_head *bh = jh2bh(jh);
1698 __jbd2_journal_unfile_buffer(jh);
1700 if (jh->b_cp_transaction) {
1701 JBUFFER_TRACE(jh, "on running+cp transaction");
1702 __jbd2_journal_file_buffer(jh, transaction, BJ_Forget);
1706 JBUFFER_TRACE(jh, "on running transaction");
1763 struct journal_head *jh;
1782 jh = jbd2_journal_grab_journal_head(bh);
1783 if (!jh)
1786 transaction = jh->b_transaction;
1792 if (!jh->b_cp_transaction) {
1793 JBUFFER_TRACE(jh, "not on any transaction: zap");
1810 JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget");
1811 ret = __dispose_buffer(jh,
1813 jbd2_journal_put_journal_head(jh);
1824 JBUFFER_TRACE(jh, "give to committing trans");
1825 ret = __dispose_buffer(jh,
1827 jbd2_journal_put_journal_head(jh);
1840 JBUFFER_TRACE(jh, "on committing transaction");
1841 if (jh->b_jlist == BJ_Locked) {
1847 may_free = __dispose_buffer(jh, transaction);
1856 if (jh->b_next_transaction) {
1857 J_ASSERT(jh->b_next_transaction ==
1859 jh->b_next_transaction = NULL;
1861 jbd2_journal_put_journal_head(jh);
1873 J_ASSERT_JH(jh, transaction == journal->j_running_transaction);
1874 JBUFFER_TRACE(jh, "on running transaction");
1875 may_free = __dispose_buffer(jh, transaction);
1879 jbd2_journal_put_journal_head(jh);
1945 void __jbd2_journal_file_buffer(struct journal_head *jh,
1950 struct buffer_head *bh = jh2bh(jh);
1952 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh));
1955 J_ASSERT_JH(jh, jh->b_jlist < BJ_Types);
1956 J_ASSERT_JH(jh, jh->b_transaction == transaction ||
1957 jh->b_transaction == 0);
1959 if (jh->b_transaction && jh->b_jlist == jlist)
1973 if (jh->b_transaction)
1974 __jbd2_journal_temp_unlink_buffer(jh);
1975 jh->b_transaction = transaction;
1979 J_ASSERT_JH(jh, !jh->b_committed_data);
1980 J_ASSERT_JH(jh, !jh->b_frozen_data);
2009 __blist_add_buffer(list, jh);
2010 jh->b_jlist = jlist;
2016 void jbd2_journal_file_buffer(struct journal_head *jh,
2019 jbd_lock_bh_state(jh2bh(jh));
2021 __jbd2_journal_file_buffer(jh, transaction, jlist);
2023 jbd_unlock_bh_state(jh2bh(jh));
2034 * Called under jbd_lock_bh_state(jh2bh(jh))
2036 void __jbd2_journal_refile_buffer(struct journal_head *jh)
2039 struct buffer_head *bh = jh2bh(jh);
2041 J_ASSERT_JH(jh, jbd_is_locked_bh_state(bh));
2042 if (jh->b_transaction)
2043 assert_spin_locked(&jh->b_transaction->t_journal->j_list_lock);
2046 if (jh->b_next_transaction == NULL) {
2047 __jbd2_journal_unfile_buffer(jh);
2057 __jbd2_journal_temp_unlink_buffer(jh);
2058 jh->b_transaction = jh->b_next_transaction;
2059 jh->b_next_transaction = NULL;
2060 __jbd2_journal_file_buffer(jh, jh->b_transaction,
2062 J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING);
2078 * ourselves to avoid a jh leak.
2082 void jbd2_journal_refile_buffer(journal_t *journal, struct journal_head *jh)
2084 struct buffer_head *bh = jh2bh(jh);
2089 __jbd2_journal_refile_buffer(jh);