ceph: throw out dirty caps metadata, data on session teardown
authorSage Weil <sage@newdream.net>
Mon, 10 May 2010 23:12:25 +0000 (16:12 -0700)
committerSage Weil <sage@newdream.net>
Mon, 17 May 2010 22:25:37 +0000 (15:25 -0700)
commit6c99f2545dbb9e53afe0d1d037c51ab04ef1ff4e
tree0f6dae93a1970751ffd144431664ac9ed9141014
parent7e70f0ed9f3ee47394576be86c593f66832413e9
ceph: throw out dirty caps metadata, data on session teardown

The remove_session_caps() helper is called when an MDS closes out our
session (either normally, or as a result of a failed reconnect), and when
we tear down state for umount.  If we remove the last cap, and there are
no cap migrations in progress, then there is little hope of us flushing
out that data to the mds (without heroic efforts to reconnect and flush).

So, to avoid leaving inodes pinned (due to dirty state) and crashing after
umount, throw out dirty caps state and unpin the inodes.  Print a warning
to the console so we know something was lost.

NOTE: Although we drop wrbuffer refs, we don't actually mark pages clean;
maybe a truncate should be queued?

Signed-off-by: Sage Weil <sage@newdream.net>
fs/ceph/mds_client.c