rv = AOP_WRITEPAGE_ACTIVATE;
else {
lafs_iolock_written(&b->b);
- lafs_cluster_allocate(&b->b, 0);
+ /* block might have been invalidated while we waited */
+ if (test_bit(B_Dirty, &b->b.flags))
+ lafs_cluster_allocate(&b->b, 0);
+ else
+ lafs_iounlock_block(&b->b);
}
}
putdref(b, MKREF(writepage));
MKREF(writepageflush));
if (test_bit(B_Dirty, &b->b.flags)) {
lafs_iolock_written(&b->b);
- lafs_cluster_allocate(&b->b, 0);
+ /* block might have been invalidated while we waited */
+ if (test_bit(B_Dirty, &b->b.flags))
+ lafs_cluster_allocate(&b->b, 0);
+ else
+ lafs_iounlock_block(&b->b);
}
putdref(b, MKREF(writepageflush));
}