libceph: abort already submitted but abortable requests when map or pool goes full
authorJeff Layton <jlayton@redhat.com>
Tue, 4 Apr 2017 12:39:39 +0000 (08:39 -0400)
committerIlya Dryomov <idryomov@gmail.com>
Thu, 4 May 2017 07:19:21 +0000 (09:19 +0200)
commitfc36d0a42c19870e57a542c2dd0972185584d407
treeedcd29278e2f2260d3efd0ef3f462540af0f2f6c
parenta1f4020aab10a6bddb2d061c960ebe52cdfa30b5
libceph: abort already submitted but abortable requests when map or pool goes full

When a Ceph volume hits capacity, a flag is set in the OSD map to
indicate that, and a new map is sprayed around the cluster. With cephfs
we want it to shut down any abortable requests that are in progress with
an -ENOSPC error as they'd just hang otherwise.

Add a new ceph_osdc_abort_on_full helper function to handle this. It
will first check whether there is an out-of-space condition in the
cluster and then walk the tree and abort any request that has
r_abort_on_full set with a -ENOSPC error. Call this new function
directly whenever we get a new OSD map.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
net/ceph/osd_client.c