%patch
Index: 2.6.x-xfs/Documentation/filesystems/xfs.txt
===================================================================
--- 2.6.x-xfs.orig/Documentation/filesystems/xfs.txt Tue May 11 16:19:18 2004
+++ 2.6.x-xfs/Documentation/filesystems/xfs.txt Wed May 12 09:39:03 2004
@@ -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.6.x-xfs/fs/Kconfig
===================================================================
--- 2.6.x-xfs.orig/fs/Kconfig Tue May 11 16:22:22 2004
+++ 2.6.x-xfs/fs/Kconfig Tue May 11 16:22:28 2004
@@ -344,6 +344,18 @@
with or without the generic quota support enabled (CONFIG_QUOTA) -
they are completely independent subsystems.
+config XFS_DMAPI
+ tristate "DMAPI support"
+ depends on XFS_FS
+ help
+ 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.
+
config XFS_SECURITY
bool "Security Label support"
depends on XFS_FS
Index: 2.6.x-xfs/include/linux/mm.h
===================================================================
--- 2.6.x-xfs.orig/include/linux/mm.h Tue May 11 14:54:16 2004
+++ 2.6.x-xfs/include/linux/mm.h Tue May 11 16:22:28 2004
@@ -148,6 +148,8 @@
void (*close)(struct vm_area_struct * area);
struct page * (*nopage)(struct vm_area_struct * area, unsigned long address, int *type);
int (*populate)(struct vm_area_struct * area, unsigned long address, unsigned long len, pgprot_t prot, unsigned long pgoff, int nonblock);
+#define HAVE_VMOP_MPROTECT
+ int (*mprotect)(struct vm_area_struct * area, unsigned int newflags);
};
/* forward declaration; pte_chain is meant to be internal to rmap.c */
Index: 2.6.x-xfs/mm/mprotect.c
===================================================================
--- 2.6.x-xfs.orig/mm/mprotect.c Tue May 11 14:54:17 2004
+++ 2.6.x-xfs/mm/mprotect.c Tue May 11 16:22:28 2004
@@ -294,6 +294,11 @@
if (error)
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;