spin_lock(&object->lock);
        cookie = object->cookie;
 
-       if (!fscache_object_is_active(object) || !cookie) {
+       if (!fscache_object_is_active(object)) {
+               /* If we get here, then the on-disk cache object likely longer
+                * exists, so we should just cancel this write operation.
+                */
                spin_unlock(&object->lock);
-               _leave("");
+               op->op.state = FSCACHE_OP_ST_CANCELLED;
+               _leave(" [inactive]");
+               return;
+       }
+
+       if (!cookie) {
+               /* If we get here, then the cookie belonging to the object was
+                * detached, probably by the cookie being withdrawn due to
+                * memory pressure, which means that the pages we might write
+                * to the cache from no longer exist - therefore, we can just
+                * cancel this write operation.
+                */
+               spin_unlock(&object->lock);
+               op->op.state = FSCACHE_OP_ST_CANCELLED;
+               _leave(" [cancel] op{f=%lx s=%u} obj{s=%u f=%lx}",
+                      _op->flags, _op->state, object->state, object->flags);
                return;
        }