Ticket #40 (assigned enhancement)

Opened 4 years ago

Last modified 8 months ago

Alternative approach to tracking free blocks in btrees

Reported by: olly Owned by: olly
Priority: low Milestone:
Component: Backend-Chert Version: SVN trunk
Severity: minor Keywords:
Cc: Blocked By:
Operating System: All Blocking:

Description (last modified by olly) (diff)

Use chains of free blocks rather than a bitmap - then we can store many old revisions more cheaply (just the space they actually need, not a whole bitmap for each one too). Then readers use fcntl locking on a single byte corresponding to the revision they're using (bytes off the end of the file can be locked, and shared locks on read-only files are ok). Then a writer would only delete old revisions for which it could obtain an exclusive lock (otherwise it would preserve them).

The Btree manager is generally written with multiple old revisions in mind, so this shouldn't be a huge project.

Attachments

betterdebug.patch (0.6 kB) - added by olly 20 months ago.
Debug tracing tweaks to help investigate this

Change History

Changed 4 years ago by olly

  • status changed from new to assigned
  • severity changed from blocker to normal

Changed 3 years ago by olly

  • component changed from other to Backend-Flint

Reassigned to the flint backend.

The fcntl locking issue is now addressed (in flint).

I've also worked out how to update freelists atomically and cheaply.

Changed 22 months ago by olly

  • rep_platform changed from Other to All
  • version changed from other to SVN HEAD
  • op_sys changed from other to All
  • severity changed from normal to enhancement

Changed 20 months ago by olly

  • priority changed from high to low

Changed 20 months ago by olly

Debug tracing tweaks to help investigate this

Changed 20 months ago by olly

  • attachments.isobsolete changed from 0 to 1

(From update of attachment 56) Gah! Attachment meant for a different bug. I hate bugzilla.

Changed 20 months ago by trac

  • platform set to All

Changed 8 months ago by olly

  • component changed from Backend-Flint to Backend-Chert
  • description modified (diff)

Remarking for chert...

Note: See TracTickets for help on using tickets.