Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Jun 2012 15:04:34 +0000
From:      vbotton@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r237468 - soc2012/vbotton/ntfs_apple
Message-ID:  <20120611150434.D219F106574E@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: vbotton
Date: Mon Jun 11 15:04:34 2012
New Revision: 237468
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=237468

Log:
  Endianness function, and first allocation changed

Modified:
  soc2012/vbotton/ntfs_apple/ntfs_dir.c
  soc2012/vbotton/ntfs_apple/ntfs_index.h
  soc2012/vbotton/ntfs_apple/ntfs_inode.h
  soc2012/vbotton/ntfs_apple/ntfs_types.h

Modified: soc2012/vbotton/ntfs_apple/ntfs_dir.c
==============================================================================
--- soc2012/vbotton/ntfs_apple/ntfs_dir.c	Mon Jun 11 14:02:02 2012	(r237467)
+++ soc2012/vbotton/ntfs_apple/ntfs_dir.c	Mon Jun 11 15:04:34 2012	(r237468)
@@ -168,10 +168,10 @@
 	 * ntfs_index_inode_read()).
 	 */
 	ir = (INDEX_ROOT*)((u8*)ctx->a + le16toh(ctx->a->value_offset));
-	index_end = (u8*)&ir->index + le32_to_cpu(ir->index.index_length);
+	index_end = (u8*)&ir->index + le32toh(ir->index.index_length);
 	/* The first index entry. */
 	ie = (INDEX_ENTRY*)((u8*)&ir->index +
-			le32_to_cpu(ir->index.entries_offset));
+			le32toh(ir->index.entries_offset));
 	/*
 	 * Loop until we exceed valid memory (corruption case) or until we
 	 * reach the last entry.
@@ -220,9 +220,8 @@
 				u8 len;
 
 				if (!name) {
-					*res_name = name = OSMalloc(
-							sizeof(*name),
-							ntfs_malloc_tag);
+					*res_name = name = malloc(
+							sizeof(*name));
 					if (!name) {
 						err = ENOMEM;
 						goto put_err;
@@ -236,8 +235,7 @@
 						len * sizeof(ntfschar));
 			} else {
 				if (name)
-					OSFree(name, sizeof(*name),
-							ntfs_malloc_tag);
+					free(name);
 				*res_name = NULL;
 			}
 			*res_mref = le64toh(ie->indexed_file);
@@ -271,9 +269,8 @@
 				u8 len;
 
 				if (!name) {
-					*res_name = name = OSMalloc(
-							sizeof(*name),
-							ntfs_malloc_tag);
+					*res_name = name = malloc(
+							sizeof(*name));
 					if (!name) {
 						err = ENOMEM;
 						goto put_err;
@@ -347,7 +344,7 @@
 		goto put_err;
 	}
 	/* Get the starting vcn of the index block holding the child node. */
-	vcn = sle64tohp((sle64*)((u8*)ie + le16toh(ie->length) - 8));
+	vcn = le64toh(*(sle64*)((u8*)ie + le16toh(ie->length) - 8));
 	/*
 	 * We are done with the index root and the mft record.  Release them,
 	 * otherwise we deadlock with ntfs_page_map().
@@ -398,7 +395,7 @@
 		goto page_err;
 	}
 	if (offsetof(INDEX_BLOCK, index) +
-			le32_to_cpu(ia->index.allocated_size) !=
+			le32toh(ia->index.allocated_size) !=
 			ia_ni->block_size) {
 		ntfs_error(mp, "Index buffer (VCN 0x%llx) of directory inode "
 				"0x%llx has a size (%u) differing from the "
@@ -407,7 +404,7 @@
 				(unsigned long long)vcn,
 				(unsigned long long)dir_ni->mft_no, (unsigned)
 				(offsetof(INDEX_BLOCK, index) +
-				le32_to_cpu(ia->index.allocated_size)),
+				le32toh(ia->index.allocated_size)),
 				(unsigned)ia_ni->block_size);
 		goto page_err;
 	}
@@ -420,7 +417,7 @@
 				(unsigned long long)dir_ni->mft_no);
 		goto page_err;
 	}
-	index_end = (u8*)&ia->index + le32_to_cpu(ia->index.index_length);
+	index_end = (u8*)&ia->index + le32toh(ia->index.index_length);
 	if (index_end > (u8*)ia + ia_ni->block_size) {
 		ntfs_error(mp, "Size of index buffer (VCN 0x%llx) of directory "
 				"inode 0x%llx exceeds maximum size.",
@@ -430,7 +427,7 @@
 	}
 	/* The first index entry. */
 	ie = (INDEX_ENTRY*)((u8*)&ia->index +
-			le32_to_cpu(ia->index.entries_offset));
+			le32toh(ia->index.entries_offset));
 	/*
 	 * Iterate similar to above big loop but applied to index buffer, thus
 	 * loop until we exceed valid memory (corruption case) or until we
@@ -482,9 +479,8 @@
 				u8 len;
 
 				if (!name) {
-					*res_name = name = OSMalloc(
-							sizeof(*name),
-							ntfs_malloc_tag);
+					*res_name = name = malloc(
+							sizeof(*name));
 					if (!name) {
 						err = ENOMEM;
 						goto page_err;
@@ -498,8 +494,7 @@
 						len * sizeof(ntfschar));
 			} else {
 				if (name)
-					OSFree(name, sizeof(*name),
-							ntfs_malloc_tag);
+					free(name);
 				*res_name = NULL;
 			}
 			*res_mref = le64toh(ie->indexed_file);
@@ -1582,10 +1577,10 @@
 	 * ntfs_inode_read()).
 	 */
 	ir = (INDEX_ROOT*)((u8*)ctx->a + le16toh(ctx->a->value_offset));
-	index_end = (u8*)&ir->index + le32_to_cpu(ir->index.index_length);
+	index_end = (u8*)&ir->index + le32toh(ir->index.index_length);
 	/* The first index entry. */
 	ie = (INDEX_ENTRY*)((u8*)&ir->index +
-			le32_to_cpu(ir->index.entries_offset));
+			le32toh(ir->index.entries_offset));
 	/* Bounds checks. */
 	if ((u8*)ie < (u8*)&ir->index ||
 			(u8*)ie + sizeof(INDEX_ENTRY_HEADER) > index_end ||
@@ -1713,7 +1708,7 @@
 		goto vol_err;
 	}
 	if (offsetof(INDEX_BLOCK, index) +
-			le32_to_cpu(ia->index.allocated_size) !=
+			le32toh(ia->index.allocated_size) !=
 			ia_ni->block_size) {
 		ntfs_error(vol->mp, "Index buffer (VCN 0x%llx) has a size "
 				"(%u) differing from the directory specified "
@@ -1721,7 +1716,7 @@
 				(unsigned long long)
 				sle64toh(ia->index_block_vcn),
 				(unsigned)(offsetof(INDEX_BLOCK, index) +
-				le32_to_cpu(ia->index.allocated_size)),
+				le32toh(ia->index.allocated_size)),
 				(unsigned)ia_ni->block_size, es1,
 				(unsigned long long)dir_ni->mft_no, es2);
 		goto vol_err;
@@ -1737,7 +1732,7 @@
 				(unsigned long long)dir_ni->mft_no);
 		goto vol_err;
 	}
-	index_end = (u8*)&ia->index + le32_to_cpu(ia->index.index_length);
+	index_end = (u8*)&ia->index + le32toh(ia->index.index_length);
 	if (index_end > (u8*)ia + ia_ni->block_size) {
 		ntfs_error(vol->mp, "Size of index block (VCN 0x%llx) "
 				"exceeds maximum size%s%llx%s",
@@ -1748,7 +1743,7 @@
 	}
 	/* The first index entry. */
 	ie = (INDEX_ENTRY*)((u8*)&ia->index +
-			le32_to_cpu(ia->index.entries_offset));
+			le32toh(ia->index.entries_offset));
 	/* Bounds checks. */
 	if ((u8*)ie < (u8*)&ia->index ||
 			(u8*)ie + sizeof(INDEX_ENTRY_HEADER) > index_end ||

Modified: soc2012/vbotton/ntfs_apple/ntfs_index.h
==============================================================================
--- soc2012/vbotton/ntfs_apple/ntfs_index.h	Mon Jun 11 14:02:02 2012	(r237467)
+++ soc2012/vbotton/ntfs_apple/ntfs_index.h	Mon Jun 11 15:04:34 2012	(r237468)
@@ -39,6 +39,9 @@
 #define _OSX_NTFS_INDEX_H
 
 #include <sys/errno.h>
+#include <sys/param.h>
+#include <sys/malloc.h>
+#include <sys/kernel.h>
 
 /* Foward declaration. */
 typedef struct _ntfs_index_context ntfs_index_context;
@@ -48,7 +51,6 @@
 #include "ntfs_layout.h"
 #include "ntfs_types.h"
 
-#include <stdlib.h>
 /**
  * @up:		pointer to index context located directly above in the tree
  * @down:	pointer to index context located directly below in the tree
@@ -234,6 +236,8 @@
 	u8 *right_addr;
 };
 
+MALLOC_DECLARE(M_INDEX_NTFS_CONTEXT);
+MALLOC_DEFINE(M_INDEX_NTFS_CONTEXT, "indexcontext", "index context");
 
 /**
  * ntfs_index_ctx_alloc - allocate an index context
@@ -242,7 +246,7 @@
  */
 inline ntfs_index_context *ntfs_index_ctx_alloc(void)
 {
-	return malloc(sizeof(ntfs_index_context));
+	return malloc(sizeof(ntfs_index_context), M_INDEX_NTFS_CONTEXT, M_WAITOK);
 }
 
 /**
@@ -316,7 +320,7 @@
  */
 static inline void ntfs_index_ctx_free(ntfs_index_context *ictx)
 {
-	free(ictx);
+	free(ictx, M_INDEX_NTFS_CONTEXT);
 }
 
 /**

Modified: soc2012/vbotton/ntfs_apple/ntfs_inode.h
==============================================================================
--- soc2012/vbotton/ntfs_apple/ntfs_inode.h	Mon Jun 11 14:02:02 2012	(r237467)
+++ soc2012/vbotton/ntfs_apple/ntfs_inode.h	Mon Jun 11 15:04:34 2012	(r237468)
@@ -38,15 +38,18 @@
 #ifndef _OSX_NTFS_INODE_H
 #define _OSX_NTFS_INODE_H
 
+#include <sys/types.h>
+#include <sys/systm.h>
 #include <sys/buf.h>
 #include <sys/errno.h>
 #include <sys/proc.h>
 #include <sys/queue.h>
 #include <sys/time.h>
-#include <sys/types.h>
 #include <sys/ucred.h>
 #include <sys/vnode.h>
 #include <sys/mutex.h>
+#include <sys/proc.h>
+#include <sys/param.h>
 
 /* Forward declarations. */
 typedef struct _ntfs_inode ntfs_inode;
@@ -464,7 +467,8 @@
  */
 static inline ntfs_inode *NTFS_I(struct vnode *vn)
 {
-	return vnode_fsnode(vn);
+	return (ntfs_inode*)vn->v_data;
+	//return vnode_fsnode(vn);
 }
 
 /**

Modified: soc2012/vbotton/ntfs_apple/ntfs_types.h
==============================================================================
--- soc2012/vbotton/ntfs_apple/ntfs_types.h	Mon Jun 11 14:02:02 2012	(r237467)
+++ soc2012/vbotton/ntfs_apple/ntfs_types.h	Mon Jun 11 15:04:34 2012	(r237468)
@@ -113,7 +113,7 @@
 
 typedef int errno_t;
 typedef unsigned int	lck_rw_type_t;
-typedef struct mount 	mount_t;
-typedef struct vnode	vnode_t;
+typedef struct mount* 	mount_t;
+typedef struct vnode*	vnode_t;
 
 #endif /* !_OSX_NTFS_TYPES_H */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120611150434.D219F106574E>