Deleted ext2 driver
authorPierre Schweitzer <pierre@reactos.org>
Mon, 11 Feb 2008 11:29:54 +0000 (11:29 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Mon, 11 Feb 2008 11:29:54 +0000 (11:29 +0000)
Another one will be merged

svn path=/trunk/; revision=32282

12 files changed:
rosapps/directory.rbuild
rosapps/ext2/attr.c [deleted file]
rosapps/ext2/blockdev.c [deleted file]
rosapps/ext2/dir.c [deleted file]
rosapps/ext2/ext2fs.h [deleted file]
rosapps/ext2/ext2fs.rc [deleted file]
rosapps/ext2/file.c [deleted file]
rosapps/ext2/inode.c [deleted file]
rosapps/ext2/quota.c [deleted file]
rosapps/ext2/rw.c [deleted file]
rosapps/ext2/security.c [deleted file]
rosapps/ext2/super.c [deleted file]

index 7eba8da..4cf5965 100644 (file)
        <directory name="downloader">
                <xi:include href="downloader/downloader.rbuild" />
        </directory>
-<!--
-       <directory name="ext2">
-               <xi:include href="ext2/ext2.rbuild" />
-       </directory>
--->
+       
        <directory name="fontview">
                <xi:include href="fontview/fontview.rbuild" />
        </directory>
diff --git a/rosapps/ext2/attr.c b/rosapps/ext2/attr.c
deleted file mode 100644 (file)
index 37e011a..0000000
+++ /dev/null
@@ -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 <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);
-}
diff --git a/rosapps/ext2/blockdev.c b/rosapps/ext2/blockdev.c
deleted file mode 100644 (file)
index 6792b98..0000000
+++ /dev/null
@@ -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 <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;
-}
-
diff --git a/rosapps/ext2/dir.c b/rosapps/ext2/dir.c
deleted file mode 100644 (file)
index 6bfb8ae..0000000
+++ /dev/null
@@ -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 <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);
-}
diff --git a/rosapps/ext2/ext2fs.h b/rosapps/ext2/ext2fs.h
deleted file mode 100644 (file)
index 1dfd8fd..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-#include <ntddk.h>
-#include <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);
-
diff --git a/rosapps/ext2/ext2fs.rc b/rosapps/ext2/ext2fs.rc
deleted file mode 100644 (file)
index a2e2503..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/* $Id$ */
-
-#define REACTOS_VERSION_DLL
-#define REACTOS_STR_FILE_DESCRIPTION   "Linux ext2 IFS Driver\0"
-#define REACTOS_STR_INTERNAL_NAME      "ext2fs\0"
-#define REACTOS_STR_ORIGINAL_FILENAME  "ext2fs.sys\0"
-#include <reactos/version.rc>
diff --git a/rosapps/ext2/file.c b/rosapps/ext2/file.c
deleted file mode 100644 (file)
index a627974..0000000
+++ /dev/null
@@ -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 <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;
-   DbgPrint("Failed at %s:%d\n",__FILE__,__LINE__);
-   for(;;);
-}
-
diff --git a/rosapps/ext2/inode.c b/rosapps/ext2/inode.c
deleted file mode 100644 (file)
index c05ff51..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             services/fs/ext2/inode.c
- * PURPOSE:          Manipulating inodes
- * PROGRAMMER:       David Welch (welch@cwcom.net)
- * UPDATE HISTORY:
- *          26/12/98: Created
- */
-
-/* INCLUDES ****************************************************************/
-
-#include <ntddk.h>
-
-//#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS ***************************************************************/
-
-struct ext2_group_desc* Ext2LoadGroupDesc(PDEVICE_EXTENSION DeviceExt,
-                                         ULONG block_group)
-{
-   struct ext2_group_desc* buffer;
-   ULONG block;
-   struct ext2_group_desc* gdp;
-
-   buffer = ExAllocatePool(NonPagedPool, BLOCKSIZE);
-
-   block = block_group / (BLOCKSIZE / sizeof(struct ext2_group_desc));
-
-   Ext2ReadSectors(DeviceExt->StorageDevice,
-                  2 + block,
-                  1,
-                  buffer);
-
-   gdp = &buffer[block_group % (BLOCKSIZE / sizeof(struct ext2_group_desc))];
-
-   DPRINT("gdp->bg_free_blocks_count %d\n",gdp->bg_free_blocks_count);
-   DPRINT("gdp->bg_inode_table %d\n",gdp->bg_inode_table);
-
-   return(gdp);
-
-}
-
-#define INODES_PER_PAGE (PAGE_SIZE / sizeof(struct ext2_inode))
-#define INODES_PER_BLOCK (BLOCKSIZE / sizeof(struct ext2_inode))
-
-VOID Ext2LoadInode(PDEVICE_EXTENSION DeviceExt,
-                  ULONG ino,
-                  PEXT2_INODE Inode)
-{
-   ULONG block_group;
-   struct ext2_group_desc* gdp;
-   ULONG offset;
-   ULONG dsec;
-   BOOLEAN Uptodate;
-   struct ext2_inode* ibuffer;
-
-   DPRINT("Ext2LoadInode(DeviceExt %x, ino %d, Inode %x)\n",
-         DeviceExt, ino, Inode);
-
-   block_group = (ino - 1) / DeviceExt->superblock->s_inodes_per_group;
-
-   DPRINT("block_group %d\n",block_group);
-
-   gdp = Ext2LoadGroupDesc(DeviceExt, block_group);
-
-   offset = (ino - 1) % DeviceExt->superblock->s_inodes_per_group;
-
-   DPRINT("offset %d\n", offset);
-
-   dsec = (gdp->bg_inode_table + (offset / INODES_PER_BLOCK)) * BLOCKSIZE;
-
-   DPRINT("dsec %d (dsec/BLOCKSIZE) %d PAGE_ROUND_DOWN(dsec) %d\n",
-         dsec, (dsec/BLOCKSIZE), PAGE_ROUND_DOWN(dsec));
-
-   CcRequestCachePage(DeviceExt->Bcb,
-                     PAGE_ROUND_DOWN(dsec),
-                     &Inode->BaseAddress,
-                     &Uptodate,
-                     &Inode->CacheSeg);
-   DPRINT("PAGE_ROUND_DOWN(dsec)/BLOCKSIZE %d\n",
-         PAGE_ROUND_DOWN(dsec)/BLOCKSIZE);
-   if (!Uptodate)
-     {
-       Ext2ReadSectors(DeviceExt->StorageDevice,
-                       PAGE_ROUND_DOWN(dsec) / BLOCKSIZE,
-                       4,
-                       Inode->BaseAddress);
-     }
-   ibuffer = ((struct ext2_inode *)Inode->BaseAddress) +
-             (dsec - PAGE_ROUND_DOWN(dsec));
-   DPRINT("Inode->BaseAddress 0x%x ibuffer 0x%x\n",
-         Inode->BaseAddress, ibuffer);
-   Inode->inode = &ibuffer[offset % INODES_PER_PAGE];
-
-   DPRINT("inode->i_uid %d\n",Inode->inode->i_uid);
-   DPRINT("inode->i_links_count %d\n",Inode->inode->i_links_count);
-   DPRINT("inode->i_blocks %d\n",Inode->inode->i_blocks);
-
-   DPRINT("Ext2LoadInode() finished\n");
-}
-
-VOID Ext2ReleaseInode(PDEVICE_EXTENSION DeviceExt,
-                     PEXT2_INODE Inode)
-{
-   CcReleaseCachePage(DeviceExt->Bcb,
-                     Inode->CacheSeg,
-                     TRUE);
-   Inode->CacheSeg = NULL;
-   Inode->BaseAddress = NULL;
-   Inode->inode = NULL;
-}
-
-VOID Ext2ReadInode(PDEVICE_EXTENSION DeviceExt,
-                  ULONG ino,
-                  struct ext2_inode* inode)
-{
-   ULONG block_group;
-   struct ext2_group_desc* gdp;
-   ULONG offset;
-   struct ext2_inode* buffer;
-
-   DPRINT("Ext2ReadInode(DeviceExt %x, ino %d, inode %x)\n",
-         DeviceExt,ino,inode);
-
-   block_group = (ino - 1) / DeviceExt->superblock->s_inodes_per_group;
-
-   gdp = Ext2LoadGroupDesc(DeviceExt, block_group);
-
-
-
-   offset = (ino - 1) % DeviceExt->superblock->s_inodes_per_group;
-
-   buffer = ExAllocatePool(NonPagedPool, BLOCKSIZE);
-   Ext2ReadSectors(DeviceExt->StorageDevice,
-                  gdp->bg_inode_table + (offset / INODES_PER_BLOCK),
-                  1,
-                  buffer);
-   memcpy(inode,&buffer[offset % INODES_PER_BLOCK],sizeof(struct ext2_inode));
-
-   DPRINT("inode->i_uid %d\n",inode->i_uid);
-   DPRINT("inode->i_links_count %d\n",inode->i_links_count);
-   DPRINT("inode->i_blocks %d\n",inode->i_blocks);
-
-}
diff --git a/rosapps/ext2/quota.c b/rosapps/ext2/quota.c
deleted file mode 100644 (file)
index 2db7af0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             services/fs/ext2/quota.c
- * PURPOSE:          Quota support
- * PROGRAMMER:       David Welch (welch@mcmail.com)
- * UPDATE HISTORY:
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <ntddk.h>
-#include <wchar.h>
-#include <string.h>
-
-//#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS ****************************************************************/
-
-NTSTATUS STDCALL
-Ext2QueryQuota(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   NTSTATUS Status;
-
-   Status = STATUS_NOT_IMPLEMENTED;
-
-   Irp->IoStatus.Status = Status;
-   Irp->IoStatus.Information = 0;
-
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
-   return(Status);
-}
-
-NTSTATUS STDCALL
-Ext2SetQuota(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   NTSTATUS Status;
-
-   Status = STATUS_NOT_IMPLEMENTED;
-
-   Irp->IoStatus.Status = Status;
-   Irp->IoStatus.Information = 0;
-
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
-   return(Status);
-}
diff --git a/rosapps/ext2/rw.c b/rosapps/ext2/rw.c
deleted file mode 100644 (file)
index 1788408..0000000
+++ /dev/null
@@ -1,219 +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 <ntddk.h>
-#include <string.h>
-
-#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS *****************************************************************/
-
-NTSTATUS Ext2ReadPage(PDEVICE_EXTENSION DeviceExt,
-                     PEXT2_FCB Fcb,
-                     PVOID Buffer,
-                     ULONG Offset)
-{
-   ULONG block, i;
-
-   for (i=0; i<4; i++)
-     {
-       block = Ext2BlockMap(DeviceExt,
-                            Fcb->i.inode,
-                            Offset + i);
-       Ext2ReadSectors(DeviceExt->StorageDevice,
-                       block,
-                       1,
-                       Buffer + (i*BLOCKSIZE));
-     }
-   return(STATUS_SUCCESS);
-}
-
-NTSTATUS Ext2ReadFile(PDEVICE_EXTENSION DeviceExt,
-                     PFILE_OBJECT FileObject,
-                     PVOID Buffer,
-                     ULONG Length,
-                     LARGE_INTEGER OffsetL)
-{
-   PVOID BaseAddress;
-   BOOLEAN Uptodate = FALSE;
-   PCACHE_SEGMENT CacheSeg;
-   ULONG Offset = (ULONG)OffsetL.u.LowPart;
-   PEXT2_FCB Fcb;
-   ULONG block, i, Delta;
-   DPRINT("Ext2ReadFile(DeviceExt %x, FileObject %x, Buffer %x, Length %d, \n"
-         "OffsetL %d)\n",DeviceExt,FileObject,Buffer,Length,(ULONG)OffsetL);
-
-   Fcb = (PEXT2_FCB)FileObject->FsContext;
-
-   Ext2LoadInode(DeviceExt,
-                Fcb->inode,
-                &Fcb->i);
-
-   if (Offset >= Fcb->i.inode->i_size)
-     {
-       DPRINT("Returning end of file\n");
-       return(STATUS_END_OF_FILE);
-     }
-   if ((Offset + Length) > Fcb->i.inode->i_size)
-     {
-       Length = Fcb->i.inode->i_size - Offset;
-     }
-
-   Ext2ReleaseInode(DeviceExt,
-                   &Fcb->i);
-
-   if ((Offset % PAGE_SIZE) != 0)
-     {
-       Delta = min(PAGE_SIZE - (Offset % PAGE_SIZE),Length);
-       CcRequestCachePage(Fcb->Bcb,
-                          Offset,
-                          &BaseAddress,
-                          &Uptodate,
-                          &CacheSeg);
-       if (Uptodate == FALSE)
-         {
-            Ext2ReadPage(DeviceExt,
-                         Fcb,
-                         BaseAddress,
-                         Offset / BLOCKSIZE);
-         }
-       memcpy(Buffer, BaseAddress + (Offset % PAGE_SIZE), Delta);
-       CcReleaseCachePage(Fcb->Bcb,
-                          CacheSeg,
-                          TRUE);
-       Length = Length - Delta;
-       Offset = Offset + Delta;
-       Buffer = Buffer + Delta;
-     }
-   CHECKPOINT;
-   for (i=0; i<(Length/PAGE_SIZE); i++)
-     {
-       CcRequestCachePage(Fcb->Bcb,
-                          Offset,
-                          &BaseAddress,
-                          &Uptodate,
-                          &CacheSeg);
-       if (Uptodate == FALSE)
-         {
-            Ext2ReadPage(DeviceExt,
-                         Fcb,
-                         BaseAddress,
-                         (Offset / BLOCKSIZE));
-         }
-       memcpy(Buffer, BaseAddress, PAGE_SIZE);
-       CcReleaseCachePage(Fcb->Bcb,
-                          CacheSeg,
-                          TRUE);
-       Length = Length - PAGE_SIZE;
-       Offset = Offset + PAGE_SIZE;
-       Buffer = Buffer + PAGE_SIZE;
-     }
-   CHECKPOINT;
-   if ((Length % PAGE_SIZE) != 0)
-     {
-       CcRequestCachePage(Fcb->Bcb,
-                          Offset,
-                          &BaseAddress,
-                          &Uptodate,
-                          &CacheSeg);
-       if (Uptodate == FALSE)
-         {
-            Ext2ReadPage(DeviceExt,
-                         Fcb,
-                         BaseAddress,
-                         (Offset / BLOCKSIZE));
-         }
-       DPRINT("Copying %x to %x Length %d\n",BaseAddress,Buffer,Length);
-       memcpy(Buffer,BaseAddress,Length);
-       CcReleaseCachePage(Fcb->Bcb,
-                          CacheSeg,
-                          TRUE);
-     }
-   CHECKPOINT;
-
-   return(STATUS_SUCCESS);
-}
-
-
-NTSTATUS STDCALL
-Ext2Write(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   DPRINT("Ext2Write(DeviceObject %x Irp %x)\n",DeviceObject,Irp);
-
-   Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
-   Irp->IoStatus.Information = 0;
-   return(STATUS_UNSUCCESSFUL);
-}
-
-NTSTATUS STDCALL
-Ext2FlushBuffers(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   DPRINT("Ext2FlushBuffers(DeviceObject %x Irp %x)\n",DeviceObject,Irp);
-
-   Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
-   Irp->IoStatus.Information = 0;
-   return(STATUS_UNSUCCESSFUL);
-}
-
-NTSTATUS STDCALL
-Ext2Shutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   DPRINT("Ext2Shutdown(DeviceObject %x Irp %x)\n",DeviceObject,Irp);
-
-   Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
-   Irp->IoStatus.Information = 0;
-   return(STATUS_UNSUCCESSFUL);
-}
-
-NTSTATUS STDCALL
-Ext2Cleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   DbgPrint("Ext2Cleanup(DeviceObject %x Irp %x)\n",DeviceObject,Irp);
-
-   Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
-   Irp->IoStatus.Information = 0;
-
-   DbgPrint("Ext2Cleanup() finished\n");
-
-   return(STATUS_UNSUCCESSFUL);
-}
-
-NTSTATUS STDCALL
-Ext2Read(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   ULONG Length;
-   PVOID Buffer;
-   PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
-   PFILE_OBJECT FileObject = Stack->FileObject;
-   PDEVICE_EXTENSION DeviceExt = DeviceObject->DeviceExtension;
-   NTSTATUS Status;
-
-   DPRINT("Ext2Read(DeviceObject %x, FileObject %x, Irp %x)\n",
-         DeviceObject, FileObject, Irp);
-
-   Length = Stack->Parameters.Read.Length;
-   CHECKPOINT;
-   Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress);
-   CHECKPOINT;
-   CHECKPOINT;
-
-   Status = Ext2ReadFile(DeviceExt,FileObject,Buffer,Length,
-                        Stack->Parameters.Read.ByteOffset);
-
-   Irp->IoStatus.Status = Status;
-   Irp->IoStatus.Information = Length;
-   IoCompleteRequest(Irp,IO_NO_INCREMENT);
-
-   return(Status);
-}
diff --git a/rosapps/ext2/security.c b/rosapps/ext2/security.c
deleted file mode 100644 (file)
index 3862816..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * COPYRIGHT:        See COPYING in the top level directory
- * PROJECT:          ReactOS kernel
- * FILE:             services/fs/ext2/security.c
- * PURPOSE:          Security support
- * PROGRAMMER:       David Welch (welch@mcmail.com)
- * UPDATE HISTORY:
- */
-
-/* INCLUDES *****************************************************************/
-
-#include <ntddk.h>
-#include <wchar.h>
-#include <string.h>
-
-//#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* FUNCTIONS ****************************************************************/
-
-NTSTATUS STDCALL
-Ext2QuerySecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   DPRINT("Ext2QuerySecurity(DeviceObject %x Irp %x)\n",DeviceObject,Irp);
-
-   Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
-   Irp->IoStatus.Information = 0;
-   return(STATUS_UNSUCCESSFUL);
-}
-
-NTSTATUS STDCALL
-Ext2SetSecurity(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   DPRINT("Ext2SetSecurity(DeviceObject %x Irp %x)\n",DeviceObject,Irp);
-
-   Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
-   Irp->IoStatus.Information = 0;
-   return(STATUS_UNSUCCESSFUL);
-}
diff --git a/rosapps/ext2/super.c b/rosapps/ext2/super.c
deleted file mode 100644 (file)
index 43f921d..0000000
+++ /dev/null
@@ -1,201 +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 <ntddk.h>
-
-//#define NDEBUG
-#include <debug.h>
-
-#include "ext2fs.h"
-
-/* GLOBALS *****************************************************************/
-
-static PDRIVER_OBJECT DriverObject;
-
-/* FUNCTIONS ****************************************************************/
-
-NTSTATUS STDCALL
-Ext2Close(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   PIO_STACK_LOCATION Stack;
-   PFILE_OBJECT FileObject;
-   PDEVICE_EXTENSION DeviceExtension;
-   NTSTATUS Status;
-   PEXT2_FCB Fcb;
-
-   DbgPrint("Ext2Close(DeviceObject %x, Irp %x)\n",DeviceObject,Irp);
-
-   Stack = IoGetCurrentIrpStackLocation(Irp);
-   FileObject = Stack->FileObject;
-   DeviceExtension = DeviceObject->DeviceExtension;
-
-   if (FileObject == DeviceExtension->FileObject)
-     {
-       Status = STATUS_SUCCESS;
-
-       Irp->IoStatus.Status = Status;
-       Irp->IoStatus.Information = 0;
-
-       IoCompleteRequest(Irp, IO_NO_INCREMENT);
-       return(Status);
-     }
-
-   Fcb = (PEXT2_FCB)FileObject->FsContext;
-   if (Fcb != NULL)
-     {
-       if (Fcb->Bcb != NULL)
-         {
-            CcRosReleaseFileCache(FileObject, Fcb->Bcb);
-         }
-       ExFreePool(Fcb);
-       FileObject->FsContext = NULL;
-     }
-
-   Status = STATUS_SUCCESS;
-
-   Irp->IoStatus.Status = Status;
-   Irp->IoStatus.Information = 0;
-
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
-   return(Status);
-}
-
-NTSTATUS Ext2Mount(PDEVICE_OBJECT DeviceToMount)
-{
-   PDEVICE_OBJECT DeviceObject;
-   PDEVICE_EXTENSION DeviceExt;
-   PVOID BlockBuffer;
-   struct ext2_super_block* superblock;
-
-   DPRINT("Ext2Mount(DeviceToMount %x)\n",DeviceToMount);
-
-   BlockBuffer = ExAllocatePool(NonPagedPool,BLOCKSIZE);
-   Ext2ReadSectors(DeviceToMount,
-                  1,
-                  1,
-                  BlockBuffer);
-   superblock = BlockBuffer;
-
-   if (superblock->s_magic != EXT2_SUPER_MAGIC)
-     {
-       ExFreePool(BlockBuffer);
-       return(STATUS_UNRECOGNIZED_VOLUME);
-     }
-   DPRINT("Volume recognized\n");
-   DPRINT("s_inodes_count %d\n",superblock->s_inodes_count);
-   DPRINT("s_blocks_count %d\n",superblock->s_blocks_count);
-
-   IoCreateDevice(DriverObject,
-                 sizeof(DEVICE_EXTENSION),
-                 NULL,
-                 FILE_DEVICE_FILE_SYSTEM,
-                 0,
-                 FALSE,
-                 &DeviceObject);
-   DPRINT("DeviceObject %x\n",DeviceObject);
-   DeviceObject->Flags = DeviceObject->Flags | DO_DIRECT_IO;
-   DeviceExt = (PVOID)DeviceObject->DeviceExtension;
-   DPRINT("DeviceExt %x\n",DeviceExt);
-
-  DeviceExt->StorageDevice = DeviceToMount;
-  DeviceExt->StorageDevice->Vpb->DeviceObject = DeviceObject;
-  DeviceExt->StorageDevice->Vpb->RealDevice = DeviceExt->StorageDevice;
-  DeviceExt->StorageDevice->Vpb->Flags |= VPB_MOUNTED;
-  DeviceObject->StackSize = DeviceExt->StorageDevice->StackSize + 1;
-  DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
-
-   DPRINT("DeviceExt->StorageDevice %x\n", DeviceExt->StorageDevice);
-   DeviceExt->FileObject = IoCreateStreamFileObject(NULL, DeviceObject);
-   DeviceExt->superblock = superblock;
-   CcRosInitializeFileCache(DeviceExt->FileObject,
-                           &DeviceExt->Bcb,
-                           PAGE_SIZE * 3);
-
-   DPRINT("Ext2Mount() = STATUS_SUCCESS\n");
-
-   return(STATUS_SUCCESS);
-}
-
-NTSTATUS STDCALL
-Ext2FileSystemControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
-{
-   PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp);
-   PVPB        vpb = Stack->Parameters.Mount.Vpb;
-   PDEVICE_OBJECT DeviceToMount = Stack->Parameters.Mount.DeviceObject;
-   NTSTATUS Status;
-
-   Status = Ext2Mount(DeviceToMount);
-
-   Irp->IoStatus.Status = Status;
-   Irp->IoStatus.Information = 0;
-
-   IoCompleteRequest(Irp, IO_NO_INCREMENT);
-   return(Status);
-}
-
-NTSTATUS STDCALL
-DriverEntry(PDRIVER_OBJECT _DriverObject,
-           PUNICODE_STRING RegistryPath)
-/*
- * FUNCTION: Called by the system to initalize the driver
- * ARGUMENTS:
- *           DriverObject = object describing this driver
- *           RegistryPath = path to our configuration entries
- * RETURNS: Success or failure
- */
-{
-   PDEVICE_OBJECT DeviceObject;
-   NTSTATUS ret;
-   UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\Ext2Fsd");
-
-   DbgPrint("Ext2 FSD 0.0.1\n");
-
-   DriverObject = _DriverObject;
-
-   ret = IoCreateDevice(DriverObject,
-                       0,
-                       &DeviceName,
-                       FILE_DEVICE_FILE_SYSTEM,
-                       0,
-                       FALSE,
-                       &DeviceObject);
-   if (ret!=STATUS_SUCCESS)
-     {
-       return(ret);
-     }
-
-   DeviceObject->Flags=0;
-   DriverObject->MajorFunction[IRP_MJ_CLOSE] = Ext2Close;
-   DriverObject->MajorFunction[IRP_MJ_CREATE] = Ext2Create;
-   DriverObject->MajorFunction[IRP_MJ_READ] = Ext2Read;
-   DriverObject->MajorFunction[IRP_MJ_WRITE] = Ext2Write;
-   DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] =
-                      Ext2FileSystemControl;
-   DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] =
-                      Ext2DirectoryControl;
-   DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] =
-                      Ext2QueryInformation;
-   DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = Ext2SetInformation;
-   DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = Ext2FlushBuffers;
-   DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = Ext2Shutdown;
-   DriverObject->MajorFunction[IRP_MJ_CLEANUP] = Ext2Cleanup;
-   DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY] = Ext2QuerySecurity;
-   DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] = Ext2SetSecurity;
-   DriverObject->MajorFunction[IRP_MJ_QUERY_QUOTA] = Ext2QueryQuota;
-   DriverObject->MajorFunction[IRP_MJ_SET_QUOTA] = Ext2SetQuota;
-
-   DriverObject->DriverUnload = NULL;
-
-   IoRegisterFileSystem(DeviceObject);
-
-   return(STATUS_SUCCESS);
-}
-