rv = AOP_WRITEPAGE_ACTIVATE;
else {
lafs_iolock_written(&b->b);
- /* block might have been invalidated while we waited */
- if (test_bit(B_Dirty, &b->b.flags))
+ /* block might have been invalidated,
+ * or Pinned, while we waited */
+ /* FIXME do I need to test if the iblock has appeared
+ * while we waited too??
+ */
+ if (test_bit(B_PinPending, &b->b.flags)) {
+ rv = AOP_WRITEPAGE_ACTIVATE;
+ lafs_iounlock_block(&b->b);
+ } else if (test_bit(B_Dirty, &b->b.flags))
lafs_cluster_allocate(&b->b, 0);
else
lafs_iounlock_block(&b->b);