[Linux-cachefs] Re: [Cachefs] FYI: Higmem crash in cachefs
David Howells
dhowells at redhat.com
Mon Oct 4 12:41:10 UTC 2004
> 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
-------------- next part --------------
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 */
More information about the Linux-cachefs
mailing list