LWN.net Logo

NTFS: 2.0.22 - Cleanups, mainly ntfs_readdir(), and use C99 initializers

From:  Anton Altaparmakov <aia21@cantab.net>
To:  torvalds@transmeta.com (Linus Torvalds)
Subject:  [BK-PATCH-2.5] NTFS: 2.0.22 - Cleanups, mainly ntfs_readdir(), and use C99 initializers
Date:  Wed, 24 Jul 2002 22:11:58 +0100 (BST)
Cc:  linux-kernel@vger.kernel.org (Linux Kernel)

Linus, please do a

	bk pull http://linux-ntfs.bkbits.net/ntfs-tng-2.5

Thanks! Just a small cleanup to ntfs...

Best regards,

	Anton
-- 
Anton Altaparmakov <aia21 at cantab.net> (replace at with @)
Linux NTFS maintainer / IRC: #ntfs on irc.openprojects.net
WWW: http://linux-ntfs.sf.net/, http://www-stu.christs.cam.ac.uk/~aia21/

===================================================================

This will update the following files:

 Documentation/filesystems/ntfs.txt |    2 +
 fs/ntfs/ChangeLog                  |    7 +++
 fs/ntfs/Makefile                   |    2 -
 fs/ntfs/aops.c                     |   10 +----
 fs/ntfs/dir.c                      |   72 +++++++++++++++++++------------------
 fs/ntfs/file.c                     |   10 ++---
 fs/ntfs/inode.c                    |   14 ++++---
 fs/ntfs/inode.h                    |    2 -
 fs/ntfs/mft.c                      |   10 ++---
 fs/ntfs/namei.c                    |    2 -
 fs/ntfs/super.c                    |   62 +++++++++++++++----------------
 11 files changed, 102 insertions(+), 91 deletions(-)

through these ChangeSets:

<aia21@cantab.net> (02/07/24 1.432)
   NTFS: 2.0.22 - Cleanups, mainly to ntfs_readdir(), and use C99 initializers.
   - Change fs/ntfs/dir.c::ntfs_reddir() to only read/write ->f_pos once
     at entry/exit respectively.
   - Use C99 initializers for structures.
   - Remove unused variable blocks from fs/ntfs/aops.c::ntfs_read_block().

<aia21@cantab.net> (02/07/24 1.433)
   NTFS: oops... remove leaked one liner from ntfs write tree


diff -Nru a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt
--- a/Documentation/filesystems/ntfs.txt	Wed Jul 24 21:57:40 2002
+++ b/Documentation/filesystems/ntfs.txt	Wed Jul 24 21:57:40 2002
@@ -247,6 +247,8 @@
 
 Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
 
+2.0.22:
+	- Small internal cleanups.
 2.0.21:
 	These only affect 32-bit architectures:
 	- Check for, and refuse to mount too large volumes (maximum is 2TiB).
diff -Nru a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
--- a/fs/ntfs/ChangeLog	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/ChangeLog	Wed Jul 24 21:57:40 2002
@@ -2,6 +2,13 @@
 	- Find and fix bugs.
 	- Enable NFS exporting of NTFS.
 
+2.0.22 - Cleanups, mainly to ntfs_readdir(), and use C99 initializers.
+
+	- Change fs/ntfs/dir.c::ntfs_reddir() to only read/write ->f_pos once
+	  at entry/exit respectively.
+	- Use C99 initializers for structures.
+	- Remove unused variable blocks from fs/ntfs/aops.c::ntfs_read_block().
+
 2.0.21 - Check for, and refuse to work with too large files/directories/volumes.
 
 	- Limit volume size at mount time to 2TiB on architectures where
diff -Nru a/fs/ntfs/Makefile b/fs/ntfs/Makefile
--- a/fs/ntfs/Makefile	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/Makefile	Wed Jul 24 21:57:40 2002
@@ -5,7 +5,7 @@
 ntfs-objs := aops.o attrib.o compress.o debug.o dir.o file.o inode.o mft.o \
 	     mst.o namei.o super.o sysctl.o time.o unistr.o upcase.o
 
-EXTRA_CFLAGS = -DNTFS_VERSION=\"2.0.21\"
+EXTRA_CFLAGS = -DNTFS_VERSION=\"2.0.22\"
 
 ifeq ($(CONFIG_NTFS_DEBUG),y)
 EXTRA_CFLAGS += -DDEBUG
diff -Nru a/fs/ntfs/aops.c b/fs/ntfs/aops.c
--- a/fs/ntfs/aops.c	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/aops.c	Wed Jul 24 21:57:40 2002
@@ -171,7 +171,7 @@
 	run_list_element *rl;
 	struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE];
 	sector_t iblock, lblock, zblock;
-	unsigned int blocksize, blocks, vcn_ofs;
+	unsigned int blocksize, vcn_ofs;
 	int i, nr;
 	unsigned char blocksize_bits;
 
@@ -187,7 +187,6 @@
 	if (unlikely(!bh))
 		return -ENOMEM;
 
-	blocks = PAGE_CACHE_SIZE >> blocksize_bits;
 	iblock = page->index << (PAGE_CACHE_SHIFT - blocksize_bits);
 	lblock = (ni->allocated_size + blocksize - 1) >> blocksize_bits;
 	zblock = (ni->initialized_size + blocksize - 1) >> blocksize_bits;
@@ -427,11 +426,8 @@
  * ntfs_aops - general address space operations for inodes and attributes
  */
 struct address_space_operations ntfs_aops = {
-	writepage:	NULL,			/* Write dirty page to disk. */
-	readpage:	ntfs_readpage,		/* Fill page with data. */
-	sync_page:	block_sync_page,	/* Currently, just unplugs the
+	.readpage	= ntfs_readpage,	/* Fill page with data. */
+	.sync_page	= block_sync_page,	/* Currently, just unplugs the
 						   disk request queue. */
-	prepare_write:	NULL,			/* . */
-	commit_write:	NULL,			/* . */
 };
 
diff -Nru a/fs/ntfs/dir.c b/fs/ntfs/dir.c
--- a/fs/ntfs/dir.c	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/dir.c	Wed Jul 24 21:57:40 2002
@@ -974,7 +974,7 @@
 /**
  * ntfs_filldir - ntfs specific filldir method
  * @vol:	current ntfs volume
- * @filp:	open file descriptor for the current directory
+ * @fpos:	position in the directory
  * @ndir:	ntfs inode of current directory
  * @index_type:	specifies whether @iu is an index root or an index allocation
  * @iu:		index root or index allocation attribute to which @ie belongs
@@ -986,7 +986,7 @@
  * Convert the Unicode @name to the loaded NLS and pass it to the @filldir
  * callback.
  */
-static inline int ntfs_filldir(ntfs_volume *vol, struct file *filp,
+static inline int ntfs_filldir(ntfs_volume *vol, loff_t *fpos,
 		ntfs_inode *ndir, const INDEX_TYPE index_type,
 		index_union iu, INDEX_ENTRY *ie, u8 *name,
 		void *dirent, filldir_t filldir)
@@ -997,12 +997,12 @@
 
 	/* Advance the position even if going to skip the entry. */
 	if (index_type == INDEX_TYPE_ALLOCATION)
-		filp->f_pos = (u8*)ie - (u8*)iu.ia +
+		*fpos = (u8*)ie - (u8*)iu.ia +
 				(sle64_to_cpu(iu.ia->index_block_vcn) <<
 				ndir->_IDM(index_vcn_size_bits)) +
 				vol->mft_record_size;
 	else /* if (index_type == INDEX_TYPE_ROOT) */
-		filp->f_pos = (u8*)ie - (u8*)iu.ir;
+		*fpos = (u8*)ie - (u8*)iu.ir;
 	name_type = ie->key.file_name.file_name_type;
 	if (name_type == FILE_NAME_DOS) {
 		ntfs_debug("Skipping DOS name space entry.");
@@ -1029,11 +1029,11 @@
 		dt_type = DT_DIR;
 	else
 		dt_type = DT_REG;
-	ntfs_debug("Calling filldir for %s with len %i, f_pos 0x%Lx, inode "
-			"0x%lx, DT_%s.", name, name_len, filp->f_pos,
+	ntfs_debug("Calling filldir for %s with len %i, fpos 0x%Lx, inode "
+			"0x%lx, DT_%s.", name, name_len, *fpos,
 			MREF_LE(ie->_IIF(indexed_file)),
 			dt_type == DT_DIR ? "DIR" : "REG");
-	return filldir(dirent, name, name_len, filp->f_pos,
+	return filldir(dirent, name, name_len, *fpos,
 			MREF_LE(ie->_IIF(indexed_file)), dt_type);
 }
 
@@ -1053,6 +1053,7 @@
 static int ntfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
 {
 	s64 ia_pos, ia_start, prev_ia_pos, bmp_pos;
+	loff_t fpos;
 	struct inode *bmp_vi, *vdir = filp->f_dentry->d_inode;
 	struct super_block *sb = vdir->i_sb;
 	ntfs_inode *ndir = NTFS_I(vdir);
@@ -1068,30 +1069,31 @@
 	u8 *kaddr, *bmp, *index_end;
 	attr_search_context *ctx;
 
-	ntfs_debug("Entering for inode 0x%lx, f_pos 0x%Lx.",
-			vdir->i_ino, filp->f_pos);
+	fpos = filp->f_pos;
+	ntfs_debug("Entering for inode 0x%lx, fpos 0x%Lx.",
+			vdir->i_ino, fpos);
 	rc = err = 0;
 	/* Are we at end of dir yet? */
-	if (filp->f_pos >= vdir->i_size + vol->mft_record_size)
+	if (fpos >= vdir->i_size + vol->mft_record_size)
 		goto done;
 	/* Emulate . and .. for all directories. */
-	if (!filp->f_pos) {
-		ntfs_debug("Calling filldir for . with len 1, f_pos 0x0, "
+	if (!fpos) {
+		ntfs_debug("Calling filldir for . with len 1, fpos 0x0, "
 				"inode 0x%lx, DT_DIR.", vdir->i_ino);
-		rc = filldir(dirent, ".", 1, filp->f_pos, vdir->i_ino, DT_DIR);
+		rc = filldir(dirent, ".", 1, fpos, vdir->i_ino, DT_DIR);
 		if (rc)
 			goto done;
-		filp->f_pos++;
+		fpos++;
 	}
-	if (filp->f_pos == 1) {
-		ntfs_debug("Calling filldir for .. with len 2, f_pos 0x1, "
+	if (fpos == 1) {
+		ntfs_debug("Calling filldir for .. with len 2, fpos 0x1, "
 				"inode 0x%lx, DT_DIR.",
 				parent_ino(filp->f_dentry));
-		rc = filldir(dirent, "..", 2, filp->f_pos,
+		rc = filldir(dirent, "..", 2, fpos,
 				parent_ino(filp->f_dentry), DT_DIR);
 		if (rc)
 			goto done;
-		filp->f_pos++;
+		fpos++;
 	}
 
 	/* Get hold of the mft record for the directory. */
@@ -1120,10 +1122,10 @@
 		goto err_out;
 	}
 	/* Are we jumping straight into the index allocation attribute? */
-	if (filp->f_pos >= vol->mft_record_size)
+	if (fpos >= vol->mft_record_size)
 		goto skip_index_root;
 	/* Get the offset into the index root attribute. */
-	ir_pos = (s64)filp->f_pos;
+	ir_pos = (s64)fpos;
 	/* Find the index root attribute in the mft record. */
 	if (unlikely(!lookup_attr(AT_INDEX_ROOT, I30, 4, CASE_SENSITIVE, 0,
 			NULL, 0, ctx))) {
@@ -1158,7 +1160,7 @@
 		if (ir_pos > (u8*)ie - (u8*)ir)
 			continue;
 		/* Submit the name to the filldir callback. */
-		rc = ntfs_filldir(vol, filp, ndir, INDEX_TYPE_ROOT, ir, ie,
+		rc = ntfs_filldir(vol, &fpos, ndir, INDEX_TYPE_ROOT, ir, ie,
 				name, dirent, filldir);
 		if (rc)
 			goto abort;
@@ -1166,13 +1168,13 @@
 	/* If there is no index allocation attribute we are finished. */
 	if (!NInoIndexAllocPresent(ndir))
 		goto EOD;
-	/* Advance f_pos to the beginning of the index allocation. */
-	filp->f_pos = vol->mft_record_size;
+	/* Advance fpos to the beginning of the index allocation. */
+	fpos = vol->mft_record_size;
 skip_index_root:
 	kaddr = NULL;
 	prev_ia_pos = -1LL;
 	/* Get the offset into the index allocation attribute. */
-	ia_pos = (s64)filp->f_pos - vol->mft_record_size;
+	ia_pos = (s64)fpos - vol->mft_record_size;
 	ia_mapping = vdir->i_mapping;
 	bmp_vi = ndir->_IDM(bmp_ino);
 	if (unlikely(!bmp_vi)) {
@@ -1324,7 +1326,7 @@
 		if (ia_pos - ia_start > (u8*)ie - (u8*)ia)
 			continue;
 		/* Submit the name to the filldir callback. */
-		rc = ntfs_filldir(vol, filp, ndir, INDEX_TYPE_ALLOCATION, ia,
+		rc = ntfs_filldir(vol, &fpos, ndir, INDEX_TYPE_ALLOCATION, ia,
 				ie, name, dirent, filldir);
 		if (rc) {
 			ntfs_unmap_page(ia_page);
@@ -1338,8 +1340,8 @@
 		ntfs_unmap_page(ia_page);
 	ntfs_unmap_page(bmp_page);
 EOD:
-	/* We are finished, set f_pos to EOD. */
-	filp->f_pos = vdir->i_size + vol->mft_record_size;
+	/* We are finished, set fpos to EOD. */
+	fpos = vdir->i_size + vol->mft_record_size;
 abort:
 	put_attr_search_ctx(ctx);
 	unmap_mft_record(READ, ndir);
@@ -1347,11 +1349,12 @@
 done:
 #ifdef DEBUG
 	if (!rc)
-		ntfs_debug("EOD, f_pos 0x%Lx, returning 0.", filp->f_pos);
+		ntfs_debug("EOD, fpos 0x%Lx, returning 0.", fpos);
 	else
-		ntfs_debug("filldir returned %i, f_pos 0x%Lx, returning 0.",
-				rc, filp->f_pos);
+		ntfs_debug("filldir returned %i, fpos 0x%Lx, returning 0.",
+				rc, fpos);
 #endif
+	filp->f_pos = fpos;
 	return 0;
 err_out:
 	if (bmp_page)
@@ -1367,6 +1370,7 @@
 	if (!err)
 		err = -EIO;
 	ntfs_debug("Failed. Returning error code %i.", -err);
+	filp->f_pos = fpos;
 	return err;
 }
 
@@ -1396,9 +1400,9 @@
 }
 
 struct file_operations ntfs_dir_ops = {
-	llseek:		generic_file_llseek,	/* Seek inside directory. */
-	read:		generic_read_dir,	/* Return -EISDIR. */
-	readdir:	ntfs_readdir,		/* Read directory contents. */
-	open:		ntfs_dir_open,		/* Open directory. */
+	.llseek		= generic_file_llseek,	/* Seek inside directory. */
+	.read		= generic_read_dir,	/* Return -EISDIR. */
+	.readdir	= ntfs_readdir,		/* Read directory contents. */
+	.open		= ntfs_dir_open,	/* Open directory. */
 };
 
diff -Nru a/fs/ntfs/file.c b/fs/ntfs/file.c
--- a/fs/ntfs/file.c	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/file.c	Wed Jul 24 21:57:40 2002
@@ -49,10 +49,11 @@
 }
 
 struct file_operations ntfs_file_ops = {
-	llseek:		generic_file_llseek,	/* Seek inside file. */
-	read:		generic_file_read,	/* Read from file. */
-	mmap:		generic_file_mmap,	/* Mmap file. */
-	open:		ntfs_file_open,		/* Open file. */
+	.llseek	= generic_file_llseek,	/* Seek inside file. */
+	.read	= generic_file_read,	/* Read from file. */
+	.write	= generic_file_write,	/* Write to a file. */
+	.mmap	= generic_file_mmap,	/* Mmap file. */
+	.open	= ntfs_file_open,	/* Open file. */
 };
 
 struct inode_operations ntfs_file_inode_ops = {};
diff -Nru a/fs/ntfs/inode.c b/fs/ntfs/inode.c
--- a/fs/ntfs/inode.c	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/inode.c	Wed Jul 24 21:57:40 2002
@@ -282,11 +282,12 @@
 	kmem_cache_free(ntfs_big_inode_cache, NTFS_I(inode));
 }
 
-static ntfs_inode *ntfs_alloc_extent_inode(void)
+static inline ntfs_inode *ntfs_alloc_extent_inode(void)
 {
-	ntfs_inode *ni = (ntfs_inode *)kmem_cache_alloc(ntfs_inode_cache,
-			SLAB_NOFS);
+	ntfs_inode *ni;
+
 	ntfs_debug("Entering.");
+	ni = (ntfs_inode *)kmem_cache_alloc(ntfs_inode_cache, SLAB_NOFS);
 	if (likely(ni != NULL)) {
 		ni->state = 0;
 		return ni;
@@ -340,7 +341,7 @@
 	return;
 }
 
-static void ntfs_init_big_inode(struct inode *vi)
+static inline void ntfs_init_big_inode(struct inode *vi)
 {
 	ntfs_inode *ni = NTFS_I(vi);
 
@@ -350,7 +351,8 @@
 	return;
 }
 
-ntfs_inode *ntfs_new_extent_inode(struct super_block *sb, unsigned long mft_no)
+inline ntfs_inode *ntfs_new_extent_inode(struct super_block *sb,
+		unsigned long mft_no)
 {
 	ntfs_inode *ni = ntfs_alloc_extent_inode();
 
@@ -445,7 +447,7 @@
  * ntfs_read_locked_inode - read an inode from its device
  * @vi:		inode to read
  *
- * ntfs_read_locked_inode() is called from the ntfs_iget() to read the inode
+ * ntfs_read_locked_inode() is called from ntfs_iget() to read the inode
  * described by @vi into memory from the device.
  *
  * The only fields in @vi that we need to/can look at when the function is
diff -Nru a/fs/ntfs/inode.h b/fs/ntfs/inode.h
--- a/fs/ntfs/inode.h	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/inode.h	Wed Jul 24 21:57:40 2002
@@ -223,7 +223,7 @@
 
 static inline struct inode *VFS_I(ntfs_inode *ni)
 {
-	return &((big_ntfs_inode*)ni)->vfs_inode;
+	return &((big_ntfs_inode *)ni)->vfs_inode;
 }
 
 extern struct inode *ntfs_iget(struct super_block *sb, unsigned long mft_no);
diff -Nru a/fs/ntfs/mft.c b/fs/ntfs/mft.c
--- a/fs/ntfs/mft.c	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/mft.c	Wed Jul 24 21:57:40 2002
@@ -107,12 +107,12 @@
  * ntfs_map_page() in map_mft_record_page().
  */
 struct address_space_operations ntfs_mft_aops = {
-	writepage:	NULL,			/* Write dirty page to disk. */
-	readpage:	ntfs_readpage,		/* Fill page with data. */
-	sync_page:	block_sync_page,	/* Currently, just unplugs the
+	.writepage	= NULL,			/* Write dirty page to disk. */
+	.readpage	= ntfs_readpage,	/* Fill page with data. */
+	.sync_page	= block_sync_page,	/* Currently, just unplugs the
 						   disk request queue. */
-	prepare_write:	NULL,			/* . */
-	commit_write:	NULL,			/* . */
+	.prepare_write	= NULL,			/* . */
+	.commit_write	= NULL,			/* . */
 };
 
 /**
diff -Nru a/fs/ntfs/namei.c b/fs/ntfs/namei.c
--- a/fs/ntfs/namei.c	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/namei.c	Wed Jul 24 21:57:40 2002
@@ -286,6 +286,6 @@
  * Inode operations for directories.
  */
 struct inode_operations ntfs_dir_inode_ops = {
-	lookup:		ntfs_lookup,	/* VFS: Lookup directory. */
+	.lookup	= ntfs_lookup,	/* VFS: Lookup directory. */
 };
 
diff -Nru a/fs/ntfs/super.c b/fs/ntfs/super.c
--- a/fs/ntfs/super.c	Wed Jul 24 21:57:40 2002
+++ b/fs/ntfs/super.c	Wed Jul 24 21:57:40 2002
@@ -1260,38 +1260,38 @@
  * proper functions.
  */
 struct super_operations ntfs_mount_sops = {
-	alloc_inode:	ntfs_alloc_big_inode,	/* VFS: Allocate a new inode. */
-	destroy_inode:	ntfs_destroy_big_inode,	/* VFS: Deallocate an inode. */
-	read_inode:	ntfs_read_inode_mount,	/* VFS: Load inode from disk,
-						   called from iget(). */
-	clear_inode:	ntfs_clear_big_inode,	/* VFS: Called when an inode is
-						   removed from memory. */
+	.alloc_inode	= ntfs_alloc_big_inode,	  /* VFS: Allocate new inode. */
+	.destroy_inode	= ntfs_destroy_big_inode, /* VFS: Deallocate inode. */
+	.read_inode	= ntfs_read_inode_mount,  /* VFS: Load inode from disk,
+						     called from iget(). */
+	.clear_inode	= ntfs_clear_big_inode,	  /* VFS: Called when inode is
+						     removed from memory. */
 };
 
 /**
  * The complete super operations.
  */
 struct super_operations ntfs_sops = {
-	alloc_inode:	ntfs_alloc_big_inode,	/* VFS: Allocate a new inode. */
-	destroy_inode:	ntfs_destroy_big_inode,	/* VFS: Deallocate an inode. */
-	dirty_inode:	ntfs_dirty_inode,	/* VFS: Called from
-						   __mark_inode_dirty(). */
-	//write_inode:	NULL,		/* VFS: Write dirty inode to disk. */
-	put_inode:	ntfs_put_inode,	/* VFS: Called just before the inode
-					   reference count is decreased. */
-	//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,		/* ? */
-	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
+	.alloc_inode	= ntfs_alloc_big_inode,	  /* VFS: Allocate new inode. */
+	.destroy_inode	= ntfs_destroy_big_inode, /* VFS: Deallocate inode. */
+	//.dirty_inode	= ntfs_dirty_inode,	  /* VFS: Called from
+	//					     __mark_inode_dirty(). */
+	//.write_inode	= NULL,		  /* VFS: Write dirty inode to disk. */
+	.put_inode	= ntfs_put_inode, /* VFS: Called just before the inode
+					     reference count is decreased. */
+	//.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,		  /* ? */
+	.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. */
-	show_options:	ntfs_show_options, /* Show mount options in proc. */
+	//.umount_begin	= NULL,		     /* Forced umount. */
+	.show_options	= ntfs_show_options, /* Show mount options in proc. */
 };
 
 /**
@@ -1562,7 +1562,7 @@
 		ntfs_error(sb, "Busy inodes left. This is most likely a NTFS "
 				"driver bug.");
 		/* Copied from fs/super.c. I just love this message. (-; */
-		printk("VFS: Busy inodes after umount. Self-destruct in 5 "
+		printk("NTFS: Busy inodes after umount. Self-destruct in 5 "
 				"seconds.  Have a nice day...\n");
 	}
 	/* Errors at this stage are irrelevant. */
@@ -1618,11 +1618,11 @@
 }
 
 static struct file_system_type ntfs_fs_type = {
-	owner:		THIS_MODULE,
-	name:		"ntfs",
-	get_sb:		ntfs_get_sb,
-	kill_sb:	kill_block_super,
-	fs_flags:	FS_REQUIRES_DEV,
+	.owner		= THIS_MODULE,
+	.name		= "ntfs",
+	.get_sb		= ntfs_get_sb,
+	.kill_sb	= kill_block_super,
+	.fs_flags	= FS_REQUIRES_DEV,
 };
 
 /* Stable names for the slab caches. */
diff -Nru a/fs/ntfs/file.c b/fs/ntfs/file.c
--- a/fs/ntfs/file.c	Wed Jul 24 21:57:43 2002
+++ b/fs/ntfs/file.c	Wed Jul 24 21:57:43 2002
@@ -51,7 +51,6 @@
 struct file_operations ntfs_file_ops = {
 	.llseek	= generic_file_llseek,	/* Seek inside file. */
 	.read	= generic_file_read,	/* Read from file. */
-	.write	= generic_file_write,	/* Write to a file. */
 	.mmap	= generic_file_mmap,	/* Mmap file. */
 	.open	= ntfs_file_open,	/* Open file. */
 };

===================================================================

This BitKeeper patch contains the following changesets:
aia21@cantab.net|ChangeSet|20020724205708|58884
aia21@cantab.net|ChangeSet|20020724201230|58873
## Wrapped with gzip_uu ##


[2. application/octet-stream; bkpatch18157]...

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Copyright © 2002, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds