81.3.2.4. FILE SYSTEM DRIVERS (FSD)




THIS SECTION IS UNDER CONSTRUCTION


Концептуальный API для FSD

UNIX вариант vfsops для томы mount start unmount root quotactl getattr sync vfsop_get fhtovp vptofh init sysctl setattr ... vnops для vnodes getattr получение аттрибутов setattr inactive - vnode становиться неактивной (например удалили) но еще живет revoke reclaim - полностью удаляется vnode pathconf - информация о поддержке возможностей максимальная длинна symbolic link максимальная длинна имени файла максимальная длинна пути case-sensitivity case-preserving extended attributes support lookup close open readdir fsync blockmap - берет адресс кластера на диске blktooff offtoblk strategy read write create whiteout mknod symlink readlink readdirattr remove link rename mkdir rmdir allocate getxattr setxattr removexattr listxattr getattrlist mmap mnomap pagein pageout exchange kqfilt_add kqfilt_remove Linux super_operations alloc_inode destroy_inode read_inode dirty_inode write_inode put_inode drop_inode delete_inode put_super write_super sync_fs write_super_lockfs unlockfs statfs remount_fs clear_inode umount_begin show_options Windows вариант IRP_MJ_CREATE IRP_MJ_CLOSE IRP_MJ_READ IRP_MJ_WRITE IRP_MJ_QUERY_INFORMATION FileBasicInformation FileStandardInformation FileInternalInformation FileEaInformation FileNameInformation FileCompressionInformation FilePositionInformation FileAllInformation FileStreamInformation (FileAccessInformation) (FileModeInformation) (FileAlignmentInformation) IRP_MJ_SET_INFORMATION FileDispositionInformation FileAllocationInformation FileEndOfFileInformation FileRenameInformation IRP_MJ_FLUSH_BUFFERS IRP_MJ_QUERY_VOLUME_INFORMATION FileFsVolumeInformation FileFsSizeInformation FileFsDeviceInformation FILE_REMOVABLE_MEDIA FILE_READ_ONLY_DEVICE FILE_FLOPPY_DISKETTE FILE_WRITE_ONCE_MEDIA FILE_REMOTE_DEVICE FILE_DEVICE_IS_MOUNTED FILE_VIRTUAL_VOLUME FileFsAttributeInformation FILE_CASE_SENSITIVE_SEARCH FILE_CASE_PRESERVED_NAMES FILE_UNICODE_ON_DISK FILE_PERSISTENT_ACKS FILE_FILE_COMPRESSION FILE_VOLUME_IS_COMPRESSED IRP_MJ_SET_VOLUME_INFORMATION FileFsLabelInformation IRP_MJ_DIRECTORY_CONTROL IRP_MN_QUERY_DIRECTORY FileDirectoryInformation FileFullDirectoryInformation FileBothDirectoryInformation FileNamesInformation IRP_MN_NOTIFY_CHANGE_DIRECTORY IRP_MJ_FILE_SYSTEM_CONTROL IRP_MN_USER_FS_REQUEST FSCTL_LOCK_VOLUME FSCTL_UNLOCK_VOLUME FSCTL_DISMOUNT_VOLUME FSCTL_MARK_VOLUME_DIRTY FSCTL_IS_VOLUME_MOUNTED FSCTL_IS_PATHNAME_VALID FSCTL_QUERY_RETRIEVAL_POINTERS IRP_MN_MOUNT_VOLUME IRP_MN_LOAD_FILE_SYSTEM IRP_MJ_DEVICE_CONTROL IRP_MJ_SHUTDOWN IRP_MJ_LOCK_CONTROL IRP_MN_LOCK IRP_MN_UNLOCK_SINGLE IRP_MN_UNLOCK_ALL IRP_MN_UNLOCK_ALL_BY_KEY IRP_MJ_CLEANUP IRP_MJ_QUERY_SECURITY IRP_MJ_SET_SECURITY IRP_MJ_QUERY_EA IRP_MJ_SET_EA FastIO FastIoCheckIfPossible FastIoRead FastIoWrite FastIoQueryBasicInfo FastIoQueryStandardInfo FastIoLock FastIoUnlockSingle FastIoUnlockAll FastIoUnlockAllByKey AcquireFileForNtCreateSection ReleaseFileForNtCreateSection FastIoQueryNetworkOpenInfo AcquireForModWrite ReleaseForModWrite AcquireForCcFlush ReleaseForCcFlush MdlRead MdlReadComplete PrepareMdlWrite MdlWriteComplete Тонкие моменты: Remount - устройство неожиданно вытащили и потом снова вставили соответвенно есть открытые объекты, несброшенные записи. Обработка ошибок: например возникли проблемы (например устройство исчезло) Надо провзаимодействовать с OS, чтобы выдать пользователю диалог типа Retry, Abort, Ignore и продолжить обработку после получения решения.

Index Prev Next