Branch | Commit message | Author | Age |
archive/unc-master-3.0 | P-FP: fix BUG_ON releated to priority inheritance | Bjoern Brandenburg | 13 years |
archived-2013.1 | uncachedev: mmap memory that is not cached by CPUs | Glenn Elliott | 12 years |
archived-private-master | Merge branch 'wip-2.6.34' into old-private-master | Andrea Bastoni | 15 years |
archived-semi-part | Merge branch 'wip-semi-part' of ssh://cvs/cvs/proj/litmus/repo/litmus2010 int... | Andrea Bastoni | 15 years |
demo | Further refinements | Jonathan Herman | 14 years |
ecrts-pgm-final | Merge branch 'wip-ecrts14-pgm' of ssh://rtsrv.cs.unc.edu/home/litmus/litmus-r... | Glenn Elliott | 12 years |
ecrts14-pgm-final | Merge branch 'wip-ecrts14-pgm' of ssh://rtsrv.cs.unc.edu/home/litmus/litmus-r... | Glenn Elliott | 12 years |
gpusync-rtss12 | Final GPUSync implementation. | Glenn Elliott | 12 years |
gpusync/staging | Rename IKGLP R2DGLP. | Glenn Elliott | 12 years |
linux-tip | Merge branch 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/p... | Linus Torvalds | 15 years |
litmus2008-patch-series | add i386 feather-trace implementation | Bjoern B. Brandenburg | 16 years |
master | PSN-EDF: use inferred_sporadic_job_release_at | Bjoern Brandenburg | 9 years |
pgm | make it compile | Glenn Elliott | 12 years |
prop/litmus-signals | Infrastructure for Litmus signals. | Glenn Elliott | 13 years |
prop/robust-tie-break | Fixed bug in edf_higher_prio(). | Glenn Elliott | 13 years |
staging | Fix tracepoint compilation error | Felipe Cerqueira | 13 years |
test | 9/23/2016 | Namhoon Kim | 9 years |
tracing-devel | Test kernel tracing events capabilities | Andrea Bastoni | 16 years |
v2.6.34-with-arm-patches | smsc911x: Add spinlocks around registers access | Catalin Marinas | 15 years |
v2015.1 | Add ARM syscall def for get_current_budget | Bjoern Brandenburg | 10 years |
wip-2011.2-bbb | Litmus core: simplify np-section protocol | Bjoern B. Brandenburg | 14 years |
wip-2011.2-bbb-trace | Refactor sched_trace_log_message() -> debug_trace_log_message() | Andrea Bastoni | 14 years |
wip-2012.3-gpu | SOBLIV draining support for C-EDF. | Glenn Elliott | 12 years |
wip-2012.3-gpu-preport | pick up last C-RM file | Glenn Elliott | 12 years |
wip-2012.3-gpu-rtss13 | Fix critical bug in GPU tracker. | Glenn Elliott | 12 years |
wip-2012.3-gpu-sobliv-budget-w-kshark | Proper sobliv draining and many bug fixes. | Glenn Elliott | 12 years |
wip-aedzl-final | Make it easier to compile AEDZL interfaces in liblitmus. | Glenn Elliott | 15 years |
wip-aedzl-revised | Add sched_trace data for Apative EDZL | Glenn Elliott | 15 years |
wip-arbit-deadline | Fix compilation bug. | Glenn Elliott | 13 years |
wip-aux-tasks | Description of refined aux task inheritance. | Glenn Elliott | 13 years |
wip-bbb | GSN-EDF & Core: improve debug TRACE'ing for NP sections | Bjoern B. Brandenburg | 14 years |
wip-bbb-prio-don | use correct timestamp | Bjoern B. Brandenburg | 14 years |
wip-better-break | Implement hash-based EDF tie-breaking. | Glenn Elliott | 13 years |
wip-binary-heap | Make C-EDF work with simplified binheap_delete | Glenn Elliott | 13 years |
wip-budget | Added support for choices in budget policy enforcement. | Glenn Elliott | 15 years |
wip-color | Summarize schedulability with final record | Jonathan Herman | 13 years |
wip-color-jlh | sched_color: Fixed two bugs causing crashing on experiment restart and a rare... | Jonathan Herman | 13 years |
wip-d10-hz1000 | Enable HZ=1000 on District 10 | Bjoern B. Brandenburg | 15 years |
wip-default-clustering | Feature: Make default C-EDF clustering compile-time configurable. | Glenn Elliott | 15 years |
wip-dissipation-jerickso | Update from 2.6.36 to 2.6.36.4 | Jeremy Erickson | 11 years |
wip-dissipation2-jerickso | Update 2.6.36 to 2.6.36.4 | Jeremy Erickson | 11 years |
wip-ecrts14-pgm | Merge branch 'wip-ecrts14-pgm' of ssh://rtsrv.cs.unc.edu/home/litmus/litmus-r... | Glenn Elliott | 12 years |
wip-edf-hsb | last tested version | Jonathan Herman | 14 years |
wip-edf-os | Lookup table EDF-os | Jeremy Erickson | 12 years |
wip-edf-tie-break | Merge branch 'wip-edf-tie-break' of ssh://rtsrv.cs.unc.edu/home/litmus/litmus... | Glenn Elliott | 13 years |
wip-edzl-critique | Use hr_timer's active checks instead of having own flag. | Glenn Elliott | 15 years |
wip-edzl-final | Implementation of the EDZL scheduler. | Glenn Elliott | 15 years |
wip-edzl-revised | Clean up comments. | Glenn Elliott | 15 years |
wip-events | Added support for tracing arbitrary actions. | Jonathan Herman | 15 years |
wip-extra-debug | DBG: add additional tracing | Bjoern B. Brandenburg | 15 years |
wip-fix-switch-jerickso | Attempt to fix race condition with plugin switching | Jeremy Erickson | 15 years |
wip-fix3 | sched: show length of runqueue clock deactivation in /proc/sched_debug | Bjoern B. Brandenburg | 15 years |
wip-fmlp-dequeue | Improve FMLP queue management. | Glenn Elliott | 14 years |
wip-ft-irq-flag | Feather-Trace: keep track of interrupt-related interference. | Bjoern B. Brandenburg | 14 years |
wip-gpu-cleanup | Enable sched_trace log injection from userspace | Glenn Elliott | 13 years |
wip-gpu-interrupts | Remove option for threading of all softirqs. | Glenn Elliott | 14 years |
wip-gpu-rtas12 | Generalized GPU cost predictors + EWMA. (untested) | Glenn Elliott | 13 years |
wip-gpu-rtss12 | Final GPUSync implementation. | Glenn Elliott | 13 years |
wip-gpu-rtss12-srp | experimental changes to support GPUs under SRP | Glenn Elliott | 13 years |
wip-gpusync-merge | Cleanup priority tracking for budget enforcement. | Glenn Elliott | 11 years |
wip-ikglp | Move RSM and IKGLP imp. to own .c files | Glenn Elliott | 13 years |
wip-k-fmlp | Merge branch 'mpi-master' into wip-k-fmlp | Glenn Elliott | 14 years |
wip-kernel-coloring | Added recolor syscall | Namhoon Kim | 7 years |
wip-kernthreads | Kludge work-queue processing into klitirqd. | Glenn Elliott | 15 years |
wip-klmirqd-to-aux | Allow klmirqd threads to be given names. | Glenn Elliott | 13 years |
wip-kshark | Merge branch 'mpi-staging' into wip-kshark | Jonathan Herman | 13 years |
wip-litmus-3.2 | Merge commit 'v3.2' into litmus-staging | Andrea Bastoni | 13 years |
wip-litmus2011.2 | Cleanup: Coding conformance for affinity stuff. | Glenn Elliott | 14 years |
wip-litmus3.0-2011.2 | Feather-Trace: keep track of interrupt-related interference. | Bjoern B. Brandenburg | 14 years |
wip-master-2.6.33-rt | Avoid deadlock when switching task policy to BACKGROUND (ugly) | Andrea Bastoni | 15 years |
wip-mc | Removed ARM-specific hacks which disabled less common mixed-criticality featu... | Jonathan Herman | 12 years |
wip-mc-bipasa | MC-EDF added | bipasa chattopadhyay | 13 years |
wip-mc-jerickso | Split C/D queues | Jeremy Erickson | 15 years |
wip-mc2-cache-slack | Manually patched mc^2 related code | Ming Yang | 10 years |
wip-mcrit-mac | cosmetic | Mac Mollison | 15 years |
wip-merge-3.0 | Prevent Linux to send IPI and queue tasks on remote CPUs. | Andrea Bastoni | 14 years |
wip-merge-v3.0 | Prevent Linux to send IPI and queue tasks on remote CPUs. | Andrea Bastoni | 14 years |
wip-migration-affinity | NULL affinity dereference in C-EDF. | Glenn Elliott | 14 years |
wip-mmap-uncache | share branch with others | Glenn Elliott | 13 years |
wip-modechange | RTSS 2017 submission | Namhoon Kim | 8 years |
wip-nested-locking | Appears to be working. | Bryan Ward | 12 years |
wip-omlp-gedf | First implementation of G-OMLP. | Glenn Elliott | 15 years |
wip-pai | Some cleanup of PAI | Glenn Elliott | 14 years |
wip-percore-lib | 9/21/2016 | Namhoon Kim | 9 years |
wip-performance | CONFIG_DONT_PREEMPT_ON_TIE: Don't preeempt a scheduled task on priority tie. | Glenn Elliott | 14 years |
wip-pgm | Add PGM support to C-FL | Glenn Elliott | 12 years |
wip-pgm-split | First draft of C-FL-split | Namhoon Kim | 12 years |
wip-pm-ovd | Add preemption-and-migration overhead tracing support | Andrea Bastoni | 15 years |
wip-prio-inh | P-EDF updated to use the generic pi framework. | Glenn Elliott | 15 years |
wip-prioq-dgl | BUG FIX: Support DGLs with PRIOQ_MUTEX | Glenn Elliott | 13 years |
wip-refactored-gedf | Generalizd architecture for GEDF-style scheduelrs to reduce code redundancy. | Glenn Elliott | 15 years |
wip-release-master-fix | bugfix: release master CPU must signal task was picked | Bjoern B. Brandenburg | 14 years |
wip-robust-tie-break | EDF priority tie-breaks. | Glenn Elliott | 13 years |
wip-rt-kshark | Move task time accounting into the complete_job method. | Jonathan Herman | 13 years |
wip-rtas12-pgm | Scheduling of PGM jobs. | Glenn Elliott | 13 years |
wip-semi-part | Fix compile error with newer GCC | Jeremy Erickson | 12 years |
wip-semi-part-edfos-jerickso | Use initial CPU set by client | Jeremy Erickson | 12 years |
wip-shared-lib | TODO: Fix condition checks in replicate_page_move_mapping() | Namhoon Kim | 9 years |
wip-shared-lib2 | RTAS 2017 Submission ver. | Namhoon Kim | 9 years |
wip-shared-mem | Initial commit for shared library | Namhoon Kim | 9 years |
wip-splitting-jerickso | Fix release behavior | Jeremy Erickson | 13 years |
wip-splitting-omlp-jerickso | Bjoern's Dissertation Code with Priority Donation | Jeremy Erickson | 13 years |
wip-stage-binheap | An efficient binary heap implementation. | Glenn Elliott | 13 years |
wip-sun-port | Dynamic memory allocation and clean exit for FeatherTrace | Christopher Kenna | 15 years |
wip-timer-trace | bugfix: C-EDF, clear scheduled field of the correct CPU upon task_exit | Andrea Bastoni | 15 years |
wip-tracepoints | Add kernel-style events for sched_trace_XXX() functions | Andrea Bastoni | 14 years |
|
Tag | Download | Author | Age |
2015.1 | commit 8e51b37822... | Bjoern Brandenburg | 10 years |
2013.1 | commit bcaacec1ca... | Glenn Elliott | 12 years |
2012.3 | commit c158b5fbe4... | Jonathan Herman | 13 years |
2012.2 | commit b53c479a0f... | Glenn Elliott | 13 years |
2012.1 | commit 83b11ea1c6... | Bjoern B. Brandenburg | 14 years |
rtas12-mc-beta-exp | commit 8e236ee20f... | Christopher Kenna | 14 years |
2011.1 | commit d11808b5c6... | Christopher Kenna | 15 years |
v2.6.37-rc4 | commit e8a7e48bb2... | Linus Torvalds | 15 years |
v2.6.37-rc3 | commit 3561d43fd2... | Linus Torvalds | 15 years |
v2.6.37-rc2 | commit e53beacd23... | Linus Torvalds | 15 years |
v2.6.37-rc1 | commit c8ddb2713c... | Linus Torvalds | 15 years |
v2.6.36 | commit f6f94e2ab1... | Linus Torvalds | 15 years |
2010.2 | commit 5c5456402d... | Bjoern B. Brandenburg | 15 years |
v2.6.36-rc8 | commit cd07202cc8... | Linus Torvalds | 15 years |
v2.6.36-rc7 | commit cb655d0f3d... | Linus Torvalds | 15 years |
v2.6.36-rc6 | commit 899611ee7d... | Linus Torvalds | 15 years |
v2.6.36-rc5 | commit b30a3f6257... | Linus Torvalds | 15 years |
v2.6.36-rc4 | commit 49553c2ef8... | Linus Torvalds | 15 years |
v2.6.36-rc3 | commit 2bfc96a127... | Linus Torvalds | 15 years |
v2.6.36-rc2 | commit 76be97c1fc... | Linus Torvalds | 15 years |
v2.6.36-rc1 | commit da5cabf80e... | Linus Torvalds | 15 years |
v2.6.35 | commit 9fe6206f40... | Linus Torvalds | 15 years |
v2.6.35-rc6 | commit b37fa16e78... | Linus Torvalds | 15 years |
v2.6.35-rc5 | commit 1c5474a65b... | Linus Torvalds | 15 years |
v2.6.35-rc4 | commit 815c4163b6... | Linus Torvalds | 15 years |
v2.6.35-rc3 | commit 7e27d6e778... | Linus Torvalds | 15 years |
v2.6.35-rc2 | commit e44a21b726... | Linus Torvalds | 15 years |
v2.6.35-rc1 | commit 67a3e12b05... | Linus Torvalds | 15 years |
2010.1 | commit 7c1ff4c544... | Andrea Bastoni | 15 years |
v2.6.34 | commit e40152ee1e... | Linus Torvalds | 15 years |
v2.6.33.4 | commit 4640b4e7d9... | Greg Kroah-Hartman | 15 years |
v2.6.34-rc7 | commit b57f95a382... | Linus Torvalds | 15 years |
v2.6.34-rc6 | commit 66f41d4c5c... | Linus Torvalds | 15 years |
v2.6.33.3 | commit 3e7ad8ed97... | Greg Kroah-Hartman | 15 years |
v2.6.34-rc5 | commit 01bf0b6457... | Linus Torvalds | 15 years |
v2.6.34-rc4 | commit 0d0fb0f9c5... | Linus Torvalds | 15 years |
v2.6.33.2 | commit 19f00f070c... | Greg Kroah-Hartman | 15 years |
v2.6.34-rc3 | commit 2eaa9cfdf3... | Linus Torvalds | 15 years |
v2.6.34-rc2 | commit 220bf991b0... | Linus Torvalds | 15 years |
v2.6.33.1 | commit dbdafe5ccf... | Greg Kroah-Hartman | 15 years |
v2.6.34-rc1 | commit 57d54889cd... | Linus Torvalds | 16 years |
v2.6.33 | commit 60b341b778... | Linus Torvalds | 16 years |
v2.6.33-rc8 | commit 724e6d3fe8... | Linus Torvalds | 16 years |
v2.6.33-rc7 | commit 29275254ca... | Linus Torvalds | 16 years |
v2.6.33-rc6 | commit abe94c756c... | Linus Torvalds | 16 years |
v2.6.33-rc5 | commit 92dcffb916... | Linus Torvalds | 16 years |
v2.6.33-rc4 | commit 7284ce6c9f... | Linus Torvalds | 16 years |
v2.6.33-rc3 | commit 74d2e4f8d7... | Linus Torvalds | 16 years |
v2.6.33-rc2 | commit 6b7b284958... | Linus Torvalds | 16 years |
v2.6.33-rc1 | commit 55639353a0... | Linus Torvalds | 16 years |
v2.6.32 | commit 22763c5cf3... | Linus Torvalds | 16 years |
v2.6.32-rc8 | commit 648f4e3e50... | Linus Torvalds | 16 years |
v2.6.32-rc7 | commit 156171c71a... | Linus Torvalds | 16 years |
v2.6.32-rc6 | commit b419148e56... | Linus Torvalds | 16 years |
v2.6.32-rc5 | commit 012abeea66... | Linus Torvalds | 16 years |
v2.6.32-rc4 | commit 161291396e... | Linus Torvalds | 16 years |
v2.6.32-rc3 | commit 374576a8b6... | Linus Torvalds | 16 years |
v2.6.32-rc1 | commit 17d857be64... | Linus Torvalds | 16 years |
v2.6.32-rc2 | commit 17d857be64... | Linus Torvalds | 16 years |
v2.6.31 | commit 74fca6a428... | Linus Torvalds | 16 years |
v2.6.31-rc9 | commit e07cccf404... | Linus Torvalds | 16 years |
v2.6.31-rc8 | commit 326ba5010a... | Linus Torvalds | 16 years |
v2.6.31-rc7 | commit 422bef879e... | Linus Torvalds | 16 years |
v2.6.31-rc6 | commit 64f1607ffb... | Linus Torvalds | 16 years |
v2.6.31-rc5 | commit ed680c4ad4... | Linus Torvalds | 16 years |
v2.6.31-rc4 | commit 4be3bd7849... | Linus Torvalds | 16 years |
v2.6.31-rc3 | commit 6847e154e3... | Linus Torvalds | 16 years |
v2.6.31-rc2 | commit 8e4a718ff3... | Linus Torvalds | 16 years |
v2.6.31-rc1 | commit 28d0325ce6... | Linus Torvalds | 16 years |
v2.6.30 | commit 07a2039b8e... | Linus Torvalds | 16 years |
v2.6.30-rc8 | commit 9fa7eb283c... | Linus Torvalds | 16 years |
v2.6.30-rc7 | commit 59a3759d0f... | Linus Torvalds | 16 years |
v2.6.30-rc6 | commit 1406de8e11... | Linus Torvalds | 16 years |
v2.6.30-rc5 | commit 091bf7624d... | Linus Torvalds | 16 years |
v2.6.30-rc4 | commit 091438dd56... | Linus Torvalds | 16 years |
v2.6.30-rc3 | commit 0910697403... | Linus Torvalds | 16 years |
v2.6.30-rc2 | commit 0882e8dd3a... | Linus Torvalds | 16 years |
v2.6.30-rc1 | commit 577c9c456f... | Linus Torvalds | 16 years |
v2.6.29 | commit 8e0ee43bc2... | Linus Torvalds | 16 years |
v2.6.29-rc8 | commit 041b62374c... | Linus Torvalds | 17 years |
v2.6.29-rc7 | commit fec6c6fec3... | Linus Torvalds | 17 years |
v2.6.29-rc6 | commit 20f4d6c3a2... | Linus Torvalds | 17 years |
v2.6.29-rc5 | commit d2f8d7ee1a... | Linus Torvalds | 17 years |
v2.6.29-rc4 | commit 8e4921515c... | Linus Torvalds | 17 years |
v2.6.29-rc3 | commit 18e352e4a7... | Linus Torvalds | 17 years |
v2.6.29-rc2 | commit 1de9e8e70f... | Linus Torvalds | 17 years |
v2.6.29-rc1 | commit c59765042f... | Linus Torvalds | 17 years |
v2.6.28 | commit 4a6908a3a0... | Linus Torvalds | 17 years |
v2.6.28-rc9 | commit 929096fe9f... | Linus Torvalds | 17 years |
v2.6.28-rc8 | commit 8b1fae4e42... | Linus Torvalds | 17 years |
v2.6.28-rc7 | commit 061e41fdb5... | Linus Torvalds | 17 years |
v2.6.28-rc6 | commit 13d428afc0... | Linus Torvalds | 17 years |
v2.6.28-rc5 | commit 9bf1a2445f... | Linus Torvalds | 17 years |
v2.6.28-rc4 | commit f7160c7573... | Linus Torvalds | 17 years |
v2.6.28-rc3 | commit 45beca08dd... | Linus Torvalds | 17 years |
v2.6.28-rc2 | commit 0173a3265b... | Linus Torvalds | 17 years |
v2.6.28-rc1 | commit 57f8f7b60d... | Linus Torvalds | 17 years |
v2.6.27 | commit 3fa8749e58... | Linus Torvalds | 17 years |
v2.6.27-rc9 | commit 4330ed8ed4... | Linus Torvalds | 17 years |
v2.6.27-rc8 | commit 94aca1dac6... | Linus Torvalds | 17 years |
v2.6.27-rc7 | commit 72d31053f6... | Linus Torvalds | 17 years |
v2.6.27-rc6 | commit adee14b2e1... | Linus Torvalds | 17 years |
v2.6.27-rc5 | commit 24342c34a0... | Linus Torvalds | 17 years |
v2.6.27-rc4 | commit 6a55617ed5... | Linus Torvalds | 17 years |
v2.6.27-rc3 | commit 30a2f3c60a... | Linus Torvalds | 17 years |
v2.6.27-rc2 | commit 0967d61ea0... | Linus Torvalds | 17 years |
v2.6.27-rc1 | commit 6e86841d05... | Linus Torvalds | 17 years |
v2.6.26 | commit bce7f793da... | Linus Torvalds | 17 years |
v2.6.26-rc9 | commit b7279469d6... | Linus Torvalds | 17 years |
commit 543cf4cb3f... | Linus Torvalds | 17 years |
for (i = 0;commit d70ac829b7...Linus Torvalds |
while (!list_empty(hash_list)) {
record = (struct jbd_revoke_record_s | commit 53c8ba9540... | Linus Torvalds | 17 years |
v2.6.26-rc4 |
if (descriptor)
flush_descriptor(journal, descriptor, offset);
jbd_debug(1, "Wrote %d revoke records\n", count);
}
/*
* Write out one revoke record. We need to create a new descriptor
* block if the old one is full or if we have not already created one.
*/
static void write_one_revoke_record(journal_t *journal,
transaction_t *transaction,
struct journal_head **descriptorp,
int *offsetp,
struct jbd_revoke_record_s *record)
{
struct journal_head *descriptor;
int offset;
journal_header_t *header;
/* If we are already aborting, this all becomes a noop. We
still need to go round the loop in
journal_write_revoke_records in order to free all of the
revoke records: only the IO to the journal is omitted. */
if (is_journal_aborted(journal))
return;
descriptor = *descriptorp;
offset = *offsetp;
/* Make sure we have a descriptor with space left for the record */
if (descriptor) {
if (offset == journal->j_blocksize) {
flush_descriptor(journal, descriptor, offset);
descriptor = NULL;
}
}
if (!descriptor) {
descriptor = journal_get_descriptor_buffer(journal);
if (!descriptor)
return;
header = (journal_header_t *) &jh2bh(descriptor)->b_data[0];
header->h_magic = cpu_to_be32(JFS_MAGIC_NUMBER);
header->h_blocktype = cpu_to_be32(JFS_REVOKE_BLOCK);
header->h_sequence = cpu_to_be32(transaction->t_tid);
/* Record it so that we can wait for IO completion later */
JBUFFER_TRACE(descriptor, "file as BJ_LogCtl");
journal_file_buffer(descriptor, transaction, BJ_LogCtl);
offset = sizeof(journal_revoke_header_t);
*descriptorp = descriptor;
}
* ((__be32 *)(&jh2bh(descriptor)->b_data[offset])) =
cpu_to_be32(record->blocknr);
offset += 4;
*offsetp = offset;
}
/*
* Flush a revoke descriptor out to the journal. If we are aborting,
* this is a noop; otherwise we are generating a buffer which needs to
* be waited for during commit, so it has to go onto the appropriate
* journal buffer list.
*/
static void flush_descriptor(journal_t *journal,
struct journal_head *descriptor,
int offset)
{
journal_revoke_header_t *header;
struct buffer_head *bh = jh2bh(descriptor);
if (is_journal_aborted(journal)) {
put_bh(bh);
return;
}
header = (journal_revoke_header_t *) jh2bh(descriptor)->b_data;
header->r_count = cpu_to_be32(offset);
set_buffer_jwrite(bh);
BUFFER_TRACE(bh, "write");
set_buffer_dirty(bh);
ll_rw_block(SWRITE, 1, &bh);
}
#endif
/*
* Revoke support for recovery.
*
* Recovery needs to be able to:
*
* record all revoke records, including the tid of the latest instance
* of each revoke in the journal
*
* check whether a given block in a given transaction should be replayed
* (ie. has not been revoked by a revoke record in that or a subsequent
* transaction)
*
* empty the revoke table after recovery.
*/
/*
* First, setting revoke records. We create a new revoke record for
* every block ever revoked in the log as we scan it for recovery, and
* we update the existing records if we find multiple revokes for a
* single block.
*/
int journal_set_revoke(journal_t *journal,
unsigned long blocknr,
tid_t sequence)
{
struct jbd_revoke_record_s *record;
record = find_revoke_record(journal, blocknr);
if (record) {
/* If we have multiple occurrences, only record the
* latest sequence number in the hashed record */
if (tid_gt(sequence, record->sequence))
record->sequence = sequence;
return 0;
}
return insert_revoke_hash(journal, blocknr, sequence);
}
/*
* Test revoke records. For a given block referenced in the log, has
* that block been revoked? A revoke record with a given transaction
* sequence number revokes all blocks in that transaction and earlier
* ones, but later transactions still need replayed.
*/
int journal_test_revoke(journal_t *journal,
unsigned long blocknr,
tid_t sequence)
{
struct jbd_revoke_record_s *record;
record = find_revoke_record(journal, blocknr);
if (!record)
return 0;
if (tid_gt(sequence, record->sequence))
return 0;
return 1;
}
/*
* Finally, once recovery is over, we need to clear the revoke table so
* that it can be reused by the running filesystem.
*/
void journal_clear_revoke(journal_t *journal)
{
int i;
struct list_head *hash_list;
struct jbd_revoke_record_s *record;
struct jbd_revoke_table_s *revoke;
revoke = journal->j_revoke;
for (i = 0; i < revoke->hash_size; i++) {
hash_list = &revoke->hash_table[i];
while (!list_empty(hash_list)) {
record = (struct jbd_revoke_record_s*) hash_list->next;
list_del(&record->hash);
kmem_cache_free(revoke_record_cache, record);
}
}
}
|