%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;