[patch] reiser4: fixups for 3.7

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch is against Linux-3.7 + the following two patches
from Ivan Shapovalov:
1) reiser4-3.7-whole.patch
2) 0001-reiser4-add-a-stub-for-address_space_operations-migr.patch

. Ifdef reiser4_migratepage to prevent compilation error
  in the case when CONFIG_MIGRATION is not defined;
. Use separate foo_bugop() instead of the common bugop()
  to understand in what stub the oops occured;
. Don't set zeros to the body of ctail item in debug mode
  (where extra-modifications are highly undesirable);
. Use "dispatch" prefix for file operations, which pass
  management to FILE plugins in accordance with inode's
  plugin table (pset);
. Update comments.

Signed-off-by: Edward Shishkin <edward.shishkin@xxxxxxxxx>
---
 fs/reiser4/as_ops.c                      |   14 +--
 fs/reiser4/context.h                     |   13 +-
 fs/reiser4/plugin/file/file.c            |    2 
 fs/reiser4/plugin/file/file.h            |   64 +++++--------
 fs/reiser4/plugin/file/file_conversion.c |   74 ++++++----------
 fs/reiser4/plugin/file_ops.c             |    4 
 fs/reiser4/plugin/item/ctail.c           |    5 -
 fs/reiser4/plugin/item/extent_file_ops.c |   20 ++--
 fs/reiser4/plugin/item/tail.c            |   17 ++-
 fs/reiser4/plugin/object.c               |  143 +++++++++++++++++++++++++------
 fs/reiser4/plugin/plugin.h               |   11 --
 fs/reiser4/super_ops.c                   |   10 +-
 fs/reiser4/txnmgr.c                      |    2 
 fs/reiser4/vfs_ops.c                     |   10 +-
 fs/reiser4/vfs_ops.h                     |    5 +
 15 files changed, 233 insertions(+), 161 deletions(-)

--- linux-3.7.1.orig/fs/reiser4/as_ops.c
+++ linux-3.7.1/fs/reiser4/as_ops.c
@@ -305,15 +305,17 @@ int reiser4_releasepage(struct page *pag
 	}
 }
 
+#ifdef CONFIG_MIGRATION
 int reiser4_migratepage(struct address_space *mapping, struct page *newpage,
 			struct page *page, enum migrate_mode mode)
 {
-	/* TODO: implement page migration (or prove it to be impossible)
+	/* TODO: implement movable mapping
 	 */
 	return fail_migrate_page(mapping, newpage, page);
 }
+#endif /* CONFIG_MIGRATION */
 
-int reiser4_readpage(struct file *file, struct page *page)
+int reiser4_readpage_dispatch(struct file *file, struct page *page)
 {
 	assert("edward-1533", PageLocked(page));
 	assert("edward-1534", !PageUptodate(page));
@@ -322,15 +324,15 @@ int reiser4_readpage(struct file *file,
 	return inode_file_plugin(page->mapping->host)->readpage(file, page);
 }
 
-int reiser4_readpages(struct file *file, struct address_space *mapping,
-		      struct list_head *pages, unsigned nr_pages)
+int reiser4_readpages_dispatch(struct file *file, struct address_space *mapping,
+			       struct list_head *pages, unsigned nr_pages)
 {
 	return inode_file_plugin(mapping->host)->readpages(file, mapping,
 							   pages, nr_pages);
 }
 
-int reiser4_writepages(struct address_space *mapping,
-		       struct writeback_control *wbc)
+int reiser4_writepages_dispatch(struct address_space *mapping,
+				struct writeback_control *wbc)
 {
 	return inode_file_plugin(mapping->host)->writepages(mapping, wbc);
 }
--- linux-3.7.1.orig/fs/reiser4/context.h
+++ linux-3.7.1/fs/reiser4/context.h
@@ -65,12 +65,13 @@ struct reiser4_context {
 
 	/* count non-trivial jnode_set_dirty() calls */
 	unsigned long nr_marked_dirty;
-
-	/* reiser4_writeback_inodes calls (via generic_writeback_sb_inodes)
-	 * reiser4_writepages for each of dirty inodes. Reiser4_writepages
-	 * captures pages. When number of pages captured in one
-	 * reiser4_sync_inodes reaches some threshold - some atoms get
-	 * flushed */
+	/*
+	 * reiser4_writeback_inodes calls (via generic_writeback_sb_inodes)
+	 * reiser4_writepages_dispatch for each of dirty inodes.
+	 * Reiser4_writepages_dispatch captures pages. When number of pages
+	 * captured in one reiser4_writeback_inodes reaches some threshold -
+	 * some atoms get flushed
+	 */
 	int nr_captured;
 	int nr_children;	/* number of child contexts */
 	struct page *locked_page; /* page that should be unlocked in
--- linux-3.7.1.orig/fs/reiser4/plugin/file/file.c
+++ linux-3.7.1/fs/reiser4/plugin/file/file.c
@@ -1150,7 +1150,7 @@ static int commit_file_atoms(struct inod
 		     * when we are called by
 		     * filemap_fdatawrite->
 		     *    do_writepages()->
-		     *       reiser4_writepages()
+		     *       reiser4_writepages_dispatch()
 		     *
 		     * inode->i_mapping->dirty_pages are spices into
 		     * ->io_pages, leaving ->dirty_pages dirty.
--- linux-3.7.1.orig/fs/reiser4/plugin/file/file.h
+++ linux-3.7.1/fs/reiser4/plugin/file/file.h
@@ -22,52 +22,40 @@ struct dispatch_context {
 	dispatch_state state;
 };
 
-/**
- * Declarations of common/careful/generic methods.
- * Suppose ->foo() is a vs method (of f_ops, i_ops, or a_ops);
- * Then common reiser4 method for foo looks like reiser4_foo_common;
- * careful method looks like reiser4_foo_careful;
- * generic method looks like reiser4_foo.
- *
- * Common method is a simple instruction set eligible for more
- * then one plugin id.
- *
- * Generic method looks at the plugin installed in inode's
- * plugin set and calls its appropriate method.
- *
- * Careful method looks like generic method with protected pset
- * (see plugin/file/file_conversion.c for details).
+/*
+ * Declarations of methods provided for VFS.
  */
 
 /* inode operations */
-int reiser4_setattr(struct dentry *, struct iattr *);
+int reiser4_setattr_dispatch(struct dentry *, struct iattr *);
 
 /* file operations */
-ssize_t reiser4_read_careful(struct file *, char __user *buf,
-			     size_t count, loff_t *off);
-ssize_t reiser4_write_careful(struct file *, const char __user *buf,
-			      size_t count, loff_t * off);
-long reiser4_ioctl_careful(struct file *filp, unsigned int cmd,
-			   unsigned long arg);
-int reiser4_mmap_careful(struct file *, struct vm_area_struct *);
-int reiser4_open_careful(struct inode *inode, struct file *file);
-int reiser4_release_careful(struct inode *, struct file *);
+ssize_t reiser4_read_dispatch(struct file *, char __user *buf,
+			      size_t count, loff_t *off);
+ssize_t reiser4_write_dispatch(struct file *, const char __user *buf,
+			       size_t count, loff_t * off);
+long reiser4_ioctl_dispatch(struct file *filp, unsigned int cmd,
+			    unsigned long arg);
+int reiser4_mmap_dispatch(struct file *, struct vm_area_struct *);
+int reiser4_open_dispatch(struct inode *inode, struct file *file);
+int reiser4_release_dispatch(struct inode *, struct file *);
 int reiser4_sync_file_common(struct file *, loff_t, loff_t, int datasync);
 
 /* address space operations */
-int reiser4_readpage(struct file *, struct page *);
-int reiser4_readpages(struct file*, struct address_space*, struct list_head*,
-		      unsigned);
-int reiser4_writepages(struct address_space *, struct writeback_control *);
-int reiser4_write_begin_careful(struct file *file,
-				struct address_space *mapping,
-				loff_t pos, unsigned len, unsigned flags,
-				struct page **pagep, void **fsdata);
-int reiser4_write_end_careful(struct file *file,
-			      struct address_space *mapping,
-			      loff_t pos, unsigned len, unsigned copied,
-			      struct page *page, void *fsdata);
-sector_t reiser4_bmap_careful(struct address_space *, sector_t lblock);
+int reiser4_readpage_dispatch(struct file *, struct page *);
+int reiser4_readpages_dispatch(struct file *, struct address_space *,
+			       struct list_head *, unsigned);
+int reiser4_writepages_dispatch(struct address_space *,
+				struct writeback_control *);
+int reiser4_write_begin_dispatch(struct file *file,
+				 struct address_space *mapping,
+				 loff_t pos, unsigned len, unsigned flags,
+				 struct page **pagep, void **fsdata);
+int reiser4_write_end_dispatch(struct file *file,
+			       struct address_space *mapping,
+			       loff_t pos, unsigned len, unsigned copied,
+			       struct page *page, void *fsdata);
+sector_t reiser4_bmap_dispatch(struct address_space *, sector_t lblock);
 
 /*
  * Private methods of unix-file plugin
--- linux-3.7.1.orig/fs/reiser4/plugin/file/file_conversion.c
+++ linux-3.7.1/fs/reiser4/plugin/file/file_conversion.c
@@ -509,24 +509,15 @@ static inline void done_dispatch_context
 		kfree(cont->pages);
 	}
 }
-/**
- * Here are wrappers with "protection", aka Reiser4 "careful" methods.
- * They are used by vfs (as methods of file_ops, inode_ops or as_ops),
- * which is not aware of plugin conversion performed by Reiser4.
- */
 
 /*
- * Wrappers with active protection for:
+ * ->write() VFS file operation
  *
- * ->write();
+ * performs "intelligent" conversion in the FILE interface.
+ * Write a file in 3 steps (2d and 3d steps are optional).
  */
-
-/*
- * ->write() file operation supplied to VFS.
- * Write a file in 3 steps (some of them can be optional).
- */
-ssize_t reiser4_write_careful(struct file *file, const char __user *buf,
-			      size_t count, loff_t *off)
+ssize_t reiser4_write_dispatch(struct file *file, const char __user *buf,
+			       size_t count, loff_t *off)
 {
 	int result;
 	reiser4_context *ctx;
@@ -593,7 +584,8 @@ ssize_t reiser4_write_careful(struct fil
 	return written_old + (written_new < 0 ? 0 : written_new);
 }
 
-/* Wrappers with passive protection for:
+/*
+ * Dispatchers with "passive" protection for:
  *
  * ->open();
  * ->read();
@@ -603,37 +595,37 @@ ssize_t reiser4_write_careful(struct fil
  * ->bmap().
  */
 
-int reiser4_open_careful(struct inode *inode, struct file *file)
+int reiser4_open_dispatch(struct inode *inode, struct file *file)
 {
 	return PROT_PASSIVE(int, open, (inode, file));
 }
 
-ssize_t reiser4_read_careful(struct file * file, char __user * buf,
-			     size_t size, loff_t * off)
+ssize_t reiser4_read_dispatch(struct file * file, char __user * buf,
+			      size_t size, loff_t * off)
 {
 	struct inode * inode = file->f_dentry->d_inode;
 	return PROT_PASSIVE(ssize_t, read, (file, buf, size, off));
 }
 
-long reiser4_ioctl_careful(struct file *filp, unsigned int cmd,
-			   unsigned long arg)
+long reiser4_ioctl_dispatch(struct file *filp, unsigned int cmd,
+			    unsigned long arg)
 {
 	struct inode * inode = filp->f_dentry->d_inode;
 	return PROT_PASSIVE(int, ioctl, (filp, cmd, arg));
 }
 
-int reiser4_mmap_careful(struct file *file, struct vm_area_struct *vma)
+int reiser4_mmap_dispatch(struct file *file, struct vm_area_struct *vma)
 {
 	struct inode *inode = file->f_dentry->d_inode;
 	return PROT_PASSIVE(int, mmap, (file, vma));
 }
 
-int reiser4_release_careful(struct inode *inode, struct file *file)
+int reiser4_release_dispatch(struct inode *inode, struct file *file)
 {
 	return PROT_PASSIVE(int, release, (inode, file));
 }
 
-sector_t reiser4_bmap_careful(struct address_space * mapping, sector_t lblock)
+sector_t reiser4_bmap_dispatch(struct address_space * mapping, sector_t lblock)
 {
 	struct inode *inode = mapping->host;
 	return PROT_PASSIVE(sector_t, bmap, (mapping, lblock));
@@ -645,13 +637,13 @@ sector_t reiser4_bmap_careful(struct add
  * reiser4_write_end() can not cope with
  * short writes for now.
  */
-int reiser4_write_begin_careful(struct file *file,
-				struct address_space *mapping,
-				loff_t pos,
-				unsigned len,
-				unsigned flags,
-				struct page **pagep,
-				void **fsdata)
+int reiser4_write_begin_dispatch(struct file *file,
+				 struct address_space *mapping,
+				 loff_t pos,
+				 unsigned len,
+				 unsigned flags,
+				 struct page **pagep,
+				 void **fsdata)
 {
 	int ret = 0;
 	struct page *page;
@@ -681,7 +673,7 @@ int reiser4_write_begin_careful(struct f
 	ret = PROT_PASSIVE(int, write_begin, (file, page, pos, len, fsdata));
 	if (unlikely(ret))
 		goto err1;
-	/* Success. Resorces will be released in write_end_careful */
+	/* Success. Resorces will be released in write_end_dispatch */
 	return 0;
  err1:
 	reiser4_exit_context(ctx);
@@ -691,13 +683,13 @@ int reiser4_write_begin_careful(struct f
 	return ret;
 }
 
-int reiser4_write_end_careful(struct file *file,
-			      struct address_space *mapping,
-			      loff_t pos,
-			      unsigned len,
-			      unsigned copied,
-			      struct page *page,
-			      void *fsdata)
+int reiser4_write_end_dispatch(struct file *file,
+			       struct address_space *mapping,
+			       loff_t pos,
+			       unsigned len,
+			       unsigned copied,
+			       struct page *page,
+			       void *fsdata)
 {
 	int ret;
 	reiser4_context *ctx;
@@ -722,11 +714,9 @@ int reiser4_write_end_careful(struct fil
 }
 
 /*
- * Wrappers without protection for:
- *
- * ->setattr()
+ * Dispatchers without protection
  */
-int reiser4_setattr(struct dentry *dentry, struct iattr *attr)
+int reiser4_setattr_dispatch(struct dentry *dentry, struct iattr *attr)
 {
 	return inode_file_plugin(dentry->d_inode)->setattr(dentry, attr);
 }
--- linux-3.7.1.orig/fs/reiser4/plugin/file_ops.c
+++ linux-3.7.1/fs/reiser4/plugin/file_ops.c
@@ -69,8 +69,8 @@ int reiser4_sync_common(struct file *fil
  *
  * Situation is complicated by anonymous pages: i.e., extent-less pages
  * dirtied through mmap. Fortunately sys_fsync() first calls
- * filemap_fdatawrite() that will ultimately call reiser4_writepages(), insert
- * all missing extents and capture anonymous pages.
+ * filemap_fdatawrite() that will ultimately call reiser4_writepages_dispatch,
+ * insert all missing extents and capture anonymous pages.
  */
 int reiser4_sync_file_common(struct file *file, loff_t start, loff_t end, int datasync)
 {
--- linux-3.7.1.orig/fs/reiser4/plugin/item/ctail.c
+++ linux-3.7.1/fs/reiser4/plugin/item/ctail.c
@@ -488,10 +488,7 @@ cut_or_kill_ctail_units(coord_t * coord,
 			   by units got freed */
 			count += sizeof(ctail_item_format);
 		}
-		if (REISER4_DEBUG)
-			memset(item, 0, count);
-	} else if (REISER4_DEBUG)
-		memset(item + sizeof(ctail_item_format) + from, 0, count);
+	}
 	return count;
 }
 
--- linux-3.7.1.orig/fs/reiser4/plugin/item/extent_file_ops.c
+++ linux-3.7.1/fs/reiser4/plugin/item/extent_file_ops.c
@@ -1301,14 +1301,18 @@ int reiser4_read_extent(struct file *fil
 }
 
 /*
-   plugin->s.file.readpage
-   reiser4_read->unix_file_read->page_cache_readahead->reiser4_readpage->unix_file_readpage->extent_readpage
-   or
-   filemap_fault->reiser4_readpage->readpage_unix_file->->readpage_extent
-
-   At the beginning: coord->node is read locked, zloaded, page is
-   locked, coord is set to existing unit inside of extent item (it is not necessary that coord matches to page->index)
-*/
+ * plugin->s.file.readpage
+ *
+ * reiser4_read->unix_file_read->page_cache_readahead->
+ * ->reiser4_readpage_dispatch->readpage_unix_file->readpage_extent
+ * or
+ * filemap_fault->reiser4_readpage_dispatch->readpage_unix_file->
+ * ->readpage_extent
+ *
+ * At the beginning: coord->node is read locked, zloaded, page is
+ * locked, coord is set to existing unit inside of extent item (it
+ * is not necessary that coord matches to page->index)
+ */
 int reiser4_readpage_extent(void *vp, struct page *page)
 {
 	uf_coord_t *uf_coord = vp;
--- linux-3.7.1.orig/fs/reiser4/plugin/item/tail.c
+++ linux-3.7.1/fs/reiser4/plugin/item/tail.c
@@ -404,13 +404,16 @@ static int do_readpage_tail(uf_coord_t *
 }
 
 /*
-   plugin->s.file.readpage
-   reiser4_read->unix_file_read->page_cache_readahead->reiser4_readpage->unix_file_readpage->readpage_tail
-   or
-   filemap_fault->reiser4_readpage->readpage_unix_file->->readpage_tail
-
-   At the beginning: coord->node is read locked, zloaded, page is locked, coord is set to existing unit inside of tail
-   item. */
+ * plugin->s.file.readpage
+ *
+ * reiser4_read_dispatch->read_unix_file->page_cache_readahead->
+ * ->reiser4_readpage_dispatch->readpage_unix_file->readpage_tail
+ * or
+ * filemap_fault->reiser4_readpage_dispatch->readpage_unix_file->readpage_tail
+ *
+ * At the beginning: coord->node is read locked, zloaded, page is locked,
+ * coord is set to existing unit inside of tail item.
+ */
 int readpage_tail(void *vp, struct page *page)
 {
 	uf_coord_t *uf_coord = vp;
--- linux-3.7.1.orig/fs/reiser4/plugin/object.c
+++ linux-3.7.1/fs/reiser4/plugin/object.c
@@ -53,7 +53,7 @@
 
 #include "../inode.h"
 
-static int _bugop(void)
+int _bugop(void)
 {
 	BUG_ON(1);
 	return 0;
@@ -61,6 +61,80 @@ static int _bugop(void)
 
 #define bugop ((void *)_bugop)
 
+static int writepage_bugop(struct page *page, struct writeback_control *wbc)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static int set_page_dirty_bugop(struct page *page)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static int readpages_bugop(struct file *filp, struct address_space *mapping,
+			   struct list_head *pages, unsigned nr_pages)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static int write_begin_bugop(struct file *filp, struct address_space *mapping,
+			     loff_t pos, unsigned len, unsigned flags,
+			     struct page **pagep, void **fsdata)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static int write_end_bugop(struct file *filp, struct address_space *mapping,
+			   loff_t pos, unsigned len, unsigned copied,
+			   struct page *page, void *fsdata)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static sector_t bmap_bugop(struct address_space *mapping, sector_t sector)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static void invalidatepage_bugop(struct page *page, unsigned long offset)
+{
+	BUG_ON(1);
+}
+
+static int releasepage_bugop(struct page *page, gfp_t gfp)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static int migratepage_bugop(struct address_space *mapping,
+			     struct page *page, struct page *newpage,
+			     enum migrate_mode mode)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static int flow_by_inode_bugop(struct inode *inode, const char __user *buf,
+			       int user, loff_t size,
+			       loff_t off, rw_op op, flow_t *f)
+{
+	BUG_ON(1);
+	return 0;
+}
+
+static int key_by_inode_bugop(struct inode *inode, loff_t off, reiser4_key *key)
+{
+	BUG_ON(1);
+	return 0;
+}
+
 static int _dummyop(void)
 {
 	return 0;
@@ -88,38 +162,53 @@ static struct inode_operations         n
 static struct file_operations          null_f_ops = {.owner = NULL};
 static struct address_space_operations null_a_ops = {.writepage = NULL};
 
-/* VFS methods for regular files */
+/*
+ * Reiser4 provides for VFS either dispatcher, or common (fop,
+ * iop, aop) method.
+ *
+ * Dispatchers (suffixed with "dispatch") pass management to
+ * proper plugin in accordance with plugin table (pset) located
+ * in the private part of inode.
+ *
+ * Common methods are NOT prefixed with "dispatch". They are
+ * the same for all plugins of FILE interface, and, hence, no
+ * dispatching is needed.
+ */
+
+/*
+ * VFS methods for regular files
+ */
 static struct inode_operations regular_file_i_ops = {
 	.permission = reiser4_permission_common,
-	.setattr = reiser4_setattr,
+	.setattr = reiser4_setattr_dispatch,
 	.getattr = reiser4_getattr_common
 };
 static struct file_operations regular_file_f_ops = {
 	.llseek = generic_file_llseek,
-	.read = reiser4_read_careful,
-	.write = reiser4_write_careful,
+	.read = reiser4_read_dispatch,
+	.write = reiser4_write_dispatch,
 	.aio_read = generic_file_aio_read,
-	.unlocked_ioctl = reiser4_ioctl_careful,
+	.unlocked_ioctl = reiser4_ioctl_dispatch,
 #ifdef CONFIG_COMPAT
-	.compat_ioctl = reiser4_ioctl_careful,
+	.compat_ioctl = reiser4_ioctl_dispatch,
 #endif
-	.mmap = reiser4_mmap_careful,
-	.open = reiser4_open_careful,
-	.release = reiser4_release_careful,
+	.mmap = reiser4_mmap_dispatch,
+	.open = reiser4_open_dispatch,
+	.release = reiser4_release_dispatch,
 	.fsync = reiser4_sync_file_common,
 	.splice_read = generic_file_splice_read,
 	.splice_write = generic_file_splice_write
 };
 static struct address_space_operations regular_file_a_ops = {
 	.writepage = reiser4_writepage,
-	.readpage = reiser4_readpage,
+	.readpage = reiser4_readpage_dispatch,
 	//.sync_page = block_sync_page,
-	.writepages = reiser4_writepages,
+	.writepages = reiser4_writepages_dispatch,
 	.set_page_dirty = reiser4_set_page_dirty,
-	.readpages = reiser4_readpages,
-	.write_begin = reiser4_write_begin_careful,
-	.write_end = reiser4_write_end_careful,
-	.bmap = reiser4_bmap_careful,
+	.readpages = reiser4_readpages_dispatch,
+	.write_begin = reiser4_write_begin_dispatch,
+	.write_end = reiser4_write_end_dispatch,
+	.bmap = reiser4_bmap_dispatch,
 	.invalidatepage = reiser4_invalidatepage,
 	.releasepage = reiser4_releasepage,
 	.migratepage = reiser4_migratepage
@@ -164,17 +253,17 @@ static struct file_operations directory_
 	.fsync = reiser4_sync_common
 };
 static struct address_space_operations directory_a_ops = {
-	.writepage = bugop,
+	.writepage = writepage_bugop,
 	//.sync_page = bugop,
 	.writepages = dummyop,
-	.set_page_dirty = bugop,
-	.readpages = bugop,
-	.write_begin = bugop,
-	.write_end = bugop,
-	.bmap = bugop,
-	.invalidatepage = bugop,
-	.releasepage = bugop,
-	.migratepage = bugop
+	.set_page_dirty = set_page_dirty_bugop,
+	.readpages = readpages_bugop,
+	.write_begin = write_begin_bugop,
+	.write_end = write_end_bugop,
+	.bmap = bmap_bugop,
+	.invalidatepage = invalidatepage_bugop,
+	.releasepage = releasepage_bugop,
+	.migratepage = migratepage_bugop
 };
 
 /*
@@ -267,8 +356,8 @@ file_plugin file_plugins[LAST_FILE_PLUGI
 		.as_ops = &null_a_ops,
 
 		.write_sd_by_inode = write_sd_by_inode_common,
-		.flow_by_inode = bugop,
-		.key_by_inode = bugop,
+		.flow_by_inode = flow_by_inode_bugop,
+		.key_by_inode = key_by_inode_bugop,
 		.set_plug_in_inode = set_plug_in_inode_common,
 		.adjust_to_parent = adjust_to_parent_common_dir,
 		.create_object = reiser4_create_object_common,
--- linux-3.7.1.orig/fs/reiser4/plugin/plugin.h
+++ linux-3.7.1/fs/reiser4/plugin/plugin.h
@@ -201,16 +201,7 @@ typedef struct file_plugin {
 	/* generic fields */
 	plugin_header h;
 
-	/* VFS methods.
-	 * Must be invariant with respect to plugin conversion.
-	 * It can be achieved by using "common" methods, which
-	 * are the same for all plugins that take participation in
-	 * conversion, or by using "generic" or "careful" methods,
-	 * which provide automatic redirection to proper private
-	 * plugin methods ("careful" are the same as "generic",
-	 * but with protection of pset and other disk structures
-	 * from being rebuilt during conversion.
-	 */
+	/* VFS methods */
 	struct inode_operations * inode_ops;
 	struct file_operations * file_ops;
 	struct address_space_operations * as_ops;
--- linux-3.7.1.orig/fs/reiser4/super_ops.c
+++ linux-3.7.1/fs/reiser4/super_ops.c
@@ -343,10 +343,12 @@ static int reiser4_statfs(struct dentry
  * @wb:
  * @wbc:
  *
- * This method is called by background and non-backgound writeback. Reiser4's
- * implementation uses generic_writeback_sb_inodes to call reiser4_writepages
- * for each of dirty inodes. reiser4_writepages handles pages dirtied via shared
- * mapping - dirty pages get into atoms. Writeout is called to flush some atoms.
+ * This method is called by background and non-backgound writeback.
+ * Reiser4's implementation uses generic_writeback_sb_inodes to call
+ * reiser4_writepages_dispatch for each of dirty inodes.
+ * reiser4_writepages_dispatch handles pages dirtied via shared
+ * mapping - dirty pages get into atoms. Writeout is called to flush
+ * some atoms.
  */
 static long reiser4_writeback_inodes(struct super_block *super,
 				     struct bdi_writeback *wb,
--- linux-3.7.1.orig/fs/reiser4/txnmgr.c
+++ linux-3.7.1/fs/reiser4/txnmgr.c
@@ -179,7 +179,7 @@ year old --- define all technical terms
  *
  *     When file is accessed through mmap(2) page is always created during
  *     page fault.
- *     After this (in reiser4_readpage()->reiser4_readpage_extent()):
+ *     After this (in reiser4_readpage_dispatch()->reiser4_readpage_extent()):
  *
  *         1. if access is made to non-hole page new jnode is created, (if
  *         necessary)
--- linux-3.7.1.orig/fs/reiser4/vfs_ops.c
+++ linux-3.7.1/fs/reiser4/vfs_ops.c
@@ -148,12 +148,12 @@ void reiser4_writeout(struct super_block
 	struct address_space *mapping;
 
 	/*
-	 * Performs early flushing, trying to free some memory. If there is
-	 * nothing to flush, commits some atoms.
+	 * Performs early flushing, trying to free some memory. If there
+	 * is nothing to flush, commits some atoms.
+	 *
+	 * Commit all atoms if reiser4_writepages_dispatch() is called
+	 * from sys_sync() or sys_fsync()
 	 */
-
-	/* Commit all atoms if reiser4_writepages() is called from sys_sync() or
-	   sys_fsync(). */
 	if (wbc->sync_mode != WB_SYNC_NONE) {
 		txnmgr_force_commit_all(sb, 0);
 		return;
--- linux-3.7.1.orig/fs/reiser4/vfs_ops.h
+++ linux-3.7.1/fs/reiser4/vfs_ops.h
@@ -24,8 +24,13 @@ int reiser4_writepage(struct page *, str
 int reiser4_set_page_dirty(struct page *);
 void reiser4_invalidatepage(struct page *, unsigned long offset);
 int reiser4_releasepage(struct page *, gfp_t);
+
+#ifdef CONFIG_MIGRATION
 int reiser4_migratepage(struct address_space *, struct page *,
 			struct page *, enum migrate_mode);
+#else
+#define reiser4_migratepage NULL
+#endif /* CONFIG_MIGRATION */
 
 extern int reiser4_update_sd(struct inode *);
 extern int reiser4_add_nlink(struct inode *, struct inode *, int);
--
To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux File System Development]     [Linux BTRFS]     [Linux NFS]     [Linux Filesystems]     [Ext4 Filesystem]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]     [Linux Resources]

  Powered by Linux