X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fjbd%2Frevoke.c;h=d327a598f8612843fddcf91be7df805e23acbc70;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=0bb60dba76cc7c3348848abd0a0798ad6a4638aa;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/fs/jbd/revoke.c b/fs/jbd/revoke.c index 0bb60dba7..d327a598f 100644 --- a/fs/jbd/revoke.c +++ b/fs/jbd/revoke.c @@ -376,7 +376,12 @@ int journal_revoke(handle_t *handle, unsigned long blocknr, first having the revoke cancelled: it's illegal to free a block twice without allocating it in between! */ if (bh) { - J_ASSERT_BH(bh, !buffer_revoked(bh)); + if (!J_EXPECT_BH(bh, !buffer_revoked(bh), + "inconsistent data on disk")) { + if (!bh_in) + brelse(bh); + return -EIO; + } set_buffer_revoked(bh); set_buffer_revokevalid(bh); if (bh_in) {