diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.cpp b/bindings/java/jni/dataModel_SleuthkitJNI.cpp
index 0384cfdc3d35d0df35c621c11a1bac5340a2c9df..a3561d9901fb595ca85672298ad08a20206c04c5 100644
--- a/bindings/java/jni/dataModel_SleuthkitJNI.cpp
+++ b/bindings/java/jni/dataModel_SleuthkitJNI.cpp
@@ -150,6 +150,17 @@ castVsPartInfo(JNIEnv * env, jlong ptr)
     return lcl;
 }
 
+static TSK_POOL_INFO *
+castPoolInfo(JNIEnv * env, jlong ptr)
+{
+    TSK_POOL_INFO *lcl = (TSK_POOL_INFO *)ptr;
+    if (!lcl || lcl->tag != TSK_POOL_INFO_TAG) {
+        setThrowTskCoreError(env, "Invalid TSK_POOL_INFO object");
+        return 0;
+    }
+    return lcl;
+}
+
 static TSK_FS_INFO *
 castFsInfo(JNIEnv * env, jlong ptr)
 {
@@ -1412,6 +1423,82 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_openVolNat(JNIEnv * env,
     return (jlong) vol_part_info;
 }
 
+/*
+* Open pool with the given offset
+* @return the created TSK_POOL_INFO pointer
+* @param env pointer to java environment this was called from
+* @param obj the java object this was called from
+* @param a_img_info the pointer to the parent img object
+* @param offset the offset in bytes to the pool
+* @param pool_type the type of pool
+*/
+JNIEXPORT jlong JNICALL
+Java_org_sleuthkit_datamodel_SleuthkitJNI_openPoolNat(JNIEnv * env,
+    jclass obj, jlong a_img_info, jlong offset, jlong pool_type)
+{
+    printf("@@@ openPoolNat\n");
+    TSK_IMG_INFO *img_info = castImgInfo(env, a_img_info);
+    if (img_info == 0) {
+        //exception already set
+        return 0;
+    }
+    printf("  Casted img_info\n");
+
+    // TODO - use pool type
+    const TSK_POOL_INFO *pool = tsk_pool_open_img_sing(img_info, offset * img_info->sector_size, TSK_POOL_TYPE_DETECT);
+    if (pool == NULL) {
+        printf("  Failed to load pool\n");
+        tsk_error_print(stderr);
+        if (tsk_error_get_errno() == TSK_ERR_POOL_UNSUPTYPE)
+            tsk_pool_type_print(stderr);
+        setThrowTskCoreError(env, tsk_error_get());
+    }
+    printf("  Loaded pool! Has address 0x%x\n", pool);
+    return (jlong) pool;
+}
+
+/*
+* Open file system with the given offset
+* @return the created TSK_FS_INFO pointer
+* @param env pointer to java environment this was called from
+* @param obj the java object this was called from
+* @param a_img_info the pointer to the parent img object
+* @param fs_offset the offset in bytes to the file system
+*/
+JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsPoolNat
+(JNIEnv * env, jclass obj, jlong a_img_info, jlong fs_offset, jlong a_pool_info, jlong pool_block) {
+    TSK_IMG_INFO *img_info = castImgInfo(env, a_img_info);
+    if (img_info == 0) {
+        //exception already set
+        return 0;
+    }
+
+    printf("@@@ openFsPoolNat - trying to cast pool with address 0x%x\n", a_pool_info);
+    TSK_POOL_INFO *pool_info = castPoolInfo(env, a_pool_info);
+    if (pool_info == 0) {
+        printf("@@@ openFsPoolNat - Invalid cast to pool???\n");
+        fflush(stdout);
+        //exception already set
+        return 0;
+    }
+
+    TSK_FS_INFO *fs_info;
+    printf("Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsPoolNat - pool_block = %lld\n", pool_block);
+    fflush(stdout);
+    printf("  Ok have a pool\n");
+
+    printf("  Making new img_info\n");
+    fflush(stdout);
+    img_info = pool_info->get_img_info(pool_info, pool_block);
+
+    fs_info =
+        tsk_fs_open_img(img_info, (TSK_OFF_T)fs_offset,
+            TSK_FS_TYPE_DETECT);
+    if (fs_info == NULL) {
+        setThrowTskCoreError(env, tsk_error_get());
+    }
+    return (jlong)fs_info;
+}
 
 /*
  * Open file system with the given offset
@@ -1422,32 +1509,13 @@ Java_org_sleuthkit_datamodel_SleuthkitJNI_openVolNat(JNIEnv * env,
  * @param fs_offset the offset in bytes to the file system 
  */
 JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsNat
-    (JNIEnv * env, jclass obj, jlong a_img_info, jlong fs_offset, jlong pool_block) {
+    (JNIEnv * env, jclass obj, jlong a_img_info, jlong fs_offset) {
     TSK_IMG_INFO *img_info = castImgInfo(env, a_img_info);
     if (img_info == 0) {
         //exception already set
         return 0;
     }
     TSK_FS_INFO *fs_info;
-    printf("Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsNat - pool_block = %lld\n", pool_block);
-    fflush(stdout);
-
-    if (pool_block > 0) {
-        printf("  Ok have a pool\n");
-        const TSK_POOL_INFO *pool = tsk_pool_open_img_sing(img_info, fs_offset, TSK_POOL_TYPE_DETECT);
-
-        if (pool == NULL) {
-            tsk_error_print(stderr);
-            if (tsk_error_get_errno() == TSK_ERR_FS_UNSUPTYPE)
-                tsk_pool_type_print(stderr);
-            setThrowTskCoreError(env, tsk_error_get());
-        }
-
-        printf("  Making new img_info\n");
-        fflush(stdout);
-        img_info = pool->get_img_info(pool, pool_block);
-    }
-
     fs_info =
         tsk_fs_open_img(img_info, (TSK_OFF_T) fs_offset,
         TSK_FS_TYPE_DETECT);
diff --git a/bindings/java/jni/dataModel_SleuthkitJNI.h b/bindings/java/jni/dataModel_SleuthkitJNI.h
index ad20cb8e6daca47f049ba7aec1dd32ac17b682ef..ef2523e305ae7421da413c6d6f3daa7968ab457c 100644
--- a/bindings/java/jni/dataModel_SleuthkitJNI.h
+++ b/bindings/java/jni/dataModel_SleuthkitJNI.h
@@ -289,12 +289,28 @@ JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openVolNat
 
 /*
  * Class:     org_sleuthkit_datamodel_SleuthkitJNI
- * Method:    openFsNat
+ * Method:    openPoolNat
  * Signature: (JJJ)J
  */
-JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsNat
+JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openPoolNat
   (JNIEnv *, jclass, jlong, jlong, jlong);
 
+/*
+ * Class:     org_sleuthkit_datamodel_SleuthkitJNI
+ * Method:    openFsNat
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsNat
+  (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class:     org_sleuthkit_datamodel_SleuthkitJNI
+ * Method:    openFsPoolNat
+ * Signature: (JJJJ)J
+ */
+JNIEXPORT jlong JNICALL Java_org_sleuthkit_datamodel_SleuthkitJNI_openFsPoolNat
+  (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
 /*
  * Class:     org_sleuthkit_datamodel_SleuthkitJNI
  * Method:    openFileNat
diff --git a/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java b/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java
index 4d67ef80fb369cbbdcf9e5fdfd5e48f52bbe1315..a511934cd59efa80dae55dd46b1bb55dcda2ecac 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/AbstractContent.java
@@ -193,6 +193,86 @@ public Content getDataSource() throws TskCoreException {
 
 		return myParent.getDataSource();
 	}
+	
+	/**
+	 * Return whether this content has a Pool above it
+	 * 
+	 * @return true if there is a Pool object in the parent structure
+	 * 
+	 * @throws TskCoreException 
+	 */
+	public boolean isPoolContent() throws TskCoreException {
+		Content myParent = getParent();
+		if (myParent == null) {
+			return false;
+		}
+		
+		if (! (myParent instanceof AbstractContent)) {
+			return false;
+		}
+
+		if (myParent instanceof Pool) {
+			return true;
+		}
+		
+		return ((AbstractContent)myParent).isPoolContent();
+	}
+	
+	/**
+	 * Get the pool volume 
+	 * 
+	 * @return the volume above this content and below a Pool object or null if not found
+	 * 
+	 * @throws TskCoreException 
+	 */
+	public Volume getPoolVolume() throws TskCoreException {
+		Content myParent = getParent();
+		if (myParent == null) {
+			return null;
+		}
+		
+		if (! (myParent instanceof AbstractContent)) {
+			return null;
+		}
+		
+		if (myParent instanceof Volume) {
+			// This is potentially it, but need to check that this is a volume under a pool
+			if (((Volume) myParent).isPoolContent()) {
+				return (Volume)myParent;
+			} else {
+				// There are no pools in the hierarchy, so we're done
+				return null;
+			}
+		}
+		
+		// Try one level higher
+		return ((AbstractContent)myParent).getPoolVolume();
+	}	
+	
+	/**
+	 * Get the pool  
+	 * 
+	 * @return the pool above this content or null if not found
+	 * 
+	 * @throws TskCoreException 
+	 */
+	public Pool getPool() throws TskCoreException {
+		Content myParent = getParent();
+		if (myParent == null) {
+			return null;
+		}
+		
+		if (! (myParent instanceof AbstractContent)) {
+			return null;
+		}
+		
+		if (myParent instanceof Pool) {
+			return (Pool)myParent;
+		}
+		
+		// Try one level higher
+		return ((AbstractContent)myParent).getPool();
+	}		
 
 	/**
 	 * Gets handle of SleuthkitCase to which this content belongs
diff --git a/bindings/java/src/org/sleuthkit/datamodel/Content.java b/bindings/java/src/org/sleuthkit/datamodel/Content.java
index caa02b9338ce51eb361d3698d9f2cc61a372f614..89d52f0c5025321fd215d332b0179b2d463b2603 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/Content.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/Content.java
@@ -102,7 +102,7 @@ public interface Content extends SleuthkitVisitableItem {
 	 * @throws TskCoreException if critical error occurred within tsk core
 	 */
 	public Content getDataSource() throws TskCoreException;
-
+	
 	/**
 	 * Gets the child content objects of this content.
 	 *
diff --git a/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java b/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
index 67d23024aa4ac6aabfd8fcae924afbcd5564dab2..f3a82485b4fcfe1a783a2dc073d228c3ac683259 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/FileSystem.java
@@ -30,7 +30,7 @@
 public class FileSystem extends AbstractContent {
 
 	private long imgOffset, blockSize, blockCount, rootInum,
-			firstInum, lastInum, poolBlock;
+			firstInum, lastInum;
 	private TskData.TSK_FS_TYPE_ENUM fsType;
 	private Content parent;
 	private volatile long filesystemHandle = 0;
@@ -51,7 +51,7 @@ public class FileSystem extends AbstractContent {
 	 */
 	protected FileSystem(SleuthkitCase db, long obj_id, String name, long img_offset,
 			TskData.TSK_FS_TYPE_ENUM fs_type, long block_size, long block_count, long root_inum,
-			long first_inum, long last_inum, long poolBlock) {
+			long first_inum, long last_inum) {
 		super(db, obj_id, name);
 		this.imgOffset = img_offset;
 		this.fsType = fs_type;
@@ -60,8 +60,6 @@ protected FileSystem(SleuthkitCase db, long obj_id, String name, long img_offset
 		this.rootInum = root_inum;
 		this.firstInum = first_inum;
 		this.lastInum = last_inum;
-		this.poolBlock = poolBlock;
-		System.out.println("%%% Created new FileSystem object with poolBlock = " + poolBlock);
 	}
 
 	@Override
@@ -95,7 +93,22 @@ long getFileSystemHandle() throws TskCoreException {
 					Content dataSource = getDataSource();
 					if ((dataSource != null) && (dataSource instanceof Image)) {
 						Image image = (Image) dataSource;
-						filesystemHandle = SleuthkitJNI.openFs(image.getImageHandle(), imgOffset, poolBlock, getSleuthkitCase());
+						
+						// Check if this file system is in a pool
+						if (isPoolContent()) {
+							Pool pool = getPool();
+							if (pool == null) {
+								throw new TskCoreException("Error finding pool for file system");
+							}
+							
+							Volume poolVolume = getPoolVolume();
+							if (poolVolume == null) {
+								throw new TskCoreException("File system is in a pool but has no volume");
+							}
+							filesystemHandle = SleuthkitJNI.openFsPool(image.getImageHandle(), imgOffset, pool.getPoolHandle(), poolVolume.getStart(), getSleuthkitCase());
+						} else {
+							filesystemHandle = SleuthkitJNI.openFs(image.getImageHandle(), imgOffset, getSleuthkitCase());
+						}
 					} else {
 						throw new TskCoreException("Data Source of File System is not an image");
 					}
diff --git a/bindings/java/src/org/sleuthkit/datamodel/Pool.java b/bindings/java/src/org/sleuthkit/datamodel/Pool.java
index f0a22ba253dd0945fa84ec941272db2da5bfeee2..cae02f115eaa936e9907562c4ee44502a4119b92 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/Pool.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/Pool.java
@@ -27,7 +27,7 @@
  */
 public class Pool extends AbstractContent {
 
-	private volatile long volumeSystemHandle = 0;
+	private volatile long poolHandle = 0;
 	private long type, imgOffset;
 
 	/**
@@ -80,28 +80,32 @@ public long getOffset() {
 		return imgOffset;
 	}
 
-
+	
 	/**
-	 * get the volume system Handle pointer Open a new handle if needed,
-	 * otherwise resuse the existing handle.
+	 * Lazily loads the internal pool structure: won't be loaded until
+	 * this is called and maintains the handle to it to reuse it
 	 *
-	 * @return volume system Handle pointer
+	 * @return a pool pointer from the sleuthkit
 	 *
-	 * @throws TskException
+	 * @throws TskCoreException exception throw if an internal tsk core error
+	 *                          occurs
 	 */
-	//protected synchronized long getPoolHandle() throws TskCoreException {
-		//if (volumeSystemHandle == 0) {
-		//	Content dataSource = getDataSource();
-		//	if ((dataSource != null) && (dataSource instanceof Image)) {
-		//		Image image = (Image) dataSource;
-		//		volumeSystemHandle = SleuthkitJNI.openVs(image.getImageHandle(), imgOffset);
-		//	} else {
-		//		throw new TskCoreException("Volume System data source is not an image");
-		//	}
-		//}
-
-		//return volumeSystemHandle;
-	//}
+	long getPoolHandle() throws TskCoreException {
+		if (poolHandle == 0) {
+			synchronized (this) {
+				if (poolHandle == 0) {
+					Content dataSource = getDataSource();
+					if ((dataSource != null) && (dataSource instanceof Image)) {
+						Image image = (Image) dataSource;
+						poolHandle = SleuthkitJNI.openPool(image.getImageHandle(), imgOffset, getType().getPoolType());
+					} else {
+						throw new TskCoreException("Data Source of pool is not an image");
+					}
+				}
+			}
+		}
+		return this.poolHandle;
+	}
 
 	@Override
 	public void close() {
diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
index c4860edb5cd521efe7c5752e6f40fd24d04a21f5..a0ba56532e1364452ee443e289cfb83319ba42c4 100755
--- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitCase.java
@@ -5742,7 +5742,7 @@ public FileSystem addFileSystem(long parentObjId, long imgOffset, TskData.TSK_FS
 
 			// Create the new FileSystem object
 			return new FileSystem(this, newObjId, displayName, imgOffset, type, blockSize, blockCount, rootInum,
-					firstInum, lastInum, 0);
+					firstInum, lastInum);
 		} catch (SQLException ex) {
 			throw new TskCoreException(String.format("Error creating file system with image offset %d and parent ID %d",
 					imgOffset, parentObjId), ex);
@@ -7395,7 +7395,7 @@ private FileSystem getFileSystemByIdHelper(long id, Content parent) throws TskCo
 				TskData.TSK_FS_TYPE_ENUM fsType = TskData.TSK_FS_TYPE_ENUM.valueOf(rs.getInt("fs_type")); //NON-NLS
 				FileSystem fs = new FileSystem(this, rs.getLong("obj_id"), "", rs.getLong("img_offset"), //NON-NLS
 						fsType, rs.getLong("block_size"), rs.getLong("block_count"), //NON-NLS
-						rs.getLong("root_inum"), rs.getLong("first_inum"), rs.getLong("last_inum"), rs.getLong("pool_block")); //NON-NLS
+						rs.getLong("root_inum"), rs.getLong("first_inum"), rs.getLong("last_inum")); //NON-NLS
 				fs.setParent(parent);
 				// save it for the next call
 				synchronized (fileSystemIdMap) {
@@ -7556,7 +7556,7 @@ public Collection<FileSystem> getFileSystems(Image image) {
 					TskData.TSK_FS_TYPE_ENUM fsType = TskData.TSK_FS_TYPE_ENUM.valueOf(rs.getInt("fs_type")); //NON-NLS
 					FileSystem fs = new FileSystem(this, rs.getLong("obj_id"), "", rs.getLong("img_offset"), //NON-NLS
 							fsType, rs.getLong("block_size"), rs.getLong("block_count"), //NON-NLS
-							rs.getLong("root_inum"), rs.getLong("first_inum"), rs.getLong("last_inum"), rs.getLong("pool_block")); //NON-NLS
+							rs.getLong("root_inum"), rs.getLong("first_inum"), rs.getLong("last_inum")); //NON-NLS
 					fs.setParent(null);
 					allFileSystems.add(fs);
 				}
diff --git a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java
index 94128c6fc89e1ba676548bfe21ef9387d0efcd73..c76366de323ac0d71d4302db27bd61b07c38025d 100644
--- a/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java
+++ b/bindings/java/src/org/sleuthkit/datamodel/SleuthkitJNI.java
@@ -803,7 +803,30 @@ public static long openVsPart(long vsHandle, long volId) throws TskCoreException
 			releaseTSKReadLock();
 		}
 	}
-
+	
+	/**
+	 * TODO update this
+	 * Get volume Handle
+	 *
+	 * @param vsHandle pointer to the volume system structure in the sleuthkit
+	 * @param volId    id of the volume
+	 *
+	 * @return pointer to a volHandle structure in the sleuthkit
+	 *
+	 * @throws TskCoreException exception thrown if critical error occurs within
+	 *                          TSK
+	 */
+	public static long openPool(long imgHandle, long offset, long poolType) throws TskCoreException {
+		getTSKReadLock();
+		try {
+			// TODO CACHE
+			//returned long is ptr to pool Handle object in tsk
+			return openPoolNat(imgHandle, offset, poolType);
+		} finally {
+			releaseTSKReadLock();
+		}
+	}	
+	
 	/**
 	 * Get file system Handle Opened handle is cached (transparently) so it does
 	 * not need be reopened next time for the duration of the application
@@ -817,12 +840,37 @@ public static long openVsPart(long vsHandle, long volId) throws TskCoreException
 	 * @throws TskCoreException exception thrown if critical error occurs within
 	 *                          TSK
 	 */
-	
 	public static long openFs(long imgHandle, long fsOffset, SleuthkitCase skCase) throws TskCoreException {
-		return openFs(imgHandle, fsOffset, 0, skCase);
+		getTSKReadLock();
+		try {
+			long fsHandle;
+			synchronized (HandleCache.cacheLock) {
+				long caseDbPointer;
+				if (skCase == null) {
+					caseDbPointer = HandleCache.getDefaultCaseDbPointer();
+				} else {
+					caseDbPointer = skCase.getCaseHandle().caseDbPointer;
+				}
+				final Map<Long, Long> imgOffSetToFsHandle = HandleCache.getCaseHandles(caseDbPointer).fsHandleCache.get(imgHandle);
+				if (imgOffSetToFsHandle == null) {
+					throw new TskCoreException("Missing image offset to file system handle cache for image handle " + imgHandle);
+				}
+				if (imgOffSetToFsHandle.containsKey(fsOffset)) {
+					//return cached
+					fsHandle = imgOffSetToFsHandle.get(fsOffset);
+				} else {
+					fsHandle = openFsNat(imgHandle, fsOffset);
+					//cache it
+					imgOffSetToFsHandle.put(fsOffset, fsHandle);
+				}
+			}
+			return fsHandle;
+		} finally {
+			releaseTSKReadLock();
+		}
 	}
 	
-	public static long openFs(long imgHandle, long fsOffset, long poolBlock, SleuthkitCase skCase) throws TskCoreException {
+	public static long openFsPool(long imgHandle, long fsOffset, long poolHandle, long poolBlock, SleuthkitCase skCase) throws TskCoreException {
 		getTSKReadLock();
 		try {
 			long fsHandle;
@@ -843,7 +891,7 @@ public static long openFs(long imgHandle, long fsOffset, long poolBlock, Sleuthk
 					//return cached
 					fsHandle = imgOffSetToFsHandle.get(combinedOffset);
 				} else {
-					fsHandle = openFsNat(imgHandle, fsOffset, poolBlock);
+					fsHandle = openFsPoolNat(imgHandle, fsOffset, poolHandle, poolBlock);
 					//cache it
 					imgOffSetToFsHandle.put(combinedOffset, fsHandle);
 				}
@@ -1669,8 +1717,12 @@ public static long openFile(long fsHandle, long fileId, TSK_FS_ATTR_TYPE_ENUM at
 	private static native long openVsNat(long imgHandle, long vsOffset) throws TskCoreException;
 
 	private static native long openVolNat(long vsHandle, long volId) throws TskCoreException;
+	
+	private static native long openPoolNat(long imgHandle, long offset, long poolType) throws TskCoreException;
+	
+	private static native long openFsNat(long imgHandle, long fsId) throws TskCoreException;
 
-	private static native long openFsNat(long imgHandle, long fsId, long poolOffset) throws TskCoreException;
+	private static native long openFsPoolNat(long imgHandle, long fsId, long poolHandle, long poolOffset) throws TskCoreException;
 
 	private static native long openFileNat(long fsHandle, long fileId, int attrType, int attrId) throws TskCoreException;
 
diff --git a/tsk/auto/db_sqlite.cpp b/tsk/auto/db_sqlite.cpp
index 379d311a85e291a3159b0f74788c2dc653460c64..5b67f0516f2f60684f140b7d419e9c7850458031 100755
--- a/tsk/auto/db_sqlite.cpp
+++ b/tsk/auto/db_sqlite.cpp
@@ -309,7 +309,7 @@ TskDbSqlite::initialize()
             "Error creating tsk_pool_info table: %s\n")
         ||
         attempt_exec
-        ("CREATE TABLE tsk_fs_info (obj_id INTEGER PRIMARY KEY, img_offset INTEGER NOT NULL, fs_type INTEGER NOT NULL, block_size INTEGER NOT NULL, block_count INTEGER NOT NULL, root_inum INTEGER NOT NULL, first_inum INTEGER NOT NULL, last_inum INTEGER NOT NULL, display_name TEXT, pool_block INTEGER NOT NULL, FOREIGN KEY(obj_id) REFERENCES tsk_objects(obj_id));",
+        ("CREATE TABLE tsk_fs_info (obj_id INTEGER PRIMARY KEY, img_offset INTEGER NOT NULL, fs_type INTEGER NOT NULL, block_size INTEGER NOT NULL, block_count INTEGER NOT NULL, root_inum INTEGER NOT NULL, first_inum INTEGER NOT NULL, last_inum INTEGER NOT NULL, display_name TEXT, FOREIGN KEY(obj_id) REFERENCES tsk_objects(obj_id));",
             "Error creating tsk_fs_info table: %s\n")
         ||
         attempt_exec
@@ -857,13 +857,13 @@ TskDbSqlite::addFsInfo(const TSK_FS_INFO* fs_info, int64_t parObjId,
 
     snprintf(stmt, 1024,
         "INSERT INTO tsk_fs_info (obj_id, img_offset, fs_type, block_size, block_count, "
-        "root_inum, first_inum, last_inum, pool_block) "
+        "root_inum, first_inum, last_inum) "
         "VALUES ("
         "%" PRId64 ",%" PRIdOFF ",%d,%u,%" PRIuDADDR ","
-        "%" PRIuINUM ",%" PRIuINUM ",%" PRIuINUM ",%" PRIuINUM ")",
+        "%" PRIuINUM ",%" PRIuINUM ",%" PRIuINUM ")",
         objId, fs_info->offset, (int) fs_info->ftype, fs_info->block_size,
         fs_info->block_count, fs_info->root_inum, fs_info->first_inum,
-        fs_info->last_inum, pool_block);
+        fs_info->last_inum);
 
     return attempt_exec(stmt,
                         "Error adding data to tsk_fs_info table: %s\n");
@@ -1927,7 +1927,7 @@ TSK_RETVAL_ENUM TskDbSqlite::getFsInfos(int64_t imgId, vector<TSK_DB_FS_INFO>& f
 {
     sqlite3_stmt* fsInfosStatement = NULL;
     if (prepare_stmt(
-        "SELECT obj_id, img_offset, fs_type, block_size, block_count, root_inum, first_inum, last_inum, pool_block FROM tsk_fs_info",
+        "SELECT obj_id, img_offset, fs_type, block_size, block_count, root_inum, first_inum, last_inum FROM tsk_fs_info",
         &fsInfosStatement))
     {
         return TSK_ERR;
@@ -1962,7 +1962,6 @@ TSK_RETVAL_ENUM TskDbSqlite::getFsInfos(int64_t imgId, vector<TSK_DB_FS_INFO>& f
         rowData.root_inum = sqlite3_column_int64(fsInfosStatement, 5);
         rowData.first_inum = sqlite3_column_int64(fsInfosStatement, 6);
         rowData.last_inum = sqlite3_column_int64(fsInfosStatement, 7);
-        rowData.pool_block = sqlite3_column_int64(fsInfosStatement, 8);
 
         //insert a copy of the rowData
         fsInfos.push_back(rowData);
diff --git a/tsk/auto/tsk_db.h b/tsk/auto/tsk_db.h
index e3024da59c67dc72d771f127242a591fafb3e328..b0cc10c54c318b8f2df1e46fadf190e9c015ff8d 100755
--- a/tsk/auto/tsk_db.h
+++ b/tsk/auto/tsk_db.h
@@ -119,7 +119,6 @@ typedef struct _TSK_DB_FS_INFO {
     TSK_INUM_T root_inum;
     TSK_INUM_T first_inum;
     TSK_INUM_T last_inum;   
-    TSK_INUM_T pool_block;
 } TSK_DB_FS_INFO;
 
 ostream& operator <<(ostream &os,const TSK_DB_FS_INFO &fsInfo);