> its BUG-ing out in kmap_atomic(): Try using the attached patch. It clears up some more kmap->kmap_atomic conversion errors and makes another conversion that I missed. David
diff -ur linux-2.6.9-rc2-mm4/fs/cachefs/journal.c linux-2.6.9-rc2-mm4-fscache/fs/cachefs/journal.c --- linux-2.6.9-rc2-mm4/fs/cachefs/journal.c 2004-09-27 11:23:55.000000000 +0100 +++ linux-2.6.9-rc2-mm4-fscache/fs/cachefs/journal.c 2004-10-04 13:29:58.973852750 +0100 @@ -430,7 +430,7 @@ offset = (trans->index << super->sb->s_blocksize_bits) & ~PAGE_MASK; jentry = kmap_atomic(trans->jpage, KM_USER0) + offset; memcpy(jentry, trans->jentry, super->sb->s_blocksize); - kunmap_atomic(trans->jpage, KM_USER0); + kunmap_atomic(jentry, KM_USER0); SetPageWriteback(trans->jpage); diff -ur linux-2.6.9-rc2-mm4/fs/cachefs/replay.c linux-2.6.9-rc2-mm4-fscache/fs/cachefs/replay.c --- linux-2.6.9-rc2-mm4/fs/cachefs/replay.c 2004-09-27 11:23:56.000000000 +0100 +++ linux-2.6.9-rc2-mm4-fscache/fs/cachefs/replay.c 2004-10-04 13:33:04.681820540 +0100 @@ -1638,7 +1638,7 @@ cachefs_trans_replays_effect(trans, ptrblock, "ptr"); } - kunmap_atomic(ptrpage, KM_USER0); + kunmap_atomic(pbix, KM_USER0); } /* make sure the vjournal entry is cleared */ diff -ur linux-2.6.9-rc2-mm4/fs/cachefs/vjournal.c linux-2.6.9-rc2-mm4-fscache/fs/cachefs/vjournal.c --- linux-2.6.9-rc2-mm4/fs/cachefs/vjournal.c 2004-09-27 11:23:56.000000000 +0100 +++ linux-2.6.9-rc2-mm4-fscache/fs/cachefs/vjournal.c 2004-10-04 13:34:40.114592740 +0100 @@ -307,7 +307,7 @@ ptr = kmap_atomic(vjentry->vpage, KM_USER0); memset(ptr + vjentry->ventry, 0, sizeof(struct cachefs_ondisc_validity_journal)); - kunmap_atomic(vjentry->vpage, KM_USER0); + kunmap_atomic(ptr, KM_USER0); /* queue the transaction to be written to disc */ cachefs_trans_commit(trans); @@ -606,10 +606,10 @@ /* get the block number for this level */ if (!step->bix) { - u8 *data = kmap(step[1].page); + u8 *data = kmap_atomic(step[1].page, KM_USER0); step->bix = *(cachefs_blockix_t *)(data + step->offset); - kunmap(step[1].page); + kunmap_atomic(data, KM_USER0); } /* allocate this block if necessary */