]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
truncate bug; stupid
authorsage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 1 Mar 2006 07:17:05 +0000 (07:17 +0000)
committersage <sage@29311d96-e01e-0410-9327-a35deaab8ce9>
Wed, 1 Mar 2006 07:17:05 +0000 (07:17 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@706 29311d96-e01e-0410-9327-a35deaab8ce9

ceph/ebofs/BlockDevice.cc
ceph/ebofs/Ebofs.cc
ceph/ebofs/Onode.h

index 506b3acb3a4ed1d2514010db3ea8f422a71fc872..cd73a849f7f1bf3ad5b53b44eb35611dc19dc90a 100644 (file)
@@ -557,7 +557,7 @@ int BlockDevice::open(kicker *idle)
        fd = 0;
        return -1;
   }
-
+  cout << fd << endl;
   // lock
   /*int r = ::flock(fd, LOCK_EX);
   if (r < 0) {
index a9ac581f453a070739924a3e2eb07cc22cb4343c..39178f7dd1301def940816745036afba5313537a 100644 (file)
@@ -38,8 +38,6 @@ char *nice_blocks(block_t b)
 
 int Ebofs::mount()
 {
-  dout(2) << "mounting " << dev.get_device_name() << " " << dev.get_num_blocks() << " blocks, " << nice_blocks(dev.get_num_blocks()) << endl;
-
   ebofs_lock.Lock();
   assert(!mounted);
 
@@ -49,6 +47,8 @@ int Ebofs::mount()
        return r;
   }
 
+  dout(2) << "mounting " << dev.get_device_name() << " " << dev.get_num_blocks() << " blocks, " << nice_blocks(dev.get_num_blocks()) << endl;
+
   // read super
   bufferptr bp1 = bufferpool.alloc(EBOFS_BLOCK_SIZE);
   bufferptr bp2 = bufferpool.alloc(EBOFS_BLOCK_SIZE);
@@ -1866,6 +1866,16 @@ int Ebofs::truncate(object_t oid, off_t size)
          for (unsigned i=0; i<extra.size(); i++)
                allocator.release(extra[i]);
        }
+
+       // update uncommitted
+       interval_set<block_t> uncom;
+       if (nblocks > 0) {
+         interval_set<block_t> left;
+         left.insert(0, nblocks);
+         uncom.intersection_of(left, on->uncommitted);
+       }
+       dout(10) << "uncommitted was " << on->uncommitted << "  now " << uncom << endl;
+       on->uncommitted = uncom;
   }
   else {
        assert(size == on->object_size);
index 9a9f1a1732b6c9fe172d1ddee7e3f139c79f780b..900b5bf7ae9d345440221e2c3c6cf63883add651 100644 (file)
@@ -342,6 +342,7 @@ inline ostream& operator<<(ostream& out, Onode& on)
   if (on.is_dirty()) out << " dirty";
   if (on.is_dangling()) out << " dangling";
   if (on.is_deleted()) out << " deleted";
+  out << " uncom=" << on.uncommitted;
   //  out << " " << &on;
   out << ")";
   return out;