GJournal (hopefully) final patches.

Craig Boston craig at xfoil.gank.org
Thu Aug 10 18:47:36 UTC 2006


Hi,

It's great to see this project so close to completion!  I'm trying it
out on a couple machines to see how it goes.

A few comments and questions:

* It took me a little by surprise that it carves 1G out of the device
  for the journal.  Depending on the size of the device that can be a
  pretty hefty price to pay (and I didn't see any mention of it in the
  setup notes).  For a couple of my smaller filesystems I reduced it to
  512MB.  Perhaps some algorithm for auto-sizing the journal based on
  the size / expected workload of the device would be in order?

* Attached is a quick patch for geom_eli to allow it to pass BIO_FLUSH
  down to its backing device.  It seems like the right thing to do and
  fixes the "BIO_FLUSH not supported" warning on my laptop that uses a
  geli encrypted disk.

* On a different system, however, it complains about it even on a raw
  ATA slice:

    atapci1: <Intel ICH4 UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xffa0-0xffaf at device 31.1 on pci0
    ata0: <ATA channel 0> on atapci1
    ad0: 114473MB <WDC WD1200JB-00CRA1 17.07W17> at ata0-master UDMA100
    GEOM_JOURNAL: BIO_FLUSH not supported by ad0s1e.

  It seems like a reasonably modern controller and disk, at least it
  should be capable of issuing a cache flush command.  Not sure why it
  doesn't like it :/

* How "close" does the filesystem need to be to the gjournal device in
  order for the UFS hooks to work?  Directly on it?

  The geom stack on my laptop currently looks something like this:

  [geom_disk] ad0 <- [geom_eli] ad0.eli <- [geom_gpt] ad0.elip6 <-
  [geom_label] gjtest <- [geom_journal] gjtest.journal <- UFS

  I was wondering if an arrangement like this would work:

  [geom_journal] ad0p6.journal <- [geom_eli] ad0p6.journaleli <- UFS

  and if it would be any more efficient (journal the encrypted data
  rather than encrypt the journal).  Or even gjournal the whole disk at
  once?

Haven't been brave enough to try gjournal on root yet, but my /usr and
/compile (src, obj, ports) partitions are already on it so I'm sure I'll
try it soon ;)

Craig
-------------- next part --------------
=== sys/geom/eli/g_eli.c
==================================================================
--- sys/geom/eli/g_eli.c	(revision 23)
+++ sys/geom/eli/g_eli.c	(local)
@@ -340,6 +340,7 @@
 	case BIO_READ:
 	case BIO_WRITE:
 	case BIO_GETATTR:
+	case BIO_FLUSH:
 		break;
 	case BIO_DELETE:
 		/*
@@ -375,6 +376,7 @@
 		wakeup(sc);
 		break;
 	case BIO_GETATTR:
+	case BIO_FLUSH:
 		cbp->bio_done = g_std_done;
 		cp = LIST_FIRST(&sc->sc_geom->consumer);
 		cbp->bio_to = cp->provider;


More information about the freebsd-current mailing list