From 9b3bf5c588690aea6920887cf55dbc02e80077e7 Mon Sep 17 00:00:00 2001 From: sage Date: Mon, 2 Jan 2006 06:33:48 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@563 29311d96-e01e-0410-9327-a35deaab8ce9 --- ceph/ebofs/Ebofs.cc | 3 ++- ceph/osd/OSD.cc | 36 +++++++++++++++++++++--------------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/ceph/ebofs/Ebofs.cc b/ceph/ebofs/Ebofs.cc index a89d7c784a592..d1f6a5c3ce0d8 100644 --- a/ceph/ebofs/Ebofs.cc +++ b/ceph/ebofs/Ebofs.cc @@ -1681,7 +1681,8 @@ int Ebofs::write(object_t oid, } // out of space? - unsigned max = len / EBOFS_BLOCK_SIZE + 10; + //unsigned max = ((len+off) - MIN(off, on->object_size)) / EBOFS_BLOCK_SIZE + 10; + unsigned max = (len+off) / EBOFS_BLOCK_SIZE + 10; // very conservative; assumes we have to rewrite max += dirty_onodes.size() + dirty_cnodes.size(); if (max >= free_blocks) { dout(1) << "write failing, only " << free_blocks << " blocks free, may need up to " << max << endl; diff --git a/ceph/osd/OSD.cc b/ceph/osd/OSD.cc index 61a3506b66cb9..f151d6fc35faf 100644 --- a/ceph/osd/OSD.cc +++ b/ceph/osd/OSD.cc @@ -2165,33 +2165,39 @@ int OSD::apply_write(MOSDOp *op, version_t v, Context *onsync) //bl.claim( op->get_data() ); // write + int r = 0; if (onsync) { if (g_conf.fake_osd_sync) { // fake a delayed sync - store->write(op->get_oid(), - op->get_length(), - op->get_offset(), - bl, - false); + r = store->write(op->get_oid(), + op->get_length(), + op->get_offset(), + bl, + false); g_timer.add_event_after(1.0, onsync); } else { // for real - store->write(op->get_oid(), - op->get_length(), - op->get_offset(), - bl, - onsync); + r = store->write(op->get_oid(), + op->get_length(), + op->get_offset(), + bl, + onsync); } } else { // normal business - store->write(op->get_oid(), - op->get_length(), - op->get_offset(), - bl, - false); + r = store->write(op->get_oid(), + op->get_length(), + op->get_offset(), + bl, + false); } + if (r < 0) { + dout(0) << "apply_write failed with r = " << r << "... disk full?" << endl; + } + assert(r >= 0); // disk full? + // set version store->setattr(op->get_oid(), "version", &v, sizeof(v)); -- 2.39.5