ext2 import by filip navara with minor editing by arty.
Deleted: branches/ext2/reactos/drivers/fs/ext2/attr.c
Deleted: branches/ext2/reactos/drivers/fs/ext2/blockdev.c
Deleted: branches/ext2/reactos/drivers/fs/ext2/dir.c
Deleted: branches/ext2/reactos/drivers/fs/ext2/ext2fs.h
Deleted: branches/ext2/reactos/drivers/fs/ext2/file.c
Added: branches/ext2/reactos/drivers/fs/ext2/inc/
Added: branches/ext2/reactos/drivers/fs/ext2/inc/errmsg.h
Added: branches/ext2/reactos/drivers/fs/ext2/inc/ext2_fs.h
Added: branches/ext2/reactos/drivers/fs/ext2/inc/ext2fsd.h
Added: branches/ext2/reactos/drivers/fs/ext2/inc/ext2metadata.h
Added: branches/ext2/reactos/drivers/fs/ext2/inc/protos.h
Added: branches/ext2/reactos/drivers/fs/ext2/inc/resource.h
Added: branches/ext2/reactos/drivers/fs/ext2/inc/struct.h
Deleted: branches/ext2/reactos/drivers/fs/ext2/inode.c
Modified: branches/ext2/reactos/drivers/fs/ext2/makefile
Deleted: branches/ext2/reactos/drivers/fs/ext2/quota.c
Deleted: branches/ext2/reactos/drivers/fs/ext2/rw.c
Deleted: branches/ext2/reactos/drivers/fs/ext2/security.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/
Added: branches/ext2/reactos/drivers/fs/ext2/src/.cvsignore
Added: branches/ext2/reactos/drivers/fs/ext2/src/DiskIO.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/cleanup.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/close.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/create.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/devcntrl.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/dircntrl.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/ext2.rc
Added: branches/ext2/reactos/drivers/fs/ext2/src/ext2init.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/fastio.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/fileinfo.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/flush.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/fsctrl.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/io.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/metadata.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/misc.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/read.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/shutdown.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/volinfo.c
Added: branches/ext2/reactos/drivers/fs/ext2/src/write.c
Deleted: branches/ext2/reactos/drivers/fs/ext2/super.c

Deleted: branches/ext2/reactos/drivers/fs/ext2/attr.c
--- branches/ext2/reactos/drivers/fs/ext2/attr.c	2005-01-13 01:21:47 UTC (rev 13008)
+++ branches/ext2/reactos/drivers/fs/ext2/attr.c	2005-01-13 01:51:33 UTC (rev 13009)
@@ -1,136 +0,0 @@
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             services/fs/ext2/attr.c
- * PURPOSE:          Set/Get file attributes support
- * PROGRAMMER:       David Welch (welch@cwcom.net)
- * UPDATE HISTORY: 
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <ddk/ntddk.h>
-#include <wchar.h>
-#include <string.h>
-
-//#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS ****************************************************************/
-
-NTSTATUS STDCALL
-Ext2SetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   DPRINT("Ext2SetInformation(DeviceObject %x Irp %x)\n",DeviceObject,Irp);
-   
-   Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
-   Irp->IoStatus.Information = 0;
-   IoCompleteRequest(Irp,
-		     IO_NO_INCREMENT);
-   
-   return(STATUS_UNSUCCESSFUL);
-}
-
-NTSTATUS STDCALL
-Ext2QueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   NTSTATUS Status;
-   PIO_STACK_LOCATION Param;
-   PFILE_OBJECT FileObject;
-   PDEVICE_EXTENSION DeviceExt;
-   ULONG Length;
-   PFILE_BASIC_INFORMATION PFileBasicInformation;
-   PFILE_STANDARD_INFORMATION PFileStandardInformation;
-   PFILE_INTERNAL_INFORMATION PFileInternalInformation;
-   PFILE_EA_INFORMATION PFileEaInformation;
-   PFILE_ACCESS_INFORMATION PFileAccessInformation;
-   PFILE_NAME_INFORMATION PFileNameInformation;
-   PFILE_POSITION_INFORMATION PFilePositionInformation;
-   PVOID Buffer;
-   
-   DPRINT("Ext2QueryInformation(DeviceObject %x Irp %x)\n", DeviceObject, Irp);
-   
-   Param = IoGetCurrentIrpStackLocation(Irp);
-   FileObject = Param->FileObject;
-   DeviceExt = DeviceObject->DeviceExtension;
-   Length = Param->Parameters.QueryFile.Length;
-   Buffer = Irp->AssociatedIrp.SystemBuffer;
-   
-   switch (Param->Parameters.QueryFile.FileInformationClass)
-     {
-      case FileDirectoryInformation:
-      case FileFullDirectoryInformation:
-      case FileBothDirectoryInformation:
-	Status = STATUS_NOT_IMPLEMENTED;
-	break;
-	
-      case FileBasicInformation:
-	PFileBasicInformation = (PFILE_BASIC_INFORMATION)Buffer;
-	memset(PFileBasicInformation, 0, sizeof(FILE_BASIC_INFORMATION));
-	Status = STATUS_SUCCESS;
-	break;
-	
-      case FileStandardInformation:
-	PFileStandardInformation = (PFILE_STANDARD_INFORMATION)Buffer;
-	memset(PFileStandardInformation, 0, sizeof(FILE_STANDARD_INFORMATION));
-	Status = STATUS_SUCCESS;
-	break;
-	
-      case FileInternalInformation:
-	PFileInternalInformation = (PFILE_INTERNAL_INFORMATION)Buffer;
-	memset(PFileInternalInformation, 0, sizeof(FILE_INTERNAL_INFORMATION));
-	Status = STATUS_SUCCESS;
-	break;
-	
-      case FileEaInformation:
-	PFileEaInformation = (PFILE_EA_INFORMATION)Buffer;
-	memset(PFileEaInformation, 0, sizeof(FILE_EA_INFORMATION));
-	PFileEaInformation->EaSize = 0;
-	Status = STATUS_SUCCESS;
-	break;
-	
-      case FileAccessInformation:
-	PFileAccessInformation = (PFILE_ACCESS_INFORMATION)Buffer;
-	memset(PFileAccessInformation, 0, sizeof(FILE_ACCESS_INFORMATION));
-	PFileAccessInformation->AccessFlags = 0;
-	Status = STATUS_SUCCESS;
-	break;
-	
-      case FileNameInformation:
-	PFileNameInformation = (PFILE_NAME_INFORMATION)Buffer;
-	memset(PFileNameInformation, 0, sizeof(FILE_NAME_INFORMATION));
-	Status = STATUS_SUCCESS;
-	break;
-	
-      case FilePositionInformation:
-	PFilePositionInformation = (PFILE_POSITION_INFORMATION)Buffer;
-	memcpy(PFilePositionInformation, 
-	       &FileObject->CurrentByteOffset,
-	       sizeof(FileObject->CurrentByteOffset));
-	Status = STATUS_SUCCESS;
-	break;
-	
-      case FileRenameInformation:
-	Status = STATUS_NOT_IMPLEMENTED;
-	break;
-	
-      default:
-	Status = STATUS_NOT_SUPPORTED;
-     }
-   
-   
-   
-   
-   Irp->IoStatus.Status = Status;
-   if (NT_SUCCESS(Status))
-     Irp->IoStatus.Information =
-       Param->Parameters.QueryFile.Length - Length;
-   else
-     Irp->IoStatus.Information = 0;
-   IoCompleteRequest(Irp,
-		     IO_NO_INCREMENT);
-   
-   return(Status);
-}

Deleted: branches/ext2/reactos/drivers/fs/ext2/blockdev.c
--- branches/ext2/reactos/drivers/fs/ext2/blockdev.c	2005-01-13 01:21:47 UTC (rev 13008)
+++ branches/ext2/reactos/drivers/fs/ext2/blockdev.c	2005-01-13 01:51:33 UTC (rev 13009)
@@ -1,155 +0,0 @@
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             services/fs/ext2/blockdev.c
- * PURPOSE:          Temporary sector reading support
- * PROGRAMMER:       David Welch (welch@cwcom.net)
- * UPDATE HISTORY: 
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <ddk/ntddk.h>
-
-//#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS ***************************************************************/
-
-BOOLEAN
-Ext2ReadSectors(IN PDEVICE_OBJECT pDeviceObject,
-		IN ULONG DiskSector,
-		IN ULONG SectorCount,
-		IN PVOID Buffer)
-{
-    LARGE_INTEGER   sectorNumber;
-    PIRP            irp;
-    IO_STATUS_BLOCK ioStatus;
-    KEVENT          event;
-    NTSTATUS        status;
-    ULONG           sectorSize;
-    int j;
-   
-    DPRINT("VFATReadSector(pDeviceObject %x, DiskSector %d, Buffer %x)\n",
-           pDeviceObject,DiskSector,Buffer);
-
-    sectorNumber.u.HighPart = 0;
-    sectorNumber.u.LowPart = DiskSector * BLOCKSIZE;
-
-    DPRINT("DiskSector:%ld BLKSZ:%ld sectorNumber:%ld:%ld\n", 
-           (unsigned long) DiskSector,
-           (unsigned long) BLOCKSIZE,
-           (unsigned long) sectorNumber.u.HighPart,
-           (unsigned long) sectorNumber.u.LowPart);
-
-    KeInitializeEvent(&event, NotificationEvent, FALSE);
-
-    sectorSize = BLOCKSIZE*SectorCount;
-
-
-    DPRINT("Building synchronous FSD Request...\n");
-    irp = IoBuildSynchronousFsdRequest(IRP_MJ_READ,
-                                       pDeviceObject,
-                                       Buffer,
-                                       sectorSize,
-                                       &sectorNumber,
-                                       &event,
-                                       &ioStatus );
-
-    if (!irp) 
-     {
-        DbgPrint("READ failed!!!\n");
-        return FALSE;
-     }
-   
-    DPRINT("Calling IO Driver...\n");
-    status = IoCallDriver(pDeviceObject, irp);
-
-    DPRINT("Waiting for IO Operation...\n");
-    if (status == STATUS_PENDING) 
-     {
-        KeWaitForSingleObject(&event,
-                              Suspended,
-                              KernelMode,
-                              FALSE,
-                              NULL);
-        DPRINT("Getting IO Status...\n");
-        status = ioStatus.Status;
-     }
-
-   if (!NT_SUCCESS(status)) 
-     {
-        DbgPrint("IO failed!!! Error code: %d(%x)\n", status, status);
-        return FALSE;
-     }
-   
-   return TRUE;
-}
-
-BOOLEAN VFATWriteSectors(IN PDEVICE_OBJECT pDeviceObject,
-		     	 IN ULONG	DiskSector,
-                         IN ULONG       SectorCount,
-			 IN UCHAR*	Buffer)
-{
-    LARGE_INTEGER   sectorNumber;
-    PIRP            irp;
-    IO_STATUS_BLOCK ioStatus;
-    KEVENT          event;
-    NTSTATUS        status;
-    ULONG           sectorSize;
-    PULONG          mbr;
-    int j;
-   
-    DPRINT("VFATWriteSector(pDeviceObject %x, DiskSector %d, Buffer %x)\n",
-           pDeviceObject,DiskSector,Buffer);
-
-    sectorNumber.u.HighPart = 0;
-    sectorNumber.u.LowPart = DiskSector * BLOCKSIZE;
-
-    KeInitializeEvent(&event, NotificationEvent, FALSE);
-
-    sectorSize = BLOCKSIZE*SectorCount;
-
-
-    DPRINT("Building synchronous FSD Request...\n");
-    irp = IoBuildSynchronousFsdRequest(IRP_MJ_WRITE,
-                                       pDeviceObject,
-                                       Buffer,
-                                       sectorSize,
-                                       &sectorNumber,
-                                       &event,
-                                       &ioStatus );
-
-    if (!irp) {
-        DbgPrint("WRITE failed!!!\n");
-        return FALSE;
-    }
-
-    DPRINT("Calling IO Driver...\n");
-    status = IoCallDriver(pDeviceObject,
-                          irp);
-
-    DPRINT("Waiting for IO Operation...\n");
-    if (status == STATUS_PENDING) {
-        KeWaitForSingleObject(&event,
-                              Suspended,
-                              KernelMode,
-                              FALSE,
-                              NULL);
-        DPRINT("Getting IO Status...\n");
-        status = ioStatus.Status;
-    }
-
-    if (!NT_SUCCESS(status)) {
-        DbgPrint("IO failed!!! Error code: %d(%x)\n", status, status);
-        return FALSE;
-    }
-
-
-    ExFreePool(mbr);
-    DPRINT("Block request succeeded\n");
-    return TRUE;
-}
-

Deleted: branches/ext2/reactos/drivers/fs/ext2/dir.c
--- branches/ext2/reactos/drivers/fs/ext2/dir.c	2005-01-13 01:21:47 UTC (rev 13008)
+++ branches/ext2/reactos/drivers/fs/ext2/dir.c	2005-01-13 01:51:33 UTC (rev 13009)
@@ -1,338 +0,0 @@
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             services/fs/ext2/dir.c
- * PURPOSE:          ext2 filesystem
- * PROGRAMMER:       David Welch (welch@cwcom.net)
- * UPDATE HISTORY: 
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <ddk/ntddk.h>
-#include <wchar.h>
-#include <string.h>
-
-//#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS *****************************************************************/
-
-
-static VOID Ext2ConvertName(PWSTR Out, PCH In, ULONG Len)
-{
-   ULONG i;
-   
-   for (i=0; i<Len; i++)
-     {
-	*Out = *In;
-	Out++;
-	In++;
-     }
-   *Out = 0;
-}
-
-PVOID Ext2ProcessDirEntry(PDEVICE_EXTENSION DeviceExt,
-			  struct ext2_dir_entry* dir_entry,
-			  PIO_STACK_LOCATION IoStack,
-			  PVOID Buffer,
-			  ULONG FileIndex)
-{
-   PFILE_DIRECTORY_INFORMATION FDI;
-   PFILE_NAMES_INFORMATION FNI;
-   PFILE_BOTH_DIRECTORY_INFORMATION FBI;
-   struct ext2_inode inode;
-   
-   DPRINT("FileIndex %d\n",FileIndex);
-   DPRINT("Buffer %x\n",Buffer);
-   
-   Ext2ReadInode(DeviceExt,
-		 dir_entry->inode,
-		 &inode);
-     
-   switch (IoStack->Parameters.QueryDirectory.FileInformationClass)
-     {
-      case FileNamesInformation:
-	FNI = (PFILE_NAMES_INFORMATION)Buffer;
-	FNI->NextEntryOffset = sizeof(FileDirectoryInformation) +
-	  dir_entry->name_len + 1;
-	FNI->FileNameLength = dir_entry->name_len;	
-	Ext2ConvertName(FNI->FileName, dir_entry->name, dir_entry->name_len);
-	Buffer = Buffer + FNI->NextEntryOffset;
-	break;
-	
-      case FileDirectoryInformation:
-	FDI = (PFILE_DIRECTORY_INFORMATION)Buffer;
-	FDI->NextEntryOffset = sizeof(FileDirectoryInformation) + 
-	                       dir_entry->name_len + 1;
-	FDI->FileIndex = FileIndex;
-//	FDI->CreationTime = 0;
-//	FDI->LastAccessTime = 0;
-//	FDI->LastWriteTime = 0;
-//	FDI->ChangeTime = 0;
-        FDI->AllocationSize.QuadPart = FDI->EndOfFile.QuadPart = inode.i_size;
-	FDI->FileAttributes = 0;
-	FDI->FileNameLength = dir_entry->name_len;
-	Ext2ConvertName(FDI->FileName, dir_entry->name, dir_entry->name_len);
-	Buffer = Buffer + FDI->NextEntryOffset;
-	break;
-	
-      case FileBothDirectoryInformation:
-	FBI = (PFILE_BOTH_DIRECTORY_INFORMATION)Buffer;
-	FBI->NextEntryOffset = sizeof(FileBothDirectoryInformation) +
-	  dir_entry->name_len + 1;
-	FBI->FileIndex = FileIndex;
-        FBI->AllocationSize.QuadPart = FBI->EndOfFile.QuadPart = inode.i_size;
-	FBI->FileAttributes = 0;
-	FBI->FileNameLength = dir_entry->name_len;
-	Ext2ConvertName(FBI->FileName, dir_entry->name, dir_entry->name_len);
-	memset(FBI->ShortName, 0, sizeof(FBI->ShortName));
-	Buffer = Buffer + FBI->NextEntryOffset;
-	break;
-	
-      default:
-	UNIMPLEMENTED;
-     }
-   return(Buffer);
-}
-
-
-NTSTATUS Ext2QueryDirectory(PDEVICE_EXTENSION DeviceExt,
-			    PEXT2_FCB Fcb,
-			    PIRP Irp,
-			    PIO_STACK_LOCATION IoStack)
-{
-   ULONG Max;
-   ULONG i;
-   ULONG StartIndex;
-   PVOID Buffer = NULL;
-   struct ext2_dir_entry dir_entry;
-   
-   Buffer = Irp->UserBuffer;
-   DPRINT("Buffer %x\n",Buffer);
-   DPRINT("IoStack->Flags %x\n",IoStack->Flags);
-   
-   if (IoStack->Flags & SL_RETURN_SINGLE_ENTRY)
-     {
-	Max = 1;
-     }
-   else
-     {
-	UNIMPLEMENTED;
-     }
-   
-   DPRINT("Buffer->FileIndex %d\n",
-	  ((PFILE_DIRECTORY_INFORMATION)Buffer)->FileIndex);
-   if (IoStack->Flags & SL_INDEX_SPECIFIED)
-     {
-	StartIndex = ((PFILE_DIRECTORY_INFORMATION)Buffer)->FileIndex;
-     }
-   else
-     {
-	StartIndex = 0;
-     }
-   
-   if (IoStack->Flags & SL_RESTART_SCAN)
-     {
-	StartIndex = 0;
-     }
-   
-   DPRINT("StartIndex %d\n",StartIndex);
-   
-   for (i=0; i<Max ;i++)
-     {
-	if (!Ext2ScanDir(DeviceExt,&Fcb->inode,"*",&dir_entry,&StartIndex))
-	  {
-	     ((PFILE_DIRECTORY_INFORMATION)Buffer)->NextEntryOffset = 0;
-	     return(STATUS_NO_MORE_FILES);
-	  }
-	Buffer = Ext2ProcessDirEntry(DeviceExt,
-				     &dir_entry, 
-				     IoStack, 
-				     Buffer, 
-				     StartIndex);
-     }
-   return(STATUS_SUCCESS);
-}
-
-NTSTATUS STDCALL
-Ext2DirectoryControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
-   PFILE_OBJECT FileObject = Stack->FileObject;
-   PEXT2_FCB Fcb = (PVOID)FileObject->FsContext;
-   NTSTATUS Status;
-   PDEVICE_EXTENSION DeviceExt;
-   
-   DPRINT("Ext2DirectoryControl(DeviceObject %x, Irp %x)\n",DeviceObject,Irp);
-   
-   DeviceExt = DeviceObject->DeviceExtension;
-   
-   switch (Stack->MinorFunction)
-     {
-      case IRP_MN_QUERY_DIRECTORY:
-	Status = Ext2QueryDirectory(DeviceExt, Fcb, Irp, Stack);
-	break;
-	
-      default:
-	Status = STATUS_UNSUCCESSFUL;
-     }
-   
-   Irp->IoStatus.Status = Status;
-   Irp->IoStatus.Information = 0;
-   
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
-   return(Status);   
-}
-
-BOOL Ext2ScanDir(PDEVICE_EXTENSION DeviceExt,
-		 struct ext2_inode* dir, 
-		 PCH filename,
-		 struct ext2_dir_entry* ret,
-		 PULONG StartIndex)
-{
-   ULONG i;
-   char* buffer;
-   ULONG offset;
-   char name[255];
-   struct ext2_dir_entry* current;
-   ULONG block;
-   BOOL b;
-   
-   DPRINT("Ext2ScanDir(dir %x, filename %s, ret %x)\n",dir,filename,ret);
-   
-   buffer = ExAllocatePool(NonPagedPool, BLOCKSIZE);
-   
-   for (i=0; i<((*StartIndex)/BLOCKSIZE); i++);
-   for (; (block = Ext2BlockMap(DeviceExt, dir, i)) != 0; i++)
-     {
-	DPRINT("block %d\n",block);
-	b = Ext2ReadSectors(DeviceExt->StorageDevice,
-			    block,
-			    1,
-			    buffer);
-	if (!b)
-	  {
-	     DbgPrint("ext2fs:%s:%d: Disk io failed\n", __FILE__, __LINE__);
-	     return(FALSE);
-	  }
-	
-	offset = (*StartIndex)%BLOCKSIZE;
-	while (offset < BLOCKSIZE)
-	  {
-	     current = &buffer[offset];
-	     
-	     strncpy(name,current->name,current->name_len);
-             name[current->name_len]=0;
-	     
-	     DPRINT("Scanning offset %d inode %d name %s\n",
-		    offset,current->inode,name);
-
-             DPRINT("Comparing %s %s\n",name,filename);
-	     if (strcmp(name,filename)==0 || strcmp(filename,"*")==0)
-	       {
-		  DPRINT("Match found\n");
-		  *StartIndex = (i*BLOCKSIZE) + offset + current->rec_len;
-		  memcpy(ret,current,sizeof(struct ext2_dir_entry));
-		  ExFreePool(buffer);
-		  return(TRUE);
-	       }
-	     
-	     offset = offset + current->rec_len;
-	     ASSERT(current->rec_len != 0);
-	     DPRINT("offset %d\n",offset);
-	  }
-	DPRINT("Onto next block\n");
-     }
-   DPRINT("No match\n");
-   ExFreePool(buffer);
-   return(FALSE);
-}
-
-void unicode_to_ansi(PCH StringA, PWSTR StringW)
-{
-   while((*StringW)!=0)
-     {
-	*StringA = *StringW;
-	StringA++;
-	StringW++;
-     }
-   *StringA = 0;
-}
-
-NTSTATUS Ext2OpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, 
-		     PWSTR FileName)
-/*
- * FUNCTION: Opens a file
- */
-{
-   EXT2_INODE parent_inode;
-   struct ext2_dir_entry entry;
-   char name[255];
-   ULONG current_inode = 2;
-   char* current_segment;
-   PEXT2_FCB Fcb;
-   ULONG StartIndex = 0;
-   
-   DPRINT("Ext2OpenFile(DeviceExt %x, FileObject %x, FileName %S)\n",
-	  DeviceExt,FileObject,FileName);
-   
-   Fcb = ExAllocatePool(NonPagedPool, sizeof(EXT2_FCB));
-   
-   unicode_to_ansi(name,FileName);
-   DPRINT("name %s\n",name);
-   DPRINT("strtok %x\n",strtok);
-   current_segment = strtok(name,"\\");
-   DPRINT("current_segment %x\n", current_segment);
-   while (current_segment!=NULL)
-     {
-	Ext2LoadInode(DeviceExt,
-		      current_inode,
-		      &parent_inode);
-        if (!Ext2ScanDir(DeviceExt,
-			 parent_inode.inode,
-			 current_segment,
-			 &entry,
-			 &StartIndex))
-	  {
-	     Ext2ReleaseInode(DeviceExt,
-			      &parent_inode);
-	     ExFreePool(Fcb);
-	     return(STATUS_UNSUCCESSFUL);
-	  }
-	current_inode = entry.inode;
-	current_segment = strtok(NULL,"\\");
-	StartIndex = 0;
-	Ext2ReleaseInode(DeviceExt,
-			 &parent_inode);
-     }
-   DPRINT("Found file\n");
-   
-   Fcb->inode = current_inode;
-   CcRosInitializeFileCache(FileObject, &Fcb->Bcb, PAGE_SIZE*3);
-   FileObject->FsContext = Fcb;
-   
-   return(STATUS_SUCCESS);
-}
-
-NTSTATUS STDCALL
-Ext2Create(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
-   PFILE_OBJECT FileObject = Stack->FileObject;
-   NTSTATUS Status;
-   PDEVICE_EXTENSION DeviceExt;
-   
-   DPRINT("Ext2Create(DeviceObject %x, Irp %x)\n",DeviceObject,Irp);
-   
-   DeviceExt = DeviceObject->DeviceExtension;
-   Status = Ext2OpenFile(DeviceExt,FileObject,FileObject->FileName.Buffer);
-   
-   Irp->IoStatus.Status = Status;
-   Irp->IoStatus.Information = 0;
-   
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
-   return(Status);
-}

Deleted: branches/ext2/reactos/drivers/fs/ext2/ext2fs.h
--- branches/ext2/reactos/drivers/fs/ext2/ext2fs.h	2005-01-13 01:21:47 UTC (rev 13008)
+++ branches/ext2/reactos/drivers/fs/ext2/ext2fs.h	2005-01-13 01:51:33 UTC (rev 13009)
@@ -1,289 +0,0 @@
-#include <ddk/ntddk.h>
-#include <ddk/ntifs.h>
-
-BOOLEAN Ext2ReadSectors(IN PDEVICE_OBJECT pDeviceObject,
-			IN ULONG	DiskSector,
-                        IN ULONG        SectorCount,
-			IN PVOID	Buffer);
-
-#define BLOCKSIZE (1024)
-
-struct ext2_super_block {
-	ULONG	s_inodes_count;		/* Inodes count */
-	ULONG	s_blocks_count;		/* Blocks count */
-	ULONG	s_r_blocks_count;	/* Reserved blocks count */
-	ULONG	s_free_blocks_count;	/* Free blocks count */
-	ULONG	s_free_inodes_count;	/* Free inodes count */
-	ULONG	s_first_data_block;	/* First Data Block */
-	ULONG	s_log_block_size;	/* Block size */
-	LONG	s_log_frag_size;	/* Fragment size */
-	ULONG	s_blocks_per_group;	/* # Blocks per group */
-	ULONG	s_frags_per_group;	/* # Fragments per group */
-	ULONG	s_inodes_per_group;	/* # Inodes per group */
-	ULONG	s_mtime;		/* Mount time */
-	ULONG	s_wtime;		/* Write time */
-	USHORT	s_mnt_count;		/* Mount count */
-	SHORT	s_max_mnt_count;	/* Maximal mount count */
-	USHORT	s_magic;		/* Magic signature */
-	USHORT	s_state;		/* File system state */
-	USHORT	s_errors;		/* Behaviour when detecting errors */
-	USHORT	s_minor_rev_level; 	/* minor revision level */
-	ULONG	s_lastcheck;		/* time of last check */
-	ULONG	s_checkinterval;	/* max. time between checks */
-	ULONG	s_creator_os;		/* OS */
-	ULONG	s_rev_level;		/* Revision level */
-	USHORT	s_def_resuid;		/* Default uid for reserved blocks */
-	USHORT	s_def_resgid;		/* Default gid for reserved blocks */
-	/*
-	 * These fields are for EXT2_DYNAMIC_REV superblocks only.
-	 *
-	 * Note: the difference between the compatible feature set and
-	 * the incompatible feature set is that if there is a bit set
-	 * in the incompatible feature set that the kernel doesn't
-	 * know about, it should refuse to mount the filesystem.
-	 * 
-	 * e2fsck's requirements are more strict; if it doesn't know
-	 * about a feature in either the compatible or incompatible
-	 * feature set, it must abort and not try to meddle with
-	 * things it doesn't understand...
-	 */
-	ULONG	s_first_ino; 		/* First non-reserved inode */
-	USHORT   s_inode_size; 		/* size of inode structure */
-	USHORT	s_block_group_nr; 	/* block group # of this superblock */
-	ULONG	s_feature_compat; 	/* compatible feature set */
-	ULONG	s_feature_incompat; 	/* incompatible feature set */
-	ULONG	s_feature_ro_compat; 	/* readonly-compatible feature set */
-	ULONG	s_reserved[230];	/* Padding to the end of the block */
-};
-
-/*
- * Codes for operating systems
- */
-#define EXT2_OS_LINUX		0
-#define EXT2_OS_HURD		1
-#define EXT2_OS_MASIX		2
-#define EXT2_OS_FREEBSD		3
-#define EXT2_OS_LITES		4
-
-/*
- * Revision levels
- */
-#define EXT2_GOOD_OLD_REV	0	/* The good old (original) format */
-#define EXT2_DYNAMIC_REV	1 	/* V2 format w/ dynamic inode sizes */
-
-#define EXT2_CURRENT_REV	EXT2_GOOD_OLD_REV
-#define EXT2_MAX_SUPP_REV	EXT2_DYNAMIC_REV
-
-/*
- * The second extended file system magic number
- */
-#define EXT2_SUPER_MAGIC	0xEF53
-
-/*
- * Constants relative to the data blocks
- */
-#define	EXT2_NDIR_BLOCKS		12
-#define	EXT2_IND_BLOCK			EXT2_NDIR_BLOCKS
-#define	EXT2_DIND_BLOCK			(EXT2_IND_BLOCK + 1)
-#define	EXT2_TIND_BLOCK			(EXT2_DIND_BLOCK + 1)
-#define	EXT2_N_BLOCKS			(EXT2_TIND_BLOCK + 1)
-
-
-/*
- * Structure of an inode on the disk
- */
-struct ext2_inode {
-	USHORT	i_mode;		/* File mode */
-	USHORT	i_uid;		/* Owner Uid */
-	ULONG	i_size;		/* Size in bytes */
-	ULONG	i_atime;	/* Access time */
-	ULONG	i_ctime;	/* Creation time */
-	ULONG	i_mtime;	/* Modification time */
-	ULONG	i_dtime;	/* Deletion Time */
-	USHORT	i_gid;		/* Group Id */
-	USHORT	i_links_count;	/* Links count */
-	ULONG	i_blocks;	/* Blocks count */
-	ULONG	i_flags;	/* File flags */
-	union {
-		struct {
-			ULONG  l_i_reserved1;
-		} linux1;
-		struct {
-			ULONG  h_i_translator;
-		} hurd1;
-		struct {
-			ULONG  m_i_reserved1;
-		} masix1;
-	} osd1;				/* OS dependent 1 */
-	ULONG	i_block[EXT2_N_BLOCKS];/* Pointers to blocks */
-	ULONG	i_version;	/* File version (for NFS) */
-	ULONG	i_file_acl;	/* File ACL */
-	ULONG	i_dir_acl;	/* Directory ACL */
-	ULONG	i_faddr;	/* Fragment address */
-	union {
-		struct {
-			UCHAR	l_i_frag;	/* Fragment number */
-			UCHAR	l_i_fsize;	/* Fragment size */
-			USHORT	i_pad1;
-			ULONG	l_i_reserved2[2];
-		} linux2;
-		struct {
-			UCHAR	h_i_frag;	/* Fragment number */
-			UCHAR	h_i_fsize;	/* Fragment size */
-			USHORT	h_i_mode_high;
-			USHORT	h_i_uid_high;
-			USHORT	h_i_gid_high;
-			ULONG	h_i_author;
-		} hurd2;
-		struct {
-			UCHAR	m_i_frag;	/* Fragment number */
-			UCHAR	m_i_fsize;	/* Fragment size */
-			USHORT	m_pad1;
-			ULONG	m_i_reserved2[2];
-		} masix2;
-	} osd2;				/* OS dependent 2 */
-};
-
-#if defined(__KERNEL__) || defined(__linux__)
-#define i_reserved1	osd1.linux1.l_i_reserved1
-#define i_frag		osd2.linux2.l_i_frag
-#define i_fsize		osd2.linux2.l_i_fsize
-#define i_reserved2	osd2.linux2.l_i_reserved2
-#endif
-
-#ifdef	__hurd__
-#define i_translator	osd1.hurd1.h_i_translator
-#define i_frag		osd2.hurd2.h_i_frag;
-#define i_fsize		osd2.hurd2.h_i_fsize;
-#define i_uid_high	osd2.hurd2.h_i_uid_high
-#define i_gid_high	osd2.hurd2.h_i_gid_high
-#define i_author	osd2.hurd2.h_i_author
-#endif
-
-#ifdef	__masix__
-#define i_reserved1	osd1.masix1.m_i_reserved1
-#define i_frag		osd2.masix2.m_i_frag
-#define i_fsize		osd2.masix2.m_i_fsize
-#define i_reserved2	osd2.masix2.m_i_reserved2
-#endif
-
-/*
- * Constants relative to the data blocks
- */
-#define	EXT2_NDIR_BLOCKS		12
-#define	EXT2_IND_BLOCK			EXT2_NDIR_BLOCKS
-#define	EXT2_DIND_BLOCK			(EXT2_IND_BLOCK + 1)
-#define	EXT2_TIND_BLOCK			(EXT2_DIND_BLOCK + 1)
-#define	EXT2_N_BLOCKS			(EXT2_TIND_BLOCK + 1)
-
-/*
- * Inode flags
- */
-#define	EXT2_SECRM_FL			0x00000001 /* Secure deletion */
-#define	EXT2_UNRM_FL			0x00000002 /* Undelete */
-#define	EXT2_COMPR_FL			0x00000004 /* Compress file */
-#define EXT2_SYNC_FL			0x00000008 /* Synchronous updates */
-#define EXT2_IMMUTABLE_FL		0x00000010 /* Immutable file */
-#define EXT2_APPEND_FL			0x00000020 /* writes to file may only append */
-#define EXT2_NODUMP_FL			0x00000040 /* do not dump file */
-#define EXT2_RESERVED_FL		0x80000000 /* reserved for ext2 lib */
-	
-
-/*
- * Structure of a blocks group descriptor
- */
-struct ext2_group_desc
-{
-	ULONG	bg_block_bitmap;		/* Blocks bitmap block */
-	ULONG	bg_inode_bitmap;		/* Inodes bitmap block */
-	ULONG	bg_inode_table;		/* Inodes table block */
-	USHORT	bg_free_blocks_count;	/* Free blocks count */
-	USHORT	bg_free_inodes_count;	/* Free inodes count */
-	USHORT	bg_used_dirs_count;	/* Directories count */
-	USHORT	bg_pad;
-	ULONG	bg_reserved[3];
-};
-
-#define EXT2_NAME_LEN 255
-
-struct ext2_dir_entry {
-	ULONG	inode;			/* Inode number */
-	USHORT	rec_len;		/* Directory entry length */
-	USHORT	name_len;		/* Name length */
-	char	name[EXT2_NAME_LEN];	/* File name */
-};
-
-typedef struct
-{
-   PDEVICE_OBJECT StorageDevice;
-   struct ext2_super_block* superblock;
-   PFILE_OBJECT FileObject;
-   PBCB Bcb;
-} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
-
-typedef struct _EXT2_GROUP_DESC
-{
-   ERESOURCE Lock;
-   struct ext2_group_desc* desc;
-   PCACHE_SEGMENT CacheSeg;
-   PVOID BaseAddress;
-} EXT2_GROUP_DESC, *PEXT2_GROUP_DESC;
-
-PEXT2_GROUP_DESC Ext2LoadGroup(PDEVICE_EXTENSION DeviceExt,
-			       ULONG BlockGrp);
-VOID Ext2ReleaseGroup(PDEVICE_EXTENSION DeviceExt,
-		      PEXT2_GROUP_DESC GrpDesc);
-
-VOID Ext2ReadInode(PDEVICE_EXTENSION DeviceExt,
-		   ULONG ino,
-		   struct ext2_inode* inode);
-struct ext2_group_desc* Ext2LoadGroupDesc(PDEVICE_EXTENSION DeviceExt,
-					  ULONG block_group);
-
-typedef struct _EXT2_INODE
-{
-   struct ext2_inode* inode;
-   PVOID BaseAddress;
-   PCACHE_SEGMENT CacheSeg;
-} EXT2_INODE, *PEXT2_INODE;
-
-typedef struct _EXT2_FCB
-{
-   ULONG inode;
-   EXT2_INODE i;
-   PBCB Bcb;
-} EXT2_FCB, *PEXT2_FCB;
-
-ULONG Ext2BlockMap(PDEVICE_EXTENSION DeviceExt,
-		   struct ext2_inode* inode,
-		   ULONG offset);
-NTSTATUS Ext2OpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject, 
-		      PWSTR FileName);
-NTSTATUS Ext2ReadFile(PDEVICE_EXTENSION DeviceExt, 
-		      PFILE_OBJECT FileObject,
-		      PVOID Buffer, 
-		      ULONG Length, 
-                      LARGE_INTEGER Offset);
-NTSTATUS STDCALL Ext2Create(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2DirectoryControl(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2QueryQuota(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2SetQuota(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2SetSecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2QuerySecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2SetInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2QueryInformation(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2Read(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2Write(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2Cleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2FlushBuffers(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS STDCALL Ext2Shutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp);
-NTSTATUS Ext2ReadPage(PDEVICE_EXTENSION DeviceExt,
-		      PEXT2_FCB Fcb,
-		      PVOID Buffer,
-		      ULONG Offset);
-VOID Ext2LoadInode(PDEVICE_EXTENSION DeviceExt,
-		   ULONG ino,
-		   PEXT2_INODE Inode);
-VOID Ext2ReleaseInode(PDEVICE_EXTENSION DeviceExt,
-		      PEXT2_INODE Inode);
-

Deleted: branches/ext2/reactos/drivers/fs/ext2/file.c
--- branches/ext2/reactos/drivers/fs/ext2/file.c	2005-01-13 01:21:47 UTC (rev 13008)
+++ branches/ext2/reactos/drivers/fs/ext2/file.c	2005-01-13 01:51:33 UTC (rev 13009)
@@ -1,61 +0,0 @@
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             services/fs/ext2/super.c
- * PURPOSE:          ext2 filesystem
- * PROGRAMMER:       David Welch (welch@mcmail.com)
- * UPDATE HISTORY: 
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <ddk/ntddk.h>
-
-#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS ****************************************************************/
-
-#define addr_per_block (BLOCKSIZE / sizeof(ULONG))
-
-ULONG Ext2BlockMap(PDEVICE_EXTENSION DeviceExt,
-		  struct ext2_inode* inode,
-		  ULONG offset)
-{
-   ULONG block;
-   PULONG TempBuffer;
-   BOOL b;
-   
-   DPRINT("Ext2BlockMap(DeviceExt %x, inode %x, offset %d)\n",
-	   DeviceExt,inode,offset);
-   if (offset < EXT2_NDIR_BLOCKS)
-     {
-	block = inode->i_block[offset];
-	DPRINT("block %d\n",block);
-	return(block);
-     }
-   offset = offset - EXT2_NDIR_BLOCKS;
-   if (offset < addr_per_block)
-     {
-	block = inode->i_block[EXT2_IND_BLOCK];
-	TempBuffer = ExAllocatePool(NonPagedPool, BLOCKSIZE);
-	b = Ext2ReadSectors(DeviceExt->StorageDevice,
-			    block,
-			    1,
-			    TempBuffer);
-	if (!b)
-	  {
-	     DbgPrint("ext2fs:%s:%d: Disk io failed\n", __FILE__, __LINE__);
-	     return(0);
-	  }
-	block = TempBuffer[offset];
-	ExFreePool(TempBuffer);
-	return(block);
-     }
-   offset = offset - addr_per_block;
[truncated at 1000 lines; 21006 more skipped]