All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] ceph: implement new-style ENOSPC handling in kcephfs
@ 2017-02-09 14:48 Jeff Layton
  2017-02-09 14:48 ` [PATCH v4 1/6] libceph: allow requests to return immediately on full conditions if caller wishes Jeff Layton
                   ` (5 more replies)
  0 siblings, 6 replies; 16+ messages in thread
From: Jeff Layton @ 2017-02-09 14:48 UTC (permalink / raw)
  To: ceph-devel; +Cc: zyan, sage, idryomov, jspray

v4: eliminate map_cb and just call ceph_osdc_abort_on_full directly
Revert earlier patch flagging individual pages with error on writeback
failure. Add mechanism to force synchronous writes when writes start
failing, and reallowing async writes when they succeed.

v3: track "abort_on_full" behavior with a new bool in osd request
instead of a protocol flag. Remove some extraneous arguments from
various functions. Don't export have_pool_full, call it from the
abort_on_full callback instead.

v2: teach libcephfs how to hold on to requests until the right map
epoch appears, instead of delaying cap handling in the cephfs layer.

Ok, with this set, I think we have proper -ENOSPC handling for all
different write types (direct, sync, async buffered, etc...). -ENOSPC
conditions.

First I trimmed down the original set to have less tendrils in ceph.ko
when we hit a full condition. Most of the machinery for that is now in
libceph.ko, and cephfs just sets the r_abort_on_full flag on the
appropriate calls.

For buffered, synchronous writes, it also reverts a patch that flags
individual pages with the PG_error bit on writeback failure. I don't
think we want that for the reasons described in the patch.

Finally, this also adds a new mechanism that forces synchronous writes
on an inode when write requests start failing.

This patchset is an updated version of the patch series originally
done by John Spray and posted here:

    http://www.spinics.net/lists/ceph-devel/msg21257.html

This version incorporates changes based on Ilya's cursory review
yesterday. It also cleans up the handling of requests that should
be aborted on a full condition. The patch that exports have_pool_full
has also been dropped since it's no longer needed.

Jeff Layton (6):
  libceph: allow requests to return immediately on full conditions if
    caller wishes
  libceph: abort already submitted but abortable requests when map or
    pool goes full
  libceph: add an epoch_barrier field to struct ceph_osd_client
  ceph: handle epoch barriers in cap messages
  Revert "ceph: SetPageError() for writeback pages if writepages fails"
  ceph: when seeing write errors on an inode, switch to sync writes

 fs/ceph/addr.c                  | 14 ++++--
 fs/ceph/caps.c                  | 17 ++++++--
 fs/ceph/file.c                  | 50 ++++++++++++++++------
 fs/ceph/mds_client.c            | 20 +++++++++
 fs/ceph/mds_client.h            |  7 ++-
 fs/ceph/super.h                 | 26 +++++++++++
 include/linux/ceph/osd_client.h |  3 ++
 net/ceph/osd_client.c           | 95 +++++++++++++++++++++++++++++++++++++----
 8 files changed, 201 insertions(+), 31 deletions(-)

-- 
2.9.3


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2017-02-10 17:17 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-09 14:48 [PATCH v4 0/6] ceph: implement new-style ENOSPC handling in kcephfs Jeff Layton
2017-02-09 14:48 ` [PATCH v4 1/6] libceph: allow requests to return immediately on full conditions if caller wishes Jeff Layton
2017-02-10 11:41   ` Yan, Zheng
2017-02-10 11:52     ` Jeff Layton
2017-02-10 12:37       ` Ilya Dryomov
2017-02-10 12:44         ` Jeff Layton
2017-02-09 14:48 ` [PATCH v4 2/6] libceph: abort already submitted but abortable requests when map or pool goes full Jeff Layton
2017-02-10 12:01   ` Yan, Zheng
2017-02-10 12:07     ` Jeff Layton
2017-02-10 12:59       ` Ilya Dryomov
2017-02-09 14:48 ` [PATCH v4 3/6] libceph: add an epoch_barrier field to struct ceph_osd_client Jeff Layton
2017-02-09 14:48 ` [PATCH v4 4/6] ceph: handle epoch barriers in cap messages Jeff Layton
2017-02-09 14:48 ` [PATCH v4 5/6] Revert "ceph: SetPageError() for writeback pages if writepages fails" Jeff Layton
2017-02-10 11:22   ` Yan, Zheng
2017-02-10 11:53     ` Jeff Layton
2017-02-09 14:48 ` [PATCH v4 6/6] ceph: when seeing write errors on an inode, switch to sync writes Jeff Layton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.