- Want to use dummy inodes for address space i/o. We need some VFS
changes first, which are currently under discussion.
+2.0.7 - Minor cleanups and updates for changes in core kernel code.
+
+ - Remove much of the NULL struct element initializers.
+ - Various updates to make compatible with recent kernels.
+
2.0.6 - Major bugfix to make compatible with other kernel changes.
- Initialize the mftbmp address space properly now that there are more
obj-m := $(O_TARGET)
-EXTRA_CFLAGS = -DNTFS_VERSION=\"2.0.6\"
+EXTRA_CFLAGS = -DNTFS_VERSION=\"2.0.7\"
ifeq ($(CONFIG_NTFS_DEBUG),y)
EXTRA_CFLAGS += -DDEBUG
disk request queue. */
prepare_write: NULL, /* . */
commit_write: NULL, /* . */
- //truncatepage: NULL, /* . */
};
struct file_operations ntfs_file_ops = {
llseek: generic_file_llseek, /* Seek inside file. */
read: generic_file_read, /* Read from file. */
- write: NULL, /* . */
- readdir: NULL, /* . */
- poll: NULL, /* . */
- ioctl: NULL, /* . */
mmap: generic_file_mmap, /* Mmap file. */
open: generic_file_open, /* Open file. */
- flush: NULL, /* . */
- release: NULL, /* . */
- fsync: NULL, /* . */
- fasync: NULL, /* . */
- lock: NULL, /* . */
- readv: NULL, /* . */
- writev: NULL, /* . */
- sendpage: NULL, /* . */
- get_unmapped_area: NULL, /* . */
};
-struct inode_operations ntfs_file_inode_ops = {
- create: NULL, /* . */
- lookup: NULL, /* . */
- link: NULL, /* . */
- unlink: NULL, /* . */
- symlink: NULL, /* . */
- mkdir: NULL, /* . */
- rmdir: NULL, /* . */
- mknod: NULL, /* . */
- rename: NULL, /* . */
- readlink: NULL, /* . */
- follow_link: NULL, /* . */
- truncate: NULL, /* . */
- permission: NULL, /* . */
- revalidate: NULL, /* . */
- setattr: NULL, /* . */
- getattr: NULL, /* . */
-};
-
-#if 0
-/* NOTE: read, write, poll, fsync, readv, writev can be called without the big
- * kernel lock held in all filesystems. */
-struct file_operations {
- struct module *owner;
- loff_t (*llseek) (struct file *, loff_t, int);
- ssize_t (*read) (struct file *, char *, size_t, loff_t *);
- ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
- int (*readdir) (struct file *, void *, filldir_t);
- unsigned int (*poll) (struct file *, struct poll_table_struct *);
- int (*ioctl) (struct inode *, struct file *, unsigned int,
- unsigned long);
- int (*mmap) (struct file *, struct vm_area_struct *);
- int (*flush) (struct file *);
- int (*release) (struct inode *, struct file *);
- int (*fsync) (struct file *, struct dentry *, int datasync);
- int (*fasync) (int, struct file *, int);
- int (*lock) (struct file *, int, struct file_lock *);
- ssize_t (*readv) (struct file *, const struct iovec *, unsigned long,
- loff_t *);
- ssize_t (*writev) (struct file *, const struct iovec *, unsigned long,
- loff_t *);
- ssize_t (*sendpage) (struct file *, struct page *, int, size_t,
- loff_t *, int);
- unsigned long (*get_unmapped_area)(struct file *, unsigned long,
- unsigned long, unsigned long, unsigned long);
-};
+struct inode_operations ntfs_file_inode_ops = {};
-struct inode_operations {
- int (*create) (struct inode *,struct dentry *,int);
- struct dentry * (*lookup) (struct inode *,struct dentry *);
- int (*link) (struct dentry *,struct inode *,struct dentry *);
- int (*unlink) (struct inode *,struct dentry *);
- int (*symlink) (struct inode *,struct dentry *,const char *);
- int (*mkdir) (struct inode *,struct dentry *,int);
- int (*rmdir) (struct inode *,struct dentry *);
- int (*mknod) (struct inode *,struct dentry *,int,int);
- int (*rename) (struct inode *, struct dentry *,
- struct inode *, struct dentry *);
- int (*readlink) (struct dentry *, char *,int);
- int (*follow_link) (struct dentry *, struct nameidata *);
- void (*truncate) (struct inode *);
- int (*permission) (struct inode *, int);
- int (*revalidate) (struct dentry *);
- int (*setattr) (struct dentry *, struct iattr *);
- int (*getattr) (struct dentry *, struct iattr *);
-};
-#endif
+struct file_operations ntfs_empty_file_ops = {};
-struct file_operations ntfs_empty_file_ops = {
- llseek: NULL, /* . */
- read: NULL, /* . */
- write: NULL, /* . */
- readdir: NULL, /* . */
- poll: NULL, /* . */
- ioctl: NULL, /* . */
- mmap: NULL, /* . */
- open: NULL, /* . */
- flush: NULL, /* . */
- release: NULL, /* . */
- fsync: NULL, /* . */
- fasync: NULL, /* . */
- lock: NULL, /* . */
- readv: NULL, /* . */
- writev: NULL, /* . */
- sendpage: NULL, /* . */
- get_unmapped_area: NULL, /* . */
-};
-
-struct inode_operations ntfs_empty_inode_ops = {
- create: NULL, /* . */
- lookup: NULL, /* . */
- link: NULL, /* . */
- unlink: NULL, /* . */
- symlink: NULL, /* . */
- mkdir: NULL, /* . */
- rmdir: NULL, /* . */
- mknod: NULL, /* . */
- rename: NULL, /* . */
- readlink: NULL, /* . */
- follow_link: NULL, /* . */
- truncate: NULL, /* . */
- permission: NULL, /* . */
- revalidate: NULL, /* . */
- setattr: NULL, /* . */
- getattr: NULL, /* . */
-};
+struct inode_operations ntfs_empty_inode_ops = {};
disk request queue. */
prepare_write: NULL, /* . */
commit_write: NULL, /* . */
- bmap: NULL, /* Needed for FIBMAP.
- Don't use it. */
- flushpage: NULL, /* . */
- releasepage: NULL, /* . */
-#ifdef KERNEL_HAS_O_DIRECT
- direct_IO: NULL, /* . */
-#endif
};
/**
}
struct inode_operations ntfs_dir_inode_ops = {
- create: NULL, /* . */
lookup: ntfs_lookup, /* lookup directory. */
- link: NULL, /* . */
- unlink: NULL, /* . */
- symlink: NULL, /* . */
- mkdir: NULL, /* . */
- rmdir: NULL, /* . */
- mknod: NULL, /* . */
- rename: NULL, /* . */
- readlink: NULL, /* . */
- follow_link: NULL, /* . */
- truncate: NULL, /* . */
- permission: NULL, /* . */
- revalidate: NULL, /* . */
- setattr: NULL, /* . */
- getattr: NULL, /* . */
};
-#if 0
-struct inode_operations {
- int (*create) (struct inode *,struct dentry *,int);
- struct dentry * (*lookup) (struct inode *,struct dentry *);
- int (*link) (struct dentry *,struct inode *,struct dentry *);
- int (*unlink) (struct inode *,struct dentry *);
- int (*symlink) (struct inode *,struct dentry *,const char *);
- int (*mkdir) (struct inode *,struct dentry *,int);
- int (*rmdir) (struct inode *,struct dentry *);
- int (*mknod) (struct inode *,struct dentry *,int,int);
- int (*rename) (struct inode *, struct dentry *,
- struct inode *, struct dentry *);
- int (*readlink) (struct dentry *, char *,int);
- int (*follow_link) (struct dentry *, struct nameidata *);
- void (*truncate) (struct inode *);
- int (*permission) (struct inode *, int);
- int (*revalidate) (struct dentry *);
- int (*setattr) (struct dentry *, struct iattr *);
- int (*getattr) (struct dentry *, struct iattr *);
-};
-#endif
-
called from iget(). */
dirty_inode: ntfs_dirty_inode, /* VFS: Called from
__mark_inode_dirty(). */
- write_inode: NULL, /* VFS: Write dirty inode to disk. */
- put_inode: NULL, /* VFS: Called whenever the reference
- count (i_count) of the inode is
- going to be decreased but before the
- actual decrease. */
- delete_inode: NULL, /* VFS: Delete inode from disk. Called
- when i_count becomes 0 and i_nlink is
- also 0. */
+ //write_inode: NULL, /* VFS: Write dirty inode to disk. */
+ //put_inode: NULL, /* VFS: Called whenever the reference
+ // count (i_count) of the inode is
+ // going to be decreased but before the
+ // actual decrease. */
+ //delete_inode: NULL, /* VFS: Delete inode from disk. Called
+ // when i_count becomes 0 and i_nlink is
+ // also 0. */
put_super: ntfs_put_super, /* Syscall: umount. */
- write_super: NULL, /* Flush dirty super block to disk. */
- write_super_lockfs: NULL, /* ? */
- unlockfs: NULL, /* ? */
+ //write_super: NULL, /* Flush dirty super block to disk. */
+ //write_super_lockfs: NULL, /* ? */
+ //unlockfs: NULL, /* ? */
statfs: ntfs_statfs, /* Syscall: statfs */
remount_fs: ntfs_remount, /* Syscall: mount -o remount. */
clear_inode: ntfs_clear_big_inode, /* VFS: Called when an inode is
removed from memory. */
- umount_begin: NULL, /* Forced umount. */
- /*
- * These are NFSd support functions but NTFS is a standard fs so
- * shouldn't need to implement these manually. At least we can try
- * without and if it doesn't work in some way we can always implement
- * something here.
- */
- fh_to_dentry: NULL, /* Get dentry for given file handle. */
- dentry_to_fh: NULL, /* Get file handle for given dentry. */
+ //umount_begin: NULL, /* Forced umount. */
show_options: ntfs_show_options, /* Show mount options in proc. */
};