[BACK]Return to dmapi-enable CVS log [TXT][DIR] Up to [Development] / linux-2.4-xfs / split-patches

File: [Development] / linux-2.4-xfs / split-patches / dmapi-enable (download)

Revision 1.13, Tue Aug 15 16:59:39 2006 UTC (11 years, 2 months ago) by nathans.longdrop.melbourne.sgi.com
Branch: MAIN
CVS Tags: HEAD
Changes since 1.12: +17 -31 lines

Merge up to 2.4.33.
Merge of 2.4.x-xfs-melb:linux:26774a by kenmcd.

Index: 2.4.x-xfs/Documentation/Configure.help
===================================================================
--- 2.4.x-xfs.orig/Documentation/Configure.help	2006-08-15 16:59:55.151199985 +1000
+++ 2.4.x-xfs/Documentation/Configure.help	2006-08-15 17:05:51.937243315 +1000
@@ -17589,6 +17589,30 @@
   Say Y here if you want to try writing to UFS partitions. This is
   experimental, so you should back up your UFS partitions beforehand.
 
+DMAPI
+CONFIG_DMAPI
+  The Data Management API is a system interface used to implement
+  the interface defined in the X/Open document:
+    "Systems Management: Data Storage Management (XDSM) API",
+  dated February 1997.  This interface is used by hierarchical
+  storage management systems.
+
+  If you want to compile the DMAPI subsystem as a module ( =
+  code which can be inserted in and removed from the running kernel
+  whenever you want), say M here and read
+  <file:Documentation/modules.txt>. The module will be called dmapi.o.
+
+  If any DMAPI-capable filesystem is built into the kernel, then
+  DMAPI must also be built into the kernel.
+
+  If unsure, say N.
+
+Debugging support (EXPERIMENTAL)
+CONFIG_DMAPI_DEBUG
+  Say Y here to get a DMAPI build with debugging features.
+
+  Say N unless you are a DMAPI developer.
+
 XFS filesystem support
 CONFIG_XFS_FS
   XFS is a high performance journaling filesystem which originated
@@ -17609,6 +17633,16 @@
   system of your root partition is compiled as a module, you'll need
   to use an initial ramdisk (initrd) to boot.
 
+DMAPI support
+CONFIG_XFS_DMAPI
+  The Data Management API is a system interface used to implement
+  the interface defined in the X/Open document:
+    "Systems Management: Data Storage Management (XDSM) API",
+  dated February 1997.  This interface is used by hierarchical
+  storage management systems.
+
+  If unsure, say N.
+
 Quota support
 CONFIG_XFS_QUOTA
   If you say Y here, you will be able to set limits for disk usage on
Index: 2.4.x-xfs/Documentation/filesystems/xfs.txt
===================================================================
--- 2.4.x-xfs.orig/Documentation/filesystems/xfs.txt	2004-11-22 13:47:19.000000000 +1100
+++ 2.4.x-xfs/Documentation/filesystems/xfs.txt	2006-08-15 17:05:51.937243315 +1000
@@ -29,6 +29,10 @@
 	The preferred buffered I/O size can also be altered on an
 	individual file basis using the ioctl(2) system call.
 
+  dmapi
+	Enable the DMAPI (Data Management API) event callouts.
+	Use with the "mtpt" option.
+
   ikeep/noikeep
 	When inode clusters are emptied of inodes, keep them around
 	on the disk (ikeep) - this is the traditional XFS behaviour
@@ -62,6 +66,11 @@
 	optional, and the log section can be separate from the data
 	section or contained within it.
 
+  mtpt=mountpoint
+	Use with the "dmapi" option.  The value specified here will be
+	included in the DMAPI mount event, and should be the path of
+	the actual mountpoint that is used.
+
   noalign
 	Data allocations will not be aligned at stripe unit boundaries.
 
Index: 2.4.x-xfs/MAINTAINERS
===================================================================
--- 2.4.x-xfs.orig/MAINTAINERS	2005-12-20 14:53:08.831441513 +1100
+++ 2.4.x-xfs/MAINTAINERS	2006-08-15 17:07:03.524019009 +1000
@@ -2193,6 +2193,14 @@
 W:	http://oss.sgi.com/projects/xfs
 S:	Supported
 
+DMAPI
+P:	Silicon Graphics Inc
+M:	xfs-masters@oss.sgi.com
+M:	vapo@sgi.com
+L:	xfs@oss.sgi.com
+W:	http://oss.sgi.com/projects/xfs
+S:	Supported
+
 X86 3-LEVEL PAGING (PAE) SUPPORT
 P:	Ingo Molnar
 M:	mingo@redhat.com
Index: 2.4.x-xfs/fs/Config.in
===================================================================
--- 2.4.x-xfs.orig/fs/Config.in	2006-08-15 17:04:29.335885522 +1000
+++ 2.4.x-xfs/fs/Config.in	2006-08-15 17:05:51.941242800 +1000
@@ -7,6 +7,9 @@
 bool 'Quota support' CONFIG_QUOTA
 dep_tristate '  VFS v0 quota format support' CONFIG_QFMT_V2 $CONFIG_QUOTA
 
+tristate 'DMAPI support' CONFIG_DMAPI
+dep_mbool    '  Debugging support (EXPERIMENTAL)' CONFIG_DMAPI_DEBUG $CONFIG_DMAPI $CONFIG_EXPERIMENTAL
+
 tristate 'Kernel automounter support' CONFIG_AUTOFS_FS
 tristate 'Kernel automounter version 4 support (also supports v3)' CONFIG_AUTOFS4_FS
 
@@ -104,9 +107,13 @@
 tristate 'XFS filesystem support' CONFIG_XFS_FS
 dep_mbool    '  POSIX ACL support' CONFIG_XFS_POSIX_ACL $CONFIG_XFS_FS
 dep_tristate '  Quota support' CONFIG_XFS_QUOTA $CONFIG_XFS_FS
+dep_tristate '  DMAPI support' CONFIG_XFS_DMAPI $CONFIG_XFS_FS $CONFIG_DMAPI
 dep_mbool    '  Realtime support (EXPERIMENTAL)' CONFIG_XFS_RT $CONFIG_XFS_FS $CONFIG_EXPERIMENTAL
 dep_mbool    '  Tracing support (EXPERIMENTAL)' CONFIG_XFS_TRACE $CONFIG_XFS_FS $CONFIG_EXPERIMENTAL
 dep_mbool    '  Debugging support (EXPERIMENTAL)' CONFIG_XFS_DEBUG $CONFIG_XFS_FS $CONFIG_EXPERIMENTAL
+if [ "$CONFIG_XFS_FS" = "y" -a "$CONFIG_XFS_DMAPI" = "y" ] ; then
+   define_tristate CONFIG_DMAPI y
+fi
 
 if [ "$CONFIG_NET" = "y" ]; then
 
Index: 2.4.x-xfs/fs/Makefile
===================================================================
--- 2.4.x-xfs.orig/fs/Makefile	2006-08-15 17:04:29.335885522 +1000
+++ 2.4.x-xfs/fs/Makefile	2006-08-15 17:05:51.941242800 +1000
@@ -67,6 +67,7 @@
 subdir-$(CONFIG_BEFS_FS)	+= befs
 subdir-$(CONFIG_JFS_FS)		+= jfs
 subdir-$(CONFIG_XFS_FS)		+= xfs
+subdir-$(CONFIG_DMAPI)		+= dmapi
 
 obj-$(CONFIG_BINFMT_AOUT)	+= binfmt_aout.o
 obj-$(CONFIG_BINFMT_EM86)	+= binfmt_em86.o
Index: 2.4.x-xfs/fs/exec.c
===================================================================
--- 2.4.x-xfs.orig/fs/exec.c	2005-04-13 11:27:47.000000000 +1000
+++ 2.4.x-xfs/fs/exec.c	2006-08-15 17:05:51.941242800 +1000
@@ -393,6 +393,13 @@
 			if (!err) {
 				file = dentry_open(nd.dentry, nd.mnt, O_RDONLY);
 				if (!IS_ERR(file)) {
+					if (file->f_op && file->f_op->open_exec) {
+						err = file->f_op->open_exec(inode);
+						if (err) {
+							fput(file);
+							return ERR_PTR(err);
+						}
+					}
 					err = deny_write_access(file);
 					if (err) {
 						fput(file);
Index: 2.4.x-xfs/include/linux/mm.h
===================================================================
--- 2.4.x-xfs.orig/include/linux/mm.h	2005-01-20 16:15:42.000000000 +1100
+++ 2.4.x-xfs/include/linux/mm.h	2006-08-15 17:05:51.941242800 +1000
@@ -134,6 +134,8 @@
 	void (*open)(struct vm_area_struct * area);
 	void (*close)(struct vm_area_struct * area);
 	struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int unused);
+#define HAVE_VMOP_MPROTECT
+	int (*mprotect)(struct vm_area_struct * area, unsigned int newflags);
 };
 
 /*
Index: 2.4.x-xfs/include/linux/fs.h
===================================================================
--- 2.4.x-xfs.orig/include/linux/fs.h	2006-08-15 16:59:55.155199470 +1000
+++ 2.4.x-xfs/include/linux/fs.h	2006-08-15 17:05:51.941242800 +1000
@@ -879,6 +879,8 @@
 	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);
+#define HAVE_FOP_OPEN_EXEC
+	int (*open_exec) (struct inode *);
 };
 
 struct inode_operations {
Index: 2.4.x-xfs/mm/mprotect.c
===================================================================
--- 2.4.x-xfs.orig/mm/mprotect.c	2004-11-22 13:47:19.000000000 +1100
+++ 2.4.x-xfs/mm/mprotect.c	2006-08-15 17:05:51.945242284 +1000
@@ -300,6 +300,11 @@
 			goto out;
 		}
 
+		if (vma->vm_ops && vma->vm_ops->mprotect) {
+			error = vma->vm_ops->mprotect(vma, newflags);
+			if (error < 0)
+				goto out;
+		}
 		if (vma->vm_end > end) {
 			error = mprotect_fixup(vma, &prev, nstart, end, newflags);
 			goto out;