diff options
author | Christoph Hellwig <hch@infradead.org> | 2010-06-23 04:11:15 -0400 |
---|---|---|
committer | Alex Elder <aelder@sgi.com> | 2010-07-26 14:16:33 -0400 |
commit | 288699fecaffa1ef8f75f92020cbb593a772e487 (patch) | |
tree | 0b8dff3cff671a429739e1b30c8dcfedc40c19a7 | |
parent | b37fa16e78d6f9790462b3181602a26b5af36260 (diff) |
xfs: drop dmapi hooks
Dmapi support was never merged upstream, but we still have a lot of hooks
bloating XFS for it, all over the fast pathes of the filesystem.
This patch drops over 700 lines of dmapi overhead. If we'll ever get HSM
support in mainline at least the namespace events can be done much saner
in the VFS instead of the individual filesystem, so it's not like this
is much help for future work.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
70 files changed, 27 insertions, 779 deletions
diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index c8fb13f83b3f..a5239b1713be 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile | |||
@@ -90,8 +90,7 @@ xfs-y += xfs_alloc.o \ | |||
90 | xfs_trans_item.o \ | 90 | xfs_trans_item.o \ |
91 | xfs_utils.o \ | 91 | xfs_utils.o \ |
92 | xfs_vnodeops.o \ | 92 | xfs_vnodeops.o \ |
93 | xfs_rw.o \ | 93 | xfs_rw.o |
94 | xfs_dmops.o | ||
95 | 94 | ||
96 | xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o | 95 | xfs-$(CONFIG_XFS_TRACE) += xfs_btree_trace.o |
97 | 96 | ||
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 34640d6dbdcb..4cd5e00f0c5c 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_ag.h" | 23 | #include "xfs_ag.h" |
24 | #include "xfs_dir2.h" | 24 | #include "xfs_dir2.h" |
25 | #include "xfs_trans.h" | 25 | #include "xfs_trans.h" |
26 | #include "xfs_dmapi.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_bmap_btree.h" | 27 | #include "xfs_bmap_btree.h" |
29 | #include "xfs_alloc_btree.h" | 28 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 2ee3f7a60163..4b2177f5b223 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include "xfs_inum.h" | 39 | #include "xfs_inum.h" |
40 | #include "xfs_log.h" | 40 | #include "xfs_log.h" |
41 | #include "xfs_ag.h" | 41 | #include "xfs_ag.h" |
42 | #include "xfs_dmapi.h" | ||
43 | #include "xfs_mount.h" | 42 | #include "xfs_mount.h" |
44 | #include "xfs_trace.h" | 43 | #include "xfs_trace.h" |
45 | 44 | ||
diff --git a/fs/xfs/linux-2.6/xfs_dmapi_priv.h b/fs/xfs/linux-2.6/xfs_dmapi_priv.h deleted file mode 100644 index a8b0b1685eed..000000000000 --- a/fs/xfs/linux-2.6/xfs_dmapi_priv.h +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000-2006 Silicon Graphics, Inc. | ||
3 | * All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it would be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write the Free Software Foundation, | ||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #ifndef __XFS_DMAPI_PRIV_H__ | ||
19 | #define __XFS_DMAPI_PRIV_H__ | ||
20 | |||
21 | /* | ||
22 | * Based on IO_ISDIRECT, decide which i_ flag is set. | ||
23 | */ | ||
24 | #define DM_SEM_FLAG_RD(ioflags) (((ioflags) & IO_ISDIRECT) ? \ | ||
25 | DM_FLAGS_IMUX : 0) | ||
26 | #define DM_SEM_FLAG_WR (DM_FLAGS_IALLOCSEM_WR | DM_FLAGS_IMUX) | ||
27 | |||
28 | #endif /*__XFS_DMAPI_PRIV_H__*/ | ||
diff --git a/fs/xfs/linux-2.6/xfs_export.c b/fs/xfs/linux-2.6/xfs_export.c index e7839ee49e43..09c91325f727 100644 --- a/fs/xfs/linux-2.6/xfs_export.c +++ b/fs/xfs/linux-2.6/xfs_export.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
24 | #include "xfs_ag.h" | 24 | #include "xfs_ag.h" |
25 | #include "xfs_dir2.h" | 25 | #include "xfs_dir2.h" |
26 | #include "xfs_dmapi.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_export.h" | 27 | #include "xfs_export.h" |
29 | #include "xfs_vnodeops.h" | 28 | #include "xfs_vnodeops.h" |
diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index 257a56b127cf..dca06131551a 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_ag.h" | 24 | #include "xfs_ag.h" |
25 | #include "xfs_dir2.h" | 25 | #include "xfs_dir2.h" |
26 | #include "xfs_trans.h" | 26 | #include "xfs_trans.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_bmap_btree.h" | 28 | #include "xfs_bmap_btree.h" |
30 | #include "xfs_alloc_btree.h" | 29 | #include "xfs_alloc_btree.h" |
@@ -275,20 +274,6 @@ xfs_file_aio_read( | |||
275 | mutex_lock(&inode->i_mutex); | 274 | mutex_lock(&inode->i_mutex); |
276 | xfs_ilock(ip, XFS_IOLOCK_SHARED); | 275 | xfs_ilock(ip, XFS_IOLOCK_SHARED); |
277 | 276 | ||
278 | if (DM_EVENT_ENABLED(ip, DM_EVENT_READ) && !(ioflags & IO_INVIS)) { | ||
279 | int dmflags = FILP_DELAY_FLAG(file) | DM_SEM_FLAG_RD(ioflags); | ||
280 | int iolock = XFS_IOLOCK_SHARED; | ||
281 | |||
282 | ret = -XFS_SEND_DATA(mp, DM_EVENT_READ, ip, iocb->ki_pos, size, | ||
283 | dmflags, &iolock); | ||
284 | if (ret) { | ||
285 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); | ||
286 | if (unlikely(ioflags & IO_ISDIRECT)) | ||
287 | mutex_unlock(&inode->i_mutex); | ||
288 | return ret; | ||
289 | } | ||
290 | } | ||
291 | |||
292 | if (unlikely(ioflags & IO_ISDIRECT)) { | 277 | if (unlikely(ioflags & IO_ISDIRECT)) { |
293 | if (inode->i_mapping->nrpages) { | 278 | if (inode->i_mapping->nrpages) { |
294 | ret = -xfs_flushinval_pages(ip, | 279 | ret = -xfs_flushinval_pages(ip, |
@@ -321,7 +306,6 @@ xfs_file_splice_read( | |||
321 | unsigned int flags) | 306 | unsigned int flags) |
322 | { | 307 | { |
323 | struct xfs_inode *ip = XFS_I(infilp->f_mapping->host); | 308 | struct xfs_inode *ip = XFS_I(infilp->f_mapping->host); |
324 | struct xfs_mount *mp = ip->i_mount; | ||
325 | int ioflags = 0; | 309 | int ioflags = 0; |
326 | ssize_t ret; | 310 | ssize_t ret; |
327 | 311 | ||
@@ -335,18 +319,6 @@ xfs_file_splice_read( | |||
335 | 319 | ||
336 | xfs_ilock(ip, XFS_IOLOCK_SHARED); | 320 | xfs_ilock(ip, XFS_IOLOCK_SHARED); |
337 | 321 | ||
338 | if (DM_EVENT_ENABLED(ip, DM_EVENT_READ) && !(ioflags & IO_INVIS)) { | ||
339 | int iolock = XFS_IOLOCK_SHARED; | ||
340 | int error; | ||
341 | |||
342 | error = XFS_SEND_DATA(mp, DM_EVENT_READ, ip, *ppos, count, | ||
343 | FILP_DELAY_FLAG(infilp), &iolock); | ||
344 | if (error) { | ||
345 | xfs_iunlock(ip, XFS_IOLOCK_SHARED); | ||
346 | return -error; | ||
347 | } | ||
348 | } | ||
349 | |||
350 | trace_xfs_file_splice_read(ip, count, *ppos, ioflags); | 322 | trace_xfs_file_splice_read(ip, count, *ppos, ioflags); |
351 | 323 | ||
352 | ret = generic_file_splice_read(infilp, ppos, pipe, count, flags); | 324 | ret = generic_file_splice_read(infilp, ppos, pipe, count, flags); |
@@ -367,7 +339,6 @@ xfs_file_splice_write( | |||
367 | { | 339 | { |
368 | struct inode *inode = outfilp->f_mapping->host; | 340 | struct inode *inode = outfilp->f_mapping->host; |
369 | struct xfs_inode *ip = XFS_I(inode); | 341 | struct xfs_inode *ip = XFS_I(inode); |
370 | struct xfs_mount *mp = ip->i_mount; | ||
371 | xfs_fsize_t isize, new_size; | 342 | xfs_fsize_t isize, new_size; |
372 | int ioflags = 0; | 343 | int ioflags = 0; |
373 | ssize_t ret; | 344 | ssize_t ret; |
@@ -382,18 +353,6 @@ xfs_file_splice_write( | |||
382 | 353 | ||
383 | xfs_ilock(ip, XFS_IOLOCK_EXCL); | 354 | xfs_ilock(ip, XFS_IOLOCK_EXCL); |
384 | 355 | ||
385 | if (DM_EVENT_ENABLED(ip, DM_EVENT_WRITE) && !(ioflags & IO_INVIS)) { | ||
386 | int iolock = XFS_IOLOCK_EXCL; | ||
387 | int error; | ||
388 | |||
389 | error = XFS_SEND_DATA(mp, DM_EVENT_WRITE, ip, *ppos, count, | ||
390 | FILP_DELAY_FLAG(outfilp), &iolock); | ||
391 | if (error) { | ||
392 | xfs_iunlock(ip, XFS_IOLOCK_EXCL); | ||
393 | return -error; | ||
394 | } | ||
395 | } | ||
396 | |||
397 | new_size = *ppos + count; | 356 | new_size = *ppos + count; |
398 | 357 | ||
399 | xfs_ilock(ip, XFS_ILOCK_EXCL); | 358 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
@@ -627,7 +586,6 @@ xfs_file_aio_write( | |||
627 | int ioflags = 0; | 586 | int ioflags = 0; |
628 | xfs_fsize_t isize, new_size; | 587 | xfs_fsize_t isize, new_size; |
629 | int iolock; | 588 | int iolock; |
630 | int eventsent = 0; | ||
631 | size_t ocount = 0, count; | 589 | size_t ocount = 0, count; |
632 | int need_i_mutex; | 590 | int need_i_mutex; |
633 | 591 | ||
@@ -673,33 +631,6 @@ start: | |||
673 | goto out_unlock_mutex; | 631 | goto out_unlock_mutex; |
674 | } | 632 | } |
675 | 633 | ||
676 | if ((DM_EVENT_ENABLED(ip, DM_EVENT_WRITE) && | ||
677 | !(ioflags & IO_INVIS) && !eventsent)) { | ||
678 | int dmflags = FILP_DELAY_FLAG(file); | ||
679 | |||
680 | if (need_i_mutex) | ||
681 | dmflags |= DM_FLAGS_IMUX; | ||
682 | |||
683 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | ||
684 | error = XFS_SEND_DATA(ip->i_mount, DM_EVENT_WRITE, ip, | ||
685 | pos, count, dmflags, &iolock); | ||
686 | if (error) { | ||
687 | goto out_unlock_internal; | ||
688 | } | ||
689 | xfs_ilock(ip, XFS_ILOCK_EXCL); | ||
690 | eventsent = 1; | ||
691 | |||
692 | /* | ||
693 | * The iolock was dropped and reacquired in XFS_SEND_DATA | ||
694 | * so we have to recheck the size when appending. | ||
695 | * We will only "goto start;" once, since having sent the | ||
696 | * event prevents another call to XFS_SEND_DATA, which is | ||
697 | * what allows the size to change in the first place. | ||
698 | */ | ||
699 | if ((file->f_flags & O_APPEND) && pos != ip->i_size) | ||
700 | goto start; | ||
701 | } | ||
702 | |||
703 | if (ioflags & IO_ISDIRECT) { | 634 | if (ioflags & IO_ISDIRECT) { |
704 | xfs_buftarg_t *target = | 635 | xfs_buftarg_t *target = |
705 | XFS_IS_REALTIME_INODE(ip) ? | 636 | XFS_IS_REALTIME_INODE(ip) ? |
@@ -830,22 +761,6 @@ write_retry: | |||
830 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | 761 | xfs_iunlock(ip, XFS_ILOCK_EXCL); |
831 | } | 762 | } |
832 | 763 | ||
833 | if (ret == -ENOSPC && | ||
834 | DM_EVENT_ENABLED(ip, DM_EVENT_NOSPACE) && !(ioflags & IO_INVIS)) { | ||
835 | xfs_iunlock(ip, iolock); | ||
836 | if (need_i_mutex) | ||
837 | mutex_unlock(&inode->i_mutex); | ||
838 | error = XFS_SEND_NAMESP(ip->i_mount, DM_EVENT_NOSPACE, ip, | ||
839 | DM_RIGHT_NULL, ip, DM_RIGHT_NULL, NULL, NULL, | ||
840 | 0, 0, 0); /* Delay flag intentionally unused */ | ||
841 | if (need_i_mutex) | ||
842 | mutex_lock(&inode->i_mutex); | ||
843 | xfs_ilock(ip, iolock); | ||
844 | if (error) | ||
845 | goto out_unlock_internal; | ||
846 | goto start; | ||
847 | } | ||
848 | |||
849 | error = -ret; | 764 | error = -ret; |
850 | if (ret <= 0) | 765 | if (ret <= 0) |
851 | goto out_unlock_internal; | 766 | goto out_unlock_internal; |
diff --git a/fs/xfs/linux-2.6/xfs_fs_subr.c b/fs/xfs/linux-2.6/xfs_fs_subr.c index b6918d76bc7b..1f279b012f94 100644 --- a/fs/xfs/linux-2.6/xfs_fs_subr.c +++ b/fs/xfs/linux-2.6/xfs_fs_subr.c | |||
@@ -21,10 +21,6 @@ | |||
21 | #include "xfs_inode.h" | 21 | #include "xfs_inode.h" |
22 | #include "xfs_trace.h" | 22 | #include "xfs_trace.h" |
23 | 23 | ||
24 | int fs_noerr(void) { return 0; } | ||
25 | int fs_nosys(void) { return ENOSYS; } | ||
26 | void fs_noval(void) { return; } | ||
27 | |||
28 | /* | 24 | /* |
29 | * note: all filemap functions return negative error codes. These | 25 | * note: all filemap functions return negative error codes. These |
30 | * need to be inverted before returning to the xfs core functions. | 26 | * need to be inverted before returning to the xfs core functions. |
diff --git a/fs/xfs/linux-2.6/xfs_fs_subr.h b/fs/xfs/linux-2.6/xfs_fs_subr.h deleted file mode 100644 index 82bb19b2599e..000000000000 --- a/fs/xfs/linux-2.6/xfs_fs_subr.h +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000,2002,2005 Silicon Graphics, Inc. | ||
3 | * All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it would be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write the Free Software Foundation, | ||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #ifndef __XFS_FS_SUBR_H__ | ||
19 | #define __XFS_FS_SUBR_H__ | ||
20 | |||
21 | extern int fs_noerr(void); | ||
22 | extern int fs_nosys(void); | ||
23 | extern void fs_noval(void); | ||
24 | |||
25 | #endif /* __XFS_FS_SUBR_H__ */ | ||
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index e59a81062830..addd37051aa9 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
@@ -1116,16 +1115,7 @@ xfs_ioctl_setattr( | |||
1116 | xfs_qm_dqrele(udqp); | 1115 | xfs_qm_dqrele(udqp); |
1117 | xfs_qm_dqrele(gdqp); | 1116 | xfs_qm_dqrele(gdqp); |
1118 | 1117 | ||
1119 | if (code) | 1118 | return code; |
1120 | return code; | ||
1121 | |||
1122 | if (DM_EVENT_ENABLED(ip, DM_EVENT_ATTRIBUTE)) { | ||
1123 | XFS_SEND_NAMESP(mp, DM_EVENT_ATTRIBUTE, ip, DM_RIGHT_NULL, | ||
1124 | NULL, DM_RIGHT_NULL, NULL, NULL, 0, 0, | ||
1125 | (mask & FSX_NONBLOCK) ? DM_FLAGS_NDELAY : 0); | ||
1126 | } | ||
1127 | |||
1128 | return 0; | ||
1129 | 1119 | ||
1130 | error_return: | 1120 | error_return: |
1131 | xfs_qm_dqrele(udqp); | 1121 | xfs_qm_dqrele(udqp); |
diff --git a/fs/xfs/linux-2.6/xfs_ioctl32.c b/fs/xfs/linux-2.6/xfs_ioctl32.c index 52ed49e6465c..e67be3ae3540 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl32.c +++ b/fs/xfs/linux-2.6/xfs_ioctl32.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include "xfs_sb.h" | 29 | #include "xfs_sb.h" |
30 | #include "xfs_ag.h" | 30 | #include "xfs_ag.h" |
31 | #include "xfs_dir2.h" | 31 | #include "xfs_dir2.h" |
32 | #include "xfs_dmapi.h" | ||
33 | #include "xfs_mount.h" | 32 | #include "xfs_mount.h" |
34 | #include "xfs_bmap_btree.h" | 33 | #include "xfs_bmap_btree.h" |
35 | #include "xfs_attr_sf.h" | 34 | #include "xfs_attr_sf.h" |
diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index 44f0b2de153e..ce3118477d9e 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_alloc.h" | 28 | #include "xfs_alloc.h" |
29 | #include "xfs_dmapi.h" | ||
30 | #include "xfs_quota.h" | 29 | #include "xfs_quota.h" |
31 | #include "xfs_mount.h" | 30 | #include "xfs_mount.h" |
32 | #include "xfs_bmap_btree.h" | 31 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/linux-2.6/xfs_linux.h b/fs/xfs/linux-2.6/xfs_linux.h index facfb323a706..998a9d7fb9c8 100644 --- a/fs/xfs/linux-2.6/xfs_linux.h +++ b/fs/xfs/linux-2.6/xfs_linux.h | |||
@@ -87,7 +87,6 @@ | |||
87 | #include <xfs_aops.h> | 87 | #include <xfs_aops.h> |
88 | #include <xfs_super.h> | 88 | #include <xfs_super.h> |
89 | #include <xfs_globals.h> | 89 | #include <xfs_globals.h> |
90 | #include <xfs_fs_subr.h> | ||
91 | #include <xfs_buf.h> | 90 | #include <xfs_buf.h> |
92 | 91 | ||
93 | /* | 92 | /* |
diff --git a/fs/xfs/linux-2.6/xfs_quotaops.c b/fs/xfs/linux-2.6/xfs_quotaops.c index 067cafbfc635..bfd5ac9d1f6f 100644 --- a/fs/xfs/linux-2.6/xfs_quotaops.c +++ b/fs/xfs/linux-2.6/xfs_quotaops.c | |||
@@ -16,7 +16,6 @@ | |||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_dmapi.h" | ||
20 | #include "xfs_sb.h" | 19 | #include "xfs_sb.h" |
21 | #include "xfs_inum.h" | 20 | #include "xfs_inum.h" |
22 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 80938c736c27..4c7b8f9f4deb 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
@@ -116,9 +115,6 @@ mempool_t *xfs_ioend_pool; | |||
116 | #define MNTOPT_GQUOTANOENF "gqnoenforce"/* group quota limit enforcement */ | 115 | #define MNTOPT_GQUOTANOENF "gqnoenforce"/* group quota limit enforcement */ |
117 | #define MNTOPT_PQUOTANOENF "pqnoenforce"/* project quota limit enforcement */ | 116 | #define MNTOPT_PQUOTANOENF "pqnoenforce"/* project quota limit enforcement */ |
118 | #define MNTOPT_QUOTANOENF "qnoenforce" /* same as uqnoenforce */ | 117 | #define MNTOPT_QUOTANOENF "qnoenforce" /* same as uqnoenforce */ |
119 | #define MNTOPT_DMAPI "dmapi" /* DMI enabled (DMAPI / XDSM) */ | ||
120 | #define MNTOPT_XDSM "xdsm" /* DMI enabled (DMAPI / XDSM) */ | ||
121 | #define MNTOPT_DMI "dmi" /* DMI enabled (DMAPI / XDSM) */ | ||
122 | #define MNTOPT_DELAYLOG "delaylog" /* Delayed loging enabled */ | 118 | #define MNTOPT_DELAYLOG "delaylog" /* Delayed loging enabled */ |
123 | #define MNTOPT_NODELAYLOG "nodelaylog" /* Delayed loging disabled */ | 119 | #define MNTOPT_NODELAYLOG "nodelaylog" /* Delayed loging disabled */ |
124 | 120 | ||
@@ -172,15 +168,13 @@ suffix_strtoul(char *s, char **endp, unsigned int base) | |||
172 | STATIC int | 168 | STATIC int |
173 | xfs_parseargs( | 169 | xfs_parseargs( |
174 | struct xfs_mount *mp, | 170 | struct xfs_mount *mp, |
175 | char *options, | 171 | char *options) |
176 | char **mtpt) | ||
177 | { | 172 | { |
178 | struct super_block *sb = mp->m_super; | 173 | struct super_block *sb = mp->m_super; |
179 | char *this_char, *value, *eov; | 174 | char *this_char, *value, *eov; |
180 | int dsunit = 0; | 175 | int dsunit = 0; |
181 | int dswidth = 0; | 176 | int dswidth = 0; |
182 | int iosize = 0; | 177 | int iosize = 0; |
183 | int dmapi_implies_ikeep = 1; | ||
184 | __uint8_t iosizelog = 0; | 178 | __uint8_t iosizelog = 0; |
185 | 179 | ||
186 | /* | 180 | /* |
@@ -243,15 +237,10 @@ xfs_parseargs( | |||
243 | if (!mp->m_logname) | 237 | if (!mp->m_logname) |
244 | return ENOMEM; | 238 | return ENOMEM; |
245 | } else if (!strcmp(this_char, MNTOPT_MTPT)) { | 239 | } else if (!strcmp(this_char, MNTOPT_MTPT)) { |
246 | if (!value || !*value) { | 240 | cmn_err(CE_WARN, |
247 | cmn_err(CE_WARN, | 241 | "XFS: %s option not allowed on this system", |
248 | "XFS: %s option requires an argument", | 242 | this_char); |
249 | this_char); | 243 | return EINVAL; |
250 | return EINVAL; | ||
251 | } | ||
252 | *mtpt = kstrndup(value, MAXNAMELEN, GFP_KERNEL); | ||
253 | if (!*mtpt) | ||
254 | return ENOMEM; | ||
255 | } else if (!strcmp(this_char, MNTOPT_RTDEV)) { | 244 | } else if (!strcmp(this_char, MNTOPT_RTDEV)) { |
256 | if (!value || !*value) { | 245 | if (!value || !*value) { |
257 | cmn_err(CE_WARN, | 246 | cmn_err(CE_WARN, |
@@ -329,7 +318,6 @@ xfs_parseargs( | |||
329 | } else if (!strcmp(this_char, MNTOPT_IKEEP)) { | 318 | } else if (!strcmp(this_char, MNTOPT_IKEEP)) { |
330 | mp->m_flags |= XFS_MOUNT_IKEEP; | 319 | mp->m_flags |= XFS_MOUNT_IKEEP; |
331 | } else if (!strcmp(this_char, MNTOPT_NOIKEEP)) { | 320 | } else if (!strcmp(this_char, MNTOPT_NOIKEEP)) { |
332 | dmapi_implies_ikeep = 0; | ||
333 | mp->m_flags &= ~XFS_MOUNT_IKEEP; | 321 | mp->m_flags &= ~XFS_MOUNT_IKEEP; |
334 | } else if (!strcmp(this_char, MNTOPT_LARGEIO)) { | 322 | } else if (!strcmp(this_char, MNTOPT_LARGEIO)) { |
335 | mp->m_flags &= ~XFS_MOUNT_COMPAT_IOSIZE; | 323 | mp->m_flags &= ~XFS_MOUNT_COMPAT_IOSIZE; |
@@ -370,12 +358,6 @@ xfs_parseargs( | |||
370 | } else if (!strcmp(this_char, MNTOPT_GQUOTANOENF)) { | 358 | } else if (!strcmp(this_char, MNTOPT_GQUOTANOENF)) { |
371 | mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE); | 359 | mp->m_qflags |= (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE); |
372 | mp->m_qflags &= ~XFS_OQUOTA_ENFD; | 360 | mp->m_qflags &= ~XFS_OQUOTA_ENFD; |
373 | } else if (!strcmp(this_char, MNTOPT_DMAPI)) { | ||
374 | mp->m_flags |= XFS_MOUNT_DMAPI; | ||
375 | } else if (!strcmp(this_char, MNTOPT_XDSM)) { | ||
376 | mp->m_flags |= XFS_MOUNT_DMAPI; | ||
377 | } else if (!strcmp(this_char, MNTOPT_DMI)) { | ||
378 | mp->m_flags |= XFS_MOUNT_DMAPI; | ||
379 | } else if (!strcmp(this_char, MNTOPT_DELAYLOG)) { | 361 | } else if (!strcmp(this_char, MNTOPT_DELAYLOG)) { |
380 | mp->m_flags |= XFS_MOUNT_DELAYLOG; | 362 | mp->m_flags |= XFS_MOUNT_DELAYLOG; |
381 | cmn_err(CE_WARN, | 363 | cmn_err(CE_WARN, |
@@ -430,12 +412,6 @@ xfs_parseargs( | |||
430 | return EINVAL; | 412 | return EINVAL; |
431 | } | 413 | } |
432 | 414 | ||
433 | if ((mp->m_flags & XFS_MOUNT_DMAPI) && (!*mtpt || *mtpt[0] == '\0')) { | ||
434 | printk("XFS: %s option needs the mount point option as well\n", | ||
435 | MNTOPT_DMAPI); | ||
436 | return EINVAL; | ||
437 | } | ||
438 | |||
439 | if ((dsunit && !dswidth) || (!dsunit && dswidth)) { | 415 | if ((dsunit && !dswidth) || (!dsunit && dswidth)) { |
440 | cmn_err(CE_WARN, | 416 | cmn_err(CE_WARN, |
441 | "XFS: sunit and swidth must be specified together"); | 417 | "XFS: sunit and swidth must be specified together"); |
@@ -449,18 +425,6 @@ xfs_parseargs( | |||
449 | return EINVAL; | 425 | return EINVAL; |
450 | } | 426 | } |
451 | 427 | ||
452 | /* | ||
453 | * Applications using DMI filesystems often expect the | ||
454 | * inode generation number to be monotonically increasing. | ||
455 | * If we delete inode chunks we break this assumption, so | ||
456 | * keep unused inode chunks on disk for DMI filesystems | ||
457 | * until we come up with a better solution. | ||
458 | * Note that if "ikeep" or "noikeep" mount options are | ||
459 | * supplied, then they are honored. | ||
460 | */ | ||
461 | if ((mp->m_flags & XFS_MOUNT_DMAPI) && dmapi_implies_ikeep) | ||
462 | mp->m_flags |= XFS_MOUNT_IKEEP; | ||
463 | |||
464 | done: | 428 | done: |
465 | if (!(mp->m_flags & XFS_MOUNT_NOALIGN)) { | 429 | if (!(mp->m_flags & XFS_MOUNT_NOALIGN)) { |
466 | /* | 430 | /* |
@@ -542,7 +506,6 @@ xfs_showargs( | |||
542 | { XFS_MOUNT_OSYNCISOSYNC, "," MNTOPT_OSYNCISOSYNC }, | 506 | { XFS_MOUNT_OSYNCISOSYNC, "," MNTOPT_OSYNCISOSYNC }, |
543 | { XFS_MOUNT_ATTR2, "," MNTOPT_ATTR2 }, | 507 | { XFS_MOUNT_ATTR2, "," MNTOPT_ATTR2 }, |
544 | { XFS_MOUNT_FILESTREAMS, "," MNTOPT_FILESTREAM }, | 508 | { XFS_MOUNT_FILESTREAMS, "," MNTOPT_FILESTREAM }, |
545 | { XFS_MOUNT_DMAPI, "," MNTOPT_DMAPI }, | ||
546 | { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, | 509 | { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, |
547 | { XFS_MOUNT_DELAYLOG, "," MNTOPT_DELAYLOG }, | 510 | { XFS_MOUNT_DELAYLOG, "," MNTOPT_DELAYLOG }, |
548 | { 0, NULL } | 511 | { 0, NULL } |
@@ -1207,8 +1170,6 @@ xfs_fs_put_super( | |||
1207 | xfs_sync_attr(mp, 0); | 1170 | xfs_sync_attr(mp, 0); |
1208 | } | 1171 | } |
1209 | 1172 | ||
1210 | XFS_SEND_PREUNMOUNT(mp); | ||
1211 | |||
1212 | /* | 1173 | /* |
1213 | * Blow away any referenced inode in the filestreams cache. | 1174 | * Blow away any referenced inode in the filestreams cache. |
1214 | * This can and will cause log traffic as inodes go inactive | 1175 | * This can and will cause log traffic as inodes go inactive |
@@ -1218,14 +1179,11 @@ xfs_fs_put_super( | |||
1218 | 1179 | ||
1219 | XFS_bflush(mp->m_ddev_targp); | 1180 | XFS_bflush(mp->m_ddev_targp); |
1220 | 1181 | ||
1221 | XFS_SEND_UNMOUNT(mp); | ||
1222 | |||
1223 | xfs_unmountfs(mp); | 1182 | xfs_unmountfs(mp); |
1224 | xfs_freesb(mp); | 1183 | xfs_freesb(mp); |
1225 | xfs_inode_shrinker_unregister(mp); | 1184 | xfs_inode_shrinker_unregister(mp); |
1226 | xfs_icsb_destroy_counters(mp); | 1185 | xfs_icsb_destroy_counters(mp); |
1227 | xfs_close_devices(mp); | 1186 | xfs_close_devices(mp); |
1228 | xfs_dmops_put(mp); | ||
1229 | xfs_free_fsname(mp); | 1187 | xfs_free_fsname(mp); |
1230 | kfree(mp); | 1188 | kfree(mp); |
1231 | } | 1189 | } |
@@ -1543,7 +1501,6 @@ xfs_fs_fill_super( | |||
1543 | struct inode *root; | 1501 | struct inode *root; |
1544 | struct xfs_mount *mp = NULL; | 1502 | struct xfs_mount *mp = NULL; |
1545 | int flags = 0, error = ENOMEM; | 1503 | int flags = 0, error = ENOMEM; |
1546 | char *mtpt = NULL; | ||
1547 | 1504 | ||
1548 | mp = kzalloc(sizeof(struct xfs_mount), GFP_KERNEL); | 1505 | mp = kzalloc(sizeof(struct xfs_mount), GFP_KERNEL); |
1549 | if (!mp) | 1506 | if (!mp) |
@@ -1559,7 +1516,7 @@ xfs_fs_fill_super( | |||
1559 | mp->m_super = sb; | 1516 | mp->m_super = sb; |
1560 | sb->s_fs_info = mp; | 1517 | sb->s_fs_info = mp; |
1561 | 1518 | ||
1562 | error = xfs_parseargs(mp, (char *)data, &mtpt); | 1519 | error = xfs_parseargs(mp, (char *)data); |
1563 | if (error) | 1520 | if (error) |
1564 | goto out_free_fsname; | 1521 | goto out_free_fsname; |
1565 | 1522 | ||
@@ -1571,16 +1528,12 @@ xfs_fs_fill_super( | |||
1571 | #endif | 1528 | #endif |
1572 | sb->s_op = &xfs_super_operations; | 1529 | sb->s_op = &xfs_super_operations; |
1573 | 1530 | ||
1574 | error = xfs_dmops_get(mp); | ||
1575 | if (error) | ||
1576 | goto out_free_fsname; | ||
1577 | |||
1578 | if (silent) | 1531 | if (silent) |
1579 | flags |= XFS_MFSI_QUIET; | 1532 | flags |= XFS_MFSI_QUIET; |
1580 | 1533 | ||
1581 | error = xfs_open_devices(mp); | 1534 | error = xfs_open_devices(mp); |
1582 | if (error) | 1535 | if (error) |
1583 | goto out_put_dmops; | 1536 | goto out_free_fsname; |
1584 | 1537 | ||
1585 | if (xfs_icsb_init_counters(mp)) | 1538 | if (xfs_icsb_init_counters(mp)) |
1586 | mp->m_flags |= XFS_MOUNT_NO_PERCPU_SB; | 1539 | mp->m_flags |= XFS_MOUNT_NO_PERCPU_SB; |
@@ -1608,8 +1561,6 @@ xfs_fs_fill_super( | |||
1608 | if (error) | 1561 | if (error) |
1609 | goto out_filestream_unmount; | 1562 | goto out_filestream_unmount; |
1610 | 1563 | ||
1611 | XFS_SEND_MOUNT(mp, DM_RIGHT_NULL, mtpt, mp->m_fsname); | ||
1612 | |||
1613 | sb->s_magic = XFS_SB_MAGIC; | 1564 | sb->s_magic = XFS_SB_MAGIC; |
1614 | sb->s_blocksize = mp->m_sb.sb_blocksize; | 1565 | sb->s_blocksize = mp->m_sb.sb_blocksize; |
1615 | sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1; | 1566 | sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1; |
@@ -1638,7 +1589,6 @@ xfs_fs_fill_super( | |||
1638 | 1589 | ||
1639 | xfs_inode_shrinker_register(mp); | 1590 | xfs_inode_shrinker_register(mp); |
1640 | 1591 | ||
1641 | kfree(mtpt); | ||
1642 | return 0; | 1592 | return 0; |
1643 | 1593 | ||
1644 | out_filestream_unmount: | 1594 | out_filestream_unmount: |
@@ -1648,11 +1598,8 @@ xfs_fs_fill_super( | |||
1648 | out_destroy_counters: | 1598 | out_destroy_counters: |
1649 | xfs_icsb_destroy_counters(mp); | 1599 | xfs_icsb_destroy_counters(mp); |
1650 | xfs_close_devices(mp); | 1600 | xfs_close_devices(mp); |
1651 | out_put_dmops: | ||
1652 | xfs_dmops_put(mp); | ||
1653 | out_free_fsname: | 1601 | out_free_fsname: |
1654 | xfs_free_fsname(mp); | 1602 | xfs_free_fsname(mp); |
1655 | kfree(mtpt); | ||
1656 | kfree(mp); | 1603 | kfree(mp); |
1657 | out: | 1604 | out: |
1658 | return -error; | 1605 | return -error; |
diff --git a/fs/xfs/linux-2.6/xfs_super.h b/fs/xfs/linux-2.6/xfs_super.h index 519618e9279e..1ef4a4d2d997 100644 --- a/fs/xfs/linux-2.6/xfs_super.h +++ b/fs/xfs/linux-2.6/xfs_super.h | |||
@@ -56,12 +56,6 @@ extern void xfs_qm_exit(void); | |||
56 | # define XFS_BIGFS_STRING | 56 | # define XFS_BIGFS_STRING |
57 | #endif | 57 | #endif |
58 | 58 | ||
59 | #ifdef CONFIG_XFS_DMAPI | ||
60 | # define XFS_DMAPI_STRING "dmapi support, " | ||
61 | #else | ||
62 | # define XFS_DMAPI_STRING | ||
63 | #endif | ||
64 | |||
65 | #ifdef DEBUG | 59 | #ifdef DEBUG |
66 | # define XFS_DBG_STRING "debug" | 60 | # define XFS_DBG_STRING "debug" |
67 | #else | 61 | #else |
@@ -72,7 +66,6 @@ extern void xfs_qm_exit(void); | |||
72 | XFS_SECURITY_STRING \ | 66 | XFS_SECURITY_STRING \ |
73 | XFS_REALTIME_STRING \ | 67 | XFS_REALTIME_STRING \ |
74 | XFS_BIGFS_STRING \ | 68 | XFS_BIGFS_STRING \ |
75 | XFS_DMAPI_STRING \ | ||
76 | XFS_DBG_STRING /* DBG must be last */ | 69 | XFS_DBG_STRING /* DBG must be last */ |
77 | 70 | ||
78 | struct xfs_inode; | 71 | struct xfs_inode; |
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index a51a07c3a70c..ce323377a708 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/linux-2.6/xfs_trace.c b/fs/xfs/linux-2.6/xfs_trace.c index d12be8470cba..03e2dca36d4b 100644 --- a/fs/xfs/linux-2.6/xfs_trace.c +++ b/fs/xfs/linux-2.6/xfs_trace.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include "xfs_dinode.h" | 34 | #include "xfs_dinode.h" |
35 | #include "xfs_inode.h" | 35 | #include "xfs_inode.h" |
36 | #include "xfs_btree.h" | 36 | #include "xfs_btree.h" |
37 | #include "xfs_dmapi.h" | ||
38 | #include "xfs_mount.h" | 37 | #include "xfs_mount.h" |
39 | #include "xfs_ialloc.h" | 38 | #include "xfs_ialloc.h" |
40 | #include "xfs_itable.h" | 39 | #include "xfs_itable.h" |
diff --git a/fs/xfs/quota/xfs_dquot.c b/fs/xfs/quota/xfs_dquot.c index 585e7633dfc7..3c111ea41033 100644 --- a/fs/xfs/quota/xfs_dquot.c +++ b/fs/xfs/quota/xfs_dquot.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/quota/xfs_dquot_item.c b/fs/xfs/quota/xfs_dquot_item.c index 8d89a24ae324..15c211bd18d6 100644 --- a/fs/xfs/quota/xfs_dquot_item.c +++ b/fs/xfs/quota/xfs_dquot_item.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/quota/xfs_qm.c b/fs/xfs/quota/xfs_qm.c index 67c018392d62..0e01edb00cd9 100644 --- a/fs/xfs/quota/xfs_qm.c +++ b/fs/xfs/quota/xfs_qm.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/quota/xfs_qm_bhv.c b/fs/xfs/quota/xfs_qm_bhv.c index 97b410c12794..7283bccb37a6 100644 --- a/fs/xfs/quota/xfs_qm_bhv.c +++ b/fs/xfs/quota/xfs_qm_bhv.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/quota/xfs_qm_stats.c b/fs/xfs/quota/xfs_qm_stats.c index 3d1fc79532e2..446ae61af9a2 100644 --- a/fs/xfs/quota/xfs_qm_stats.c +++ b/fs/xfs/quota/xfs_qm_stats.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/quota/xfs_qm_syscalls.c b/fs/xfs/quota/xfs_qm_syscalls.c index b4487764e923..b286e0a3111b 100644 --- a/fs/xfs/quota/xfs_qm_syscalls.c +++ b/fs/xfs/quota/xfs_qm_syscalls.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include "xfs_ag.h" | 28 | #include "xfs_ag.h" |
29 | #include "xfs_dir2.h" | 29 | #include "xfs_dir2.h" |
30 | #include "xfs_alloc.h" | 30 | #include "xfs_alloc.h" |
31 | #include "xfs_dmapi.h" | ||
32 | #include "xfs_quota.h" | 31 | #include "xfs_quota.h" |
33 | #include "xfs_mount.h" | 32 | #include "xfs_mount.h" |
34 | #include "xfs_bmap_btree.h" | 33 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/quota/xfs_trans_dquot.c b/fs/xfs/quota/xfs_trans_dquot.c index 061d827da33c..04155c43b1b4 100644 --- a/fs/xfs/quota/xfs_trans_dquot.c +++ b/fs/xfs/quota/xfs_trans_dquot.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/support/debug.c b/fs/xfs/support/debug.c index 3f3610a7ee05..975aa10e1a47 100644 --- a/fs/xfs/support/debug.c +++ b/fs/xfs/support/debug.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include "xfs_sb.h" | 22 | #include "xfs_sb.h" |
23 | #include "xfs_inum.h" | 23 | #include "xfs_inum.h" |
24 | #include "xfs_ag.h" | 24 | #include "xfs_ag.h" |
25 | #include "xfs_dmapi.h" | ||
26 | #include "xfs_mount.h" | 25 | #include "xfs_mount.h" |
27 | #include "xfs_error.h" | 26 | #include "xfs_error.h" |
28 | 27 | ||
diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index a7fbe8a99b12..42b4b52644eb 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 83f494218759..7d638a5d1f0d 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index b9c196a53c42..426748955e3e 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include "xfs_sb.h" | 26 | #include "xfs_sb.h" |
27 | #include "xfs_ag.h" | 27 | #include "xfs_ag.h" |
28 | #include "xfs_dir2.h" | 28 | #include "xfs_dir2.h" |
29 | #include "xfs_dmapi.h" | ||
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_da_btree.h" | 30 | #include "xfs_da_btree.h" |
32 | #include "xfs_bmap_btree.h" | 31 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index a90ce74fc256..ca4d11d3a7a7 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_da_btree.h" | 29 | #include "xfs_da_btree.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 99587ded043f..9db1418a64bf 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include "xfs_dinode.h" | 34 | #include "xfs_dinode.h" |
35 | #include "xfs_inode.h" | 35 | #include "xfs_inode.h" |
36 | #include "xfs_btree.h" | 36 | #include "xfs_btree.h" |
37 | #include "xfs_dmapi.h" | ||
38 | #include "xfs_mount.h" | 37 | #include "xfs_mount.h" |
39 | #include "xfs_ialloc.h" | 38 | #include "xfs_ialloc.h" |
40 | #include "xfs_itable.h" | 39 | #include "xfs_itable.h" |
@@ -5605,28 +5604,6 @@ xfs_getbmap( | |||
5605 | prealloced = 0; | 5604 | prealloced = 0; |
5606 | fixlen = 1LL << 32; | 5605 | fixlen = 1LL << 32; |
5607 | } else { | 5606 | } else { |
5608 | /* | ||
5609 | * If the BMV_IF_NO_DMAPI_READ interface bit specified, do | ||
5610 | * not generate a DMAPI read event. Otherwise, if the | ||
5611 | * DM_EVENT_READ bit is set for the file, generate a read | ||
5612 | * event in order that the DMAPI application may do its thing | ||
5613 | * before we return the extents. Usually this means restoring | ||
5614 | * user file data to regions of the file that look like holes. | ||
5615 | * | ||
5616 | * The "old behavior" (from XFS_IOC_GETBMAP) is to not specify | ||
5617 | * BMV_IF_NO_DMAPI_READ so that read events are generated. | ||
5618 | * If this were not true, callers of ioctl(XFS_IOC_GETBMAP) | ||
5619 | * could misinterpret holes in a DMAPI file as true holes, | ||
5620 | * when in fact they may represent offline user data. | ||
5621 | */ | ||
5622 | if (DM_EVENT_ENABLED(ip, DM_EVENT_READ) && | ||
5623 | !(iflags & BMV_IF_NO_DMAPI_READ)) { | ||
5624 | error = XFS_SEND_DATA(mp, DM_EVENT_READ, ip, | ||
5625 | 0, 0, 0, NULL); | ||
5626 | if (error) | ||
5627 | return XFS_ERROR(error); | ||
5628 | } | ||
5629 | |||
5630 | if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && | 5607 | if (ip->i_d.di_format != XFS_DINODE_FMT_EXTENTS && |
5631 | ip->i_d.di_format != XFS_DINODE_FMT_BTREE && | 5608 | ip->i_d.di_format != XFS_DINODE_FMT_BTREE && |
5632 | ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) | 5609 | ip->i_d.di_format != XFS_DINODE_FMT_LOCAL) |
diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 416e47e54b83..998acf185c48 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 96be4b0f2496..beed23ec9259 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index 02a80984aa05..91ad92e83bc6 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_trans.h" | 24 | #include "xfs_trans.h" |
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_buf_item.h" | 28 | #include "xfs_buf_item.h" |
30 | #include "xfs_trans_priv.h" | 29 | #include "xfs_trans_priv.h" |
diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 0ca556b4bf31..a4a8965a92f5 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_da_btree.h" | 29 | #include "xfs_da_btree.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index 7f159d2a429a..86330da07f29 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c index 42520f041265..429f234c1b16 100644 --- a/fs/xfs/xfs_dir2.c +++ b/fs/xfs/xfs_dir2.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_da_btree.h" | 29 | #include "xfs_da_btree.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 779a267b0a84..ce3bac65d056 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 498f8d694330..ece400b833df 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index e2d89854ec9e..99c8fe0cf223 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_da_btree.h" | 29 | #include "xfs_da_btree.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 78fc4d9ae756..d1b40ea0cd69 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c index c1a5945d463a..d4e63e68fd70 100644 --- a/fs/xfs/xfs_dir2_sf.c +++ b/fs/xfs/xfs_dir2_sf.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_dmapi.h b/fs/xfs/xfs_dmapi.h deleted file mode 100644 index 2813cdd72375..000000000000 --- a/fs/xfs/xfs_dmapi.h +++ /dev/null | |||
@@ -1,170 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000-2005 Silicon Graphics, Inc. | ||
3 | * All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it would be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write the Free Software Foundation, | ||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #ifndef __XFS_DMAPI_H__ | ||
19 | #define __XFS_DMAPI_H__ | ||
20 | |||
21 | /* Values used to define the on-disk version of dm_attrname_t. All | ||
22 | * on-disk attribute names start with the 8-byte string "SGI_DMI_". | ||
23 | * | ||
24 | * In the on-disk inode, DMAPI attribute names consist of the user-provided | ||
25 | * name with the DMATTR_PREFIXSTRING pre-pended. This string must NEVER be | ||
26 | * changed. | ||
27 | */ | ||
28 | |||
29 | #define DMATTR_PREFIXLEN 8 | ||
30 | #define DMATTR_PREFIXSTRING "SGI_DMI_" | ||
31 | |||
32 | typedef enum { | ||
33 | DM_EVENT_INVALID = -1, | ||
34 | DM_EVENT_CANCEL = 0, /* not supported */ | ||
35 | DM_EVENT_MOUNT = 1, | ||
36 | DM_EVENT_PREUNMOUNT = 2, | ||
37 | DM_EVENT_UNMOUNT = 3, | ||
38 | DM_EVENT_DEBUT = 4, /* not supported */ | ||
39 | DM_EVENT_CREATE = 5, | ||
40 | DM_EVENT_CLOSE = 6, /* not supported */ | ||
41 | DM_EVENT_POSTCREATE = 7, | ||
42 | DM_EVENT_REMOVE = 8, | ||
43 | DM_EVENT_POSTREMOVE = 9, | ||
44 | DM_EVENT_RENAME = 10, | ||
45 | DM_EVENT_POSTRENAME = 11, | ||
46 | DM_EVENT_LINK = 12, | ||
47 | DM_EVENT_POSTLINK = 13, | ||
48 | DM_EVENT_SYMLINK = 14, | ||
49 | DM_EVENT_POSTSYMLINK = 15, | ||
50 | DM_EVENT_READ = 16, | ||
51 | DM_EVENT_WRITE = 17, | ||
52 | DM_EVENT_TRUNCATE = 18, | ||
53 | DM_EVENT_ATTRIBUTE = 19, | ||
54 | DM_EVENT_DESTROY = 20, | ||
55 | DM_EVENT_NOSPACE = 21, | ||
56 | DM_EVENT_USER = 22, | ||
57 | DM_EVENT_MAX = 23 | ||
58 | } dm_eventtype_t; | ||
59 | #define HAVE_DM_EVENTTYPE_T | ||
60 | |||
61 | typedef enum { | ||
62 | DM_RIGHT_NULL, | ||
63 | DM_RIGHT_SHARED, | ||
64 | DM_RIGHT_EXCL | ||
65 | } dm_right_t; | ||
66 | #define HAVE_DM_RIGHT_T | ||
67 | |||
68 | /* Defines for determining if an event message should be sent. */ | ||
69 | #ifdef HAVE_DMAPI | ||
70 | #define DM_EVENT_ENABLED(ip, event) ( \ | ||
71 | unlikely ((ip)->i_mount->m_flags & XFS_MOUNT_DMAPI) && \ | ||
72 | ( ((ip)->i_d.di_dmevmask & (1 << event)) || \ | ||
73 | ((ip)->i_mount->m_dmevmask & (1 << event)) ) \ | ||
74 | ) | ||
75 | #else | ||
76 | #define DM_EVENT_ENABLED(ip, event) (0) | ||
77 | #endif | ||
78 | |||
79 | #define DM_XFS_VALID_FS_EVENTS ( \ | ||
80 | (1 << DM_EVENT_PREUNMOUNT) | \ | ||
81 | (1 << DM_EVENT_UNMOUNT) | \ | ||
82 | (1 << DM_EVENT_NOSPACE) | \ | ||
83 | (1 << DM_EVENT_DEBUT) | \ | ||
84 | (1 << DM_EVENT_CREATE) | \ | ||
85 | (1 << DM_EVENT_POSTCREATE) | \ | ||
86 | (1 << DM_EVENT_REMOVE) | \ | ||
87 | (1 << DM_EVENT_POSTREMOVE) | \ | ||
88 | (1 << DM_EVENT_RENAME) | \ | ||
89 | (1 << DM_EVENT_POSTRENAME) | \ | ||
90 | (1 << DM_EVENT_LINK) | \ | ||
91 | (1 << DM_EVENT_POSTLINK) | \ | ||
92 | (1 << DM_EVENT_SYMLINK) | \ | ||
93 | (1 << DM_EVENT_POSTSYMLINK) | \ | ||
94 | (1 << DM_EVENT_ATTRIBUTE) | \ | ||
95 | (1 << DM_EVENT_DESTROY) ) | ||
96 | |||
97 | /* Events valid in dm_set_eventlist() when called with a file handle for | ||
98 | a regular file or a symlink. These events are persistent. | ||
99 | */ | ||
100 | |||
101 | #define DM_XFS_VALID_FILE_EVENTS ( \ | ||
102 | (1 << DM_EVENT_ATTRIBUTE) | \ | ||
103 | (1 << DM_EVENT_DESTROY) ) | ||
104 | |||
105 | /* Events valid in dm_set_eventlist() when called with a file handle for | ||
106 | a directory. These events are persistent. | ||
107 | */ | ||
108 | |||
109 | #define DM_XFS_VALID_DIRECTORY_EVENTS ( \ | ||
110 | (1 << DM_EVENT_CREATE) | \ | ||
111 | (1 << DM_EVENT_POSTCREATE) | \ | ||
112 | (1 << DM_EVENT_REMOVE) | \ | ||
113 | (1 << DM_EVENT_POSTREMOVE) | \ | ||
114 | (1 << DM_EVENT_RENAME) | \ | ||
115 | (1 << DM_EVENT_POSTRENAME) | \ | ||
116 | (1 << DM_EVENT_LINK) | \ | ||
117 | (1 << DM_EVENT_POSTLINK) | \ | ||
118 | (1 << DM_EVENT_SYMLINK) | \ | ||
119 | (1 << DM_EVENT_POSTSYMLINK) | \ | ||
120 | (1 << DM_EVENT_ATTRIBUTE) | \ | ||
121 | (1 << DM_EVENT_DESTROY) ) | ||
122 | |||
123 | /* Events supported by the XFS filesystem. */ | ||
124 | #define DM_XFS_SUPPORTED_EVENTS ( \ | ||
125 | (1 << DM_EVENT_MOUNT) | \ | ||
126 | (1 << DM_EVENT_PREUNMOUNT) | \ | ||
127 | (1 << DM_EVENT_UNMOUNT) | \ | ||
128 | (1 << DM_EVENT_NOSPACE) | \ | ||
129 | (1 << DM_EVENT_CREATE) | \ | ||
130 | (1 << DM_EVENT_POSTCREATE) | \ | ||
131 | (1 << DM_EVENT_REMOVE) | \ | ||
132 | (1 << DM_EVENT_POSTREMOVE) | \ | ||
133 | (1 << DM_EVENT_RENAME) | \ | ||
134 | (1 << DM_EVENT_POSTRENAME) | \ | ||
135 | (1 << DM_EVENT_LINK) | \ | ||
136 | (1 << DM_EVENT_POSTLINK) | \ | ||
137 | (1 << DM_EVENT_SYMLINK) | \ | ||
138 | (1 << DM_EVENT_POSTSYMLINK) | \ | ||
139 | (1 << DM_EVENT_READ) | \ | ||
140 | (1 << DM_EVENT_WRITE) | \ | ||
141 | (1 << DM_EVENT_TRUNCATE) | \ | ||
142 | (1 << DM_EVENT_ATTRIBUTE) | \ | ||
143 | (1 << DM_EVENT_DESTROY) ) | ||
144 | |||
145 | |||
146 | /* | ||
147 | * Definitions used for the flags field on dm_send_*_event(). | ||
148 | */ | ||
149 | |||
150 | #define DM_FLAGS_NDELAY 0x001 /* return EAGAIN after dm_pending() */ | ||
151 | #define DM_FLAGS_UNWANTED 0x002 /* event not in fsys dm_eventset_t */ | ||
152 | #define DM_FLAGS_IMUX 0x004 /* thread holds i_mutex */ | ||
153 | #define DM_FLAGS_IALLOCSEM_RD 0x010 /* thread holds i_alloc_sem rd */ | ||
154 | #define DM_FLAGS_IALLOCSEM_WR 0x020 /* thread holds i_alloc_sem wr */ | ||
155 | |||
156 | /* | ||
157 | * Pull in platform specific event flags defines | ||
158 | */ | ||
159 | #include "xfs_dmapi_priv.h" | ||
160 | |||
161 | /* | ||
162 | * Macros to turn caller specified delay/block flags into | ||
163 | * dm_send_xxxx_event flag DM_FLAGS_NDELAY. | ||
164 | */ | ||
165 | |||
166 | #define FILP_DELAY_FLAG(filp) ((filp->f_flags&(O_NDELAY|O_NONBLOCK)) ? \ | ||
167 | DM_FLAGS_NDELAY : 0) | ||
168 | #define AT_DELAY_FLAG(f) ((f & XFS_ATTR_NONBLOCK) ? DM_FLAGS_NDELAY : 0) | ||
169 | |||
170 | #endif /* __XFS_DMAPI_H__ */ | ||
diff --git a/fs/xfs/xfs_dmops.c b/fs/xfs/xfs_dmops.c deleted file mode 100644 index e71e2581c0c3..000000000000 --- a/fs/xfs/xfs_dmops.c +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. | ||
3 | * All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it would be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write the Free Software Foundation, | ||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #include "xfs.h" | ||
19 | #include "xfs_fs.h" | ||
20 | #include "xfs_types.h" | ||
21 | #include "xfs_log.h" | ||
22 | #include "xfs_trans.h" | ||
23 | #include "xfs_sb.h" | ||
24 | #include "xfs_dmapi.h" | ||
25 | #include "xfs_inum.h" | ||
26 | #include "xfs_ag.h" | ||
27 | #include "xfs_mount.h" | ||
28 | |||
29 | |||
30 | static struct xfs_dmops xfs_dmcore_stub = { | ||
31 | .xfs_send_data = (xfs_send_data_t)fs_nosys, | ||
32 | .xfs_send_mmap = (xfs_send_mmap_t)fs_noerr, | ||
33 | .xfs_send_destroy = (xfs_send_destroy_t)fs_nosys, | ||
34 | .xfs_send_namesp = (xfs_send_namesp_t)fs_nosys, | ||
35 | .xfs_send_mount = (xfs_send_mount_t)fs_nosys, | ||
36 | .xfs_send_unmount = (xfs_send_unmount_t)fs_noerr, | ||
37 | }; | ||
38 | |||
39 | int | ||
40 | xfs_dmops_get(struct xfs_mount *mp) | ||
41 | { | ||
42 | if (mp->m_flags & XFS_MOUNT_DMAPI) { | ||
43 | cmn_err(CE_WARN, | ||
44 | "XFS: dmapi support not available in this kernel."); | ||
45 | return EINVAL; | ||
46 | } | ||
47 | |||
48 | mp->m_dm_ops = &xfs_dmcore_stub; | ||
49 | return 0; | ||
50 | } | ||
51 | |||
52 | void | ||
53 | xfs_dmops_put(struct xfs_mount *mp) | ||
54 | { | ||
55 | } | ||
diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 047b8a8e5c29..3d8456cb71ff 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_bmap_btree.h" | 28 | #include "xfs_bmap_btree.h" |
30 | #include "xfs_dir2_sf.h" | 29 | #include "xfs_dir2_sf.h" |
diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c index 409fe81585fd..1023b1fadfe8 100644 --- a/fs/xfs/xfs_extfree_item.c +++ b/fs/xfs/xfs_extfree_item.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_buf_item.h" | 24 | #include "xfs_buf_item.h" |
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_trans_priv.h" | 28 | #include "xfs_trans_priv.h" |
30 | #include "xfs_extfree_item.h" | 29 | #include "xfs_extfree_item.h" |
diff --git a/fs/xfs/xfs_filestream.c b/fs/xfs/xfs_filestream.c index 390850ee6603..ad118dac425d 100644 --- a/fs/xfs/xfs_filestream.c +++ b/fs/xfs/xfs_filestream.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_dinode.h" | 24 | #include "xfs_dinode.h" |
25 | #include "xfs_inode.h" | 25 | #include "xfs_inode.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_log.h" | 27 | #include "xfs_log.h" |
29 | #include "xfs_trans.h" | 28 | #include "xfs_trans.h" |
30 | #include "xfs_sb.h" | 29 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 37a6f62c57b6..84c002eab0d6 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index c7142a064c48..ab76d73d54e9 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index c282a9af5393..0e6563c05e05 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index 8f8b91be2c99..0eb2f965503c 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include "xfs_sb.h" | 26 | #include "xfs_sb.h" |
27 | #include "xfs_ag.h" | 27 | #include "xfs_ag.h" |
28 | #include "xfs_dir2.h" | 28 | #include "xfs_dir2.h" |
29 | #include "xfs_dmapi.h" | ||
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
32 | #include "xfs_alloc_btree.h" | 31 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index b76a829d7e20..767c43a8d164 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include "xfs_sb.h" | 28 | #include "xfs_sb.h" |
29 | #include "xfs_ag.h" | 29 | #include "xfs_ag.h" |
30 | #include "xfs_dir2.h" | 30 | #include "xfs_dir2.h" |
31 | #include "xfs_dmapi.h" | ||
32 | #include "xfs_mount.h" | 31 | #include "xfs_mount.h" |
33 | #include "xfs_bmap_btree.h" | 32 | #include "xfs_bmap_btree.h" |
34 | #include "xfs_alloc_btree.h" | 33 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index cf8249a60004..8c561b970c56 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include "xfs_sb.h" | 26 | #include "xfs_sb.h" |
27 | #include "xfs_ag.h" | 27 | #include "xfs_ag.h" |
28 | #include "xfs_dir2.h" | 28 | #include "xfs_dir2.h" |
29 | #include "xfs_dmapi.h" | ||
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_trans_priv.h" | 30 | #include "xfs_trans_priv.h" |
32 | #include "xfs_bmap_btree.h" | 31 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index ef14943829da..a2653aa0f256 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_alloc.h" | 27 | #include "xfs_alloc.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_quota.h" | 28 | #include "xfs_quota.h" |
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index 2b86f8610512..69abb344f2c0 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 5215abc8023a..03a1ab60c480 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_error.h" | 29 | #include "xfs_error.h" |
31 | #include "xfs_log_priv.h" | 30 | #include "xfs_log_priv.h" |
diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index bb17cc044bf3..c7585ab160d5 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include "xfs_sb.h" | 27 | #include "xfs_sb.h" |
28 | #include "xfs_ag.h" | 28 | #include "xfs_ag.h" |
29 | #include "xfs_dir2.h" | 29 | #include "xfs_dir2.h" |
30 | #include "xfs_dmapi.h" | ||
31 | #include "xfs_mount.h" | 30 | #include "xfs_mount.h" |
32 | #include "xfs_error.h" | 31 | #include "xfs_error.h" |
33 | #include "xfs_alloc.h" | 32 | #include "xfs_alloc.h" |
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index 9ac5cfab27b9..f91871397db7 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_error.h" | 29 | #include "xfs_error.h" |
31 | #include "xfs_bmap_btree.h" | 30 | #include "xfs_bmap_btree.h" |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 69f62d8b2816..4bf79511f1c8 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 5761087ee8ea..e70dc39394ae 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h | |||
@@ -66,65 +66,6 @@ struct xfs_nameops; | |||
66 | struct xfs_ail; | 66 | struct xfs_ail; |
67 | struct xfs_quotainfo; | 67 | struct xfs_quotainfo; |
68 | 68 | ||
69 | |||
70 | /* | ||
71 | * Prototypes and functions for the Data Migration subsystem. | ||
72 | */ | ||
73 | |||
74 | typedef int (*xfs_send_data_t)(int, struct xfs_inode *, | ||
75 | xfs_off_t, size_t, int, int *); | ||
76 | typedef int (*xfs_send_mmap_t)(struct vm_area_struct *, uint); | ||
77 | typedef int (*xfs_send_destroy_t)(struct xfs_inode *, dm_right_t); | ||
78 | typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct xfs_mount *, | ||
79 | struct xfs_inode *, dm_right_t, | ||
80 | struct xfs_inode *, dm_right_t, | ||
81 | const unsigned char *, const unsigned char *, | ||
82 | mode_t, int, int); | ||
83 | typedef int (*xfs_send_mount_t)(struct xfs_mount *, dm_right_t, | ||
84 | char *, char *); | ||
85 | typedef void (*xfs_send_unmount_t)(struct xfs_mount *, struct xfs_inode *, | ||
86 | dm_right_t, mode_t, int, int); | ||
87 | |||
88 | typedef struct xfs_dmops { | ||
89 | xfs_send_data_t xfs_send_data; | ||
90 | xfs_send_mmap_t xfs_send_mmap; | ||
91 | xfs_send_destroy_t xfs_send_destroy; | ||
92 | xfs_send_namesp_t xfs_send_namesp; | ||
93 | xfs_send_mount_t xfs_send_mount; | ||
94 | xfs_send_unmount_t xfs_send_unmount; | ||
95 | } xfs_dmops_t; | ||
96 | |||
97 | #define XFS_DMAPI_UNMOUNT_FLAGS(mp) \ | ||
98 | (((mp)->m_dmevmask & (1 << DM_EVENT_UNMOUNT)) ? 0 : DM_FLAGS_UNWANTED) | ||
99 | |||
100 | #define XFS_SEND_DATA(mp, ev,ip,off,len,fl,lock) \ | ||
101 | (*(mp)->m_dm_ops->xfs_send_data)(ev,ip,off,len,fl,lock) | ||
102 | #define XFS_SEND_MMAP(mp, vma,fl) \ | ||
103 | (*(mp)->m_dm_ops->xfs_send_mmap)(vma,fl) | ||
104 | #define XFS_SEND_DESTROY(mp, ip,right) \ | ||
105 | (*(mp)->m_dm_ops->xfs_send_destroy)(ip,right) | ||
106 | #define XFS_SEND_NAMESP(mp, ev,b1,r1,b2,r2,n1,n2,mode,rval,fl) \ | ||
107 | (*(mp)->m_dm_ops->xfs_send_namesp)(ev,NULL,b1,r1,b2,r2,n1,n2,mode,rval,fl) | ||
108 | #define XFS_SEND_MOUNT(mp,right,path,name) \ | ||
109 | (*(mp)->m_dm_ops->xfs_send_mount)(mp,right,path,name) | ||
110 | #define XFS_SEND_PREUNMOUNT(mp) \ | ||
111 | do { \ | ||
112 | if (mp->m_flags & XFS_MOUNT_DMAPI) { \ | ||
113 | (*(mp)->m_dm_ops->xfs_send_namesp)(DM_EVENT_PREUNMOUNT, mp, \ | ||
114 | (mp)->m_rootip, DM_RIGHT_NULL, \ | ||
115 | (mp)->m_rootip, DM_RIGHT_NULL, \ | ||
116 | NULL, NULL, 0, 0, XFS_DMAPI_UNMOUNT_FLAGS(mp)); \ | ||
117 | } \ | ||
118 | } while (0) | ||
119 | #define XFS_SEND_UNMOUNT(mp) \ | ||
120 | do { \ | ||
121 | if (mp->m_flags & XFS_MOUNT_DMAPI) { \ | ||
122 | (*(mp)->m_dm_ops->xfs_send_unmount)(mp, (mp)->m_rootip, \ | ||
123 | DM_RIGHT_NULL, 0, 0, XFS_DMAPI_UNMOUNT_FLAGS(mp)); \ | ||
124 | } \ | ||
125 | } while (0) | ||
126 | |||
127 | |||
128 | #ifdef HAVE_PERCPU_SB | 69 | #ifdef HAVE_PERCPU_SB |
129 | 70 | ||
130 | /* | 71 | /* |
@@ -241,8 +182,6 @@ typedef struct xfs_mount { | |||
241 | uint m_chsize; /* size of next field */ | 182 | uint m_chsize; /* size of next field */ |
242 | struct xfs_chash *m_chash; /* fs private inode per-cluster | 183 | struct xfs_chash *m_chash; /* fs private inode per-cluster |
243 | * hash table */ | 184 | * hash table */ |
244 | struct xfs_dmops *m_dm_ops; /* vector of DMI ops */ | ||
245 | struct xfs_qmops *m_qm_ops; /* vector of XQM ops */ | ||
246 | atomic_t m_active_trans; /* number trans frozen */ | 185 | atomic_t m_active_trans; /* number trans frozen */ |
247 | #ifdef HAVE_PERCPU_SB | 186 | #ifdef HAVE_PERCPU_SB |
248 | xfs_icsb_cnts_t __percpu *m_sb_cnts; /* per-cpu superblock counters */ | 187 | xfs_icsb_cnts_t __percpu *m_sb_cnts; /* per-cpu superblock counters */ |
@@ -269,7 +208,6 @@ typedef struct xfs_mount { | |||
269 | must be synchronous except | 208 | must be synchronous except |
270 | for space allocations */ | 209 | for space allocations */ |
271 | #define XFS_MOUNT_DELAYLOG (1ULL << 1) /* delayed logging is enabled */ | 210 | #define XFS_MOUNT_DELAYLOG (1ULL << 1) /* delayed logging is enabled */ |
272 | #define XFS_MOUNT_DMAPI (1ULL << 2) /* dmapi is enabled */ | ||
273 | #define XFS_MOUNT_WAS_CLEAN (1ULL << 3) | 211 | #define XFS_MOUNT_WAS_CLEAN (1ULL << 3) |
274 | #define XFS_MOUNT_FS_SHUTDOWN (1ULL << 4) /* atomic stop of all filesystem | 212 | #define XFS_MOUNT_FS_SHUTDOWN (1ULL << 4) /* atomic stop of all filesystem |
275 | operations, typically for | 213 | operations, typically for |
@@ -440,11 +378,6 @@ extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); | |||
440 | 378 | ||
441 | extern int xfs_dev_is_read_only(struct xfs_mount *, char *); | 379 | extern int xfs_dev_is_read_only(struct xfs_mount *, char *); |
442 | 380 | ||
443 | extern int xfs_dmops_get(struct xfs_mount *); | ||
444 | extern void xfs_dmops_put(struct xfs_mount *); | ||
445 | |||
446 | extern struct xfs_dmops xfs_dmcore_xfs; | ||
447 | |||
448 | #endif /* __KERNEL__ */ | 381 | #endif /* __KERNEL__ */ |
449 | 382 | ||
450 | extern void xfs_mod_sb(struct xfs_trans *, __int64_t); | 383 | extern void xfs_mod_sb(struct xfs_trans *, __int64_t); |
diff --git a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c index fc1cda23b817..fa752f495a0c 100644 --- a/fs/xfs/xfs_rename.c +++ b/fs/xfs/xfs_rename.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dir2.h" | 26 | #include "xfs_dir2.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_da_btree.h" | 28 | #include "xfs_da_btree.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
@@ -119,18 +118,6 @@ xfs_rename( | |||
119 | xfs_itrace_entry(src_dp); | 118 | xfs_itrace_entry(src_dp); |
120 | xfs_itrace_entry(target_dp); | 119 | xfs_itrace_entry(target_dp); |
121 | 120 | ||
122 | if (DM_EVENT_ENABLED(src_dp, DM_EVENT_RENAME) || | ||
123 | DM_EVENT_ENABLED(target_dp, DM_EVENT_RENAME)) { | ||
124 | error = XFS_SEND_NAMESP(mp, DM_EVENT_RENAME, | ||
125 | src_dp, DM_RIGHT_NULL, | ||
126 | target_dp, DM_RIGHT_NULL, | ||
127 | src_name->name, target_name->name, | ||
128 | 0, 0, 0); | ||
129 | if (error) | ||
130 | return error; | ||
131 | } | ||
132 | /* Return through std_return after this point. */ | ||
133 | |||
134 | new_parent = (src_dp != target_dp); | 121 | new_parent = (src_dp != target_dp); |
135 | src_is_directory = ((src_ip->i_d.di_mode & S_IFMT) == S_IFDIR); | 122 | src_is_directory = ((src_ip->i_d.di_mode & S_IFMT) == S_IFDIR); |
136 | 123 | ||
@@ -369,26 +356,13 @@ xfs_rename( | |||
369 | * trans_commit will unlock src_ip, target_ip & decrement | 356 | * trans_commit will unlock src_ip, target_ip & decrement |
370 | * the vnode references. | 357 | * the vnode references. |
371 | */ | 358 | */ |
372 | error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); | 359 | return xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); |
373 | |||
374 | /* Fall through to std_return with error = 0 or errno from | ||
375 | * xfs_trans_commit */ | ||
376 | std_return: | ||
377 | if (DM_EVENT_ENABLED(src_dp, DM_EVENT_POSTRENAME) || | ||
378 | DM_EVENT_ENABLED(target_dp, DM_EVENT_POSTRENAME)) { | ||
379 | (void) XFS_SEND_NAMESP (mp, DM_EVENT_POSTRENAME, | ||
380 | src_dp, DM_RIGHT_NULL, | ||
381 | target_dp, DM_RIGHT_NULL, | ||
382 | src_name->name, target_name->name, | ||
383 | 0, error, 0); | ||
384 | } | ||
385 | return error; | ||
386 | 360 | ||
387 | abort_return: | 361 | abort_return: |
388 | cancel_flags |= XFS_TRANS_ABORT; | 362 | cancel_flags |= XFS_TRANS_ABORT; |
389 | /* FALLTHROUGH */ | ||
390 | error_return: | 363 | error_return: |
391 | xfs_bmap_cancel(&free_list); | 364 | xfs_bmap_cancel(&free_list); |
392 | xfs_trans_cancel(tp, cancel_flags); | 365 | xfs_trans_cancel(tp, cancel_flags); |
393 | goto std_return; | 366 | std_return: |
367 | return error; | ||
394 | } | 368 | } |
diff --git a/fs/xfs/xfs_rtalloc.c b/fs/xfs/xfs_rtalloc.c index a2d32ce335aa..c7b20568ee88 100644 --- a/fs/xfs/xfs_rtalloc.c +++ b/fs/xfs/xfs_rtalloc.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_rw.c b/fs/xfs/xfs_rw.c index e336742a58a4..1101bc63ced4 100644 --- a/fs/xfs/xfs_rw.c +++ b/fs/xfs/xfs_rw.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 28547dfce037..2fd44d8fe3ae 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_error.h" | 29 | #include "xfs_error.h" |
31 | #include "xfs_da_btree.h" | 30 | #include "xfs_da_btree.h" |
diff --git a/fs/xfs/xfs_trans_ail.c b/fs/xfs/xfs_trans_ail.c index e799824f7245..dc9069568ff7 100644 --- a/fs/xfs/xfs_trans_ail.c +++ b/fs/xfs/xfs_trans_ail.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include "xfs_trans.h" | 24 | #include "xfs_trans.h" |
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dmapi.h" | ||
28 | #include "xfs_mount.h" | 27 | #include "xfs_mount.h" |
29 | #include "xfs_trans_priv.h" | 28 | #include "xfs_trans_priv.h" |
30 | #include "xfs_error.h" | 29 | #include "xfs_error.h" |
diff --git a/fs/xfs/xfs_trans_buf.c b/fs/xfs/xfs_trans_buf.c index 63d81a22f4fd..93ed4a5edde8 100644 --- a/fs/xfs/xfs_trans_buf.c +++ b/fs/xfs/xfs_trans_buf.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_trans_extfree.c b/fs/xfs/xfs_trans_extfree.c index 27cce2a9c7e9..dfb6a0fdcf9c 100644 --- a/fs/xfs/xfs_trans_extfree.c +++ b/fs/xfs/xfs_trans_extfree.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
25 | #include "xfs_ag.h" | 25 | #include "xfs_ag.h" |
26 | #include "xfs_dmapi.h" | ||
27 | #include "xfs_mount.h" | 26 | #include "xfs_mount.h" |
28 | #include "xfs_trans_priv.h" | 27 | #include "xfs_trans_priv.h" |
29 | #include "xfs_extfree_item.h" | 28 | #include "xfs_extfree_item.h" |
diff --git a/fs/xfs/xfs_trans_inode.c b/fs/xfs/xfs_trans_inode.c index 2559dfec946b..4f4df63144d7 100644 --- a/fs/xfs/xfs_trans_inode.c +++ b/fs/xfs/xfs_trans_inode.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_alloc_btree.h" | 30 | #include "xfs_alloc_btree.h" |
diff --git a/fs/xfs/xfs_trans_item.c b/fs/xfs/xfs_trans_item.c index f11d37d06dcc..55035a7401cb 100644 --- a/fs/xfs/xfs_trans_item.c +++ b/fs/xfs/xfs_trans_item.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include "xfs_sb.h" | 28 | #include "xfs_sb.h" |
29 | #include "xfs_ag.h" | 29 | #include "xfs_ag.h" |
30 | #include "xfs_dir2.h" | 30 | #include "xfs_dir2.h" |
31 | #include "xfs_dmapi.h" | ||
32 | #include "xfs_mount.h" | 31 | #include "xfs_mount.h" |
33 | 32 | ||
34 | STATIC int xfs_trans_unlock_chunk(xfs_log_item_chunk_t *, | 33 | STATIC int xfs_trans_unlock_chunk(xfs_log_item_chunk_t *, |
diff --git a/fs/xfs/xfs_utils.c b/fs/xfs/xfs_utils.c index 4d88616bde91..4b1df677abd9 100644 --- a/fs/xfs/xfs_utils.c +++ b/fs/xfs/xfs_utils.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include "xfs_sb.h" | 25 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 26 | #include "xfs_ag.h" |
27 | #include "xfs_dir2.h" | 27 | #include "xfs_dir2.h" |
28 | #include "xfs_dmapi.h" | ||
29 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
30 | #include "xfs_bmap_btree.h" | 29 | #include "xfs_bmap_btree.h" |
31 | #include "xfs_dir2_sf.h" | 30 | #include "xfs_dir2_sf.h" |
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index c1646838898f..f6fd7502fc0e 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include "xfs_sb.h" | 26 | #include "xfs_sb.h" |
27 | #include "xfs_ag.h" | 27 | #include "xfs_ag.h" |
28 | #include "xfs_dir2.h" | 28 | #include "xfs_dir2.h" |
29 | #include "xfs_dmapi.h" | ||
30 | #include "xfs_mount.h" | 29 | #include "xfs_mount.h" |
31 | #include "xfs_da_btree.h" | 30 | #include "xfs_da_btree.h" |
32 | #include "xfs_bmap_btree.h" | 31 | #include "xfs_bmap_btree.h" |
@@ -143,16 +142,6 @@ xfs_setattr( | |||
143 | goto error_return; | 142 | goto error_return; |
144 | } | 143 | } |
145 | } else { | 144 | } else { |
146 | if (DM_EVENT_ENABLED(ip, DM_EVENT_TRUNCATE) && | ||
147 | !(flags & XFS_ATTR_DMI)) { | ||
148 | int dmflags = AT_DELAY_FLAG(flags) | DM_SEM_FLAG_WR; | ||
149 | code = XFS_SEND_DATA(mp, DM_EVENT_TRUNCATE, ip, | ||
150 | iattr->ia_size, 0, dmflags, NULL); | ||
151 | if (code) { | ||
152 | lock_flags = 0; | ||
153 | goto error_return; | ||
154 | } | ||
155 | } | ||
156 | if (need_iolock) | 145 | if (need_iolock) |
157 | lock_flags |= XFS_IOLOCK_EXCL; | 146 | lock_flags |= XFS_IOLOCK_EXCL; |
158 | } | 147 | } |
@@ -470,17 +459,10 @@ xfs_setattr( | |||
470 | return XFS_ERROR(code); | 459 | return XFS_ERROR(code); |
471 | } | 460 | } |
472 | 461 | ||
473 | if (DM_EVENT_ENABLED(ip, DM_EVENT_ATTRIBUTE) && | ||
474 | !(flags & XFS_ATTR_DMI)) { | ||
475 | (void) XFS_SEND_NAMESP(mp, DM_EVENT_ATTRIBUTE, ip, DM_RIGHT_NULL, | ||
476 | NULL, DM_RIGHT_NULL, NULL, NULL, | ||
477 | 0, 0, AT_DELAY_FLAG(flags)); | ||
478 | } | ||
479 | return 0; | 462 | return 0; |
480 | 463 | ||
481 | abort_return: | 464 | abort_return: |
482 | commit_flags |= XFS_TRANS_ABORT; | 465 | commit_flags |= XFS_TRANS_ABORT; |
483 | /* FALLTHROUGH */ | ||
484 | error_return: | 466 | error_return: |
485 | xfs_qm_dqrele(udqp); | 467 | xfs_qm_dqrele(udqp); |
486 | xfs_qm_dqrele(gdqp); | 468 | xfs_qm_dqrele(gdqp); |
@@ -1060,9 +1042,6 @@ xfs_inactive( | |||
1060 | 1042 | ||
1061 | mp = ip->i_mount; | 1043 | mp = ip->i_mount; |
1062 | 1044 | ||
1063 | if (ip->i_d.di_nlink == 0 && DM_EVENT_ENABLED(ip, DM_EVENT_DESTROY)) | ||
1064 | XFS_SEND_DESTROY(mp, ip, DM_RIGHT_NULL); | ||
1065 | |||
1066 | error = 0; | 1045 | error = 0; |
1067 | 1046 | ||
1068 | /* If this is a read-only mount, don't do this (would generate I/O) */ | 1047 | /* If this is a read-only mount, don't do this (would generate I/O) */ |
@@ -1314,16 +1293,6 @@ xfs_create( | |||
1314 | if (XFS_FORCED_SHUTDOWN(mp)) | 1293 | if (XFS_FORCED_SHUTDOWN(mp)) |
1315 | return XFS_ERROR(EIO); | 1294 | return XFS_ERROR(EIO); |
1316 | 1295 | ||
1317 | if (DM_EVENT_ENABLED(dp, DM_EVENT_CREATE)) { | ||
1318 | error = XFS_SEND_NAMESP(mp, DM_EVENT_CREATE, | ||
1319 | dp, DM_RIGHT_NULL, NULL, | ||
1320 | DM_RIGHT_NULL, name->name, NULL, | ||
1321 | mode, 0, 0); | ||
1322 | |||
1323 | if (error) | ||
1324 | return error; | ||
1325 | } | ||
1326 | |||
1327 | if (dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) | 1296 | if (dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) |
1328 | prid = dp->i_d.di_projid; | 1297 | prid = dp->i_d.di_projid; |
1329 | else | 1298 | else |
@@ -1487,16 +1456,7 @@ xfs_create( | |||
1487 | xfs_qm_dqrele(gdqp); | 1456 | xfs_qm_dqrele(gdqp); |
1488 | 1457 | ||
1489 | *ipp = ip; | 1458 | *ipp = ip; |
1490 | 1459 | return 0; | |
1491 | /* Fallthrough to std_return with error = 0 */ | ||
1492 | std_return: | ||
1493 | if (DM_EVENT_ENABLED(dp, DM_EVENT_POSTCREATE)) { | ||
1494 | XFS_SEND_NAMESP(mp, DM_EVENT_POSTCREATE, dp, DM_RIGHT_NULL, | ||
1495 | ip, DM_RIGHT_NULL, name->name, NULL, mode, | ||
1496 | error, 0); | ||
1497 | } | ||
1498 | |||
1499 | return error; | ||
1500 | 1460 | ||
1501 | out_bmap_cancel: | 1461 | out_bmap_cancel: |
1502 | xfs_bmap_cancel(&free_list); | 1462 | xfs_bmap_cancel(&free_list); |
@@ -1510,8 +1470,8 @@ xfs_create( | |||
1510 | 1470 | ||
1511 | if (unlock_dp_on_error) | 1471 | if (unlock_dp_on_error) |
1512 | xfs_iunlock(dp, XFS_ILOCK_EXCL); | 1472 | xfs_iunlock(dp, XFS_ILOCK_EXCL); |
1513 | 1473 | std_return: | |
1514 | goto std_return; | 1474 | return error; |
1515 | 1475 | ||
1516 | out_abort_rele: | 1476 | out_abort_rele: |
1517 | /* | 1477 | /* |
@@ -1732,14 +1692,6 @@ xfs_remove( | |||
1732 | if (XFS_FORCED_SHUTDOWN(mp)) | 1692 | if (XFS_FORCED_SHUTDOWN(mp)) |
1733 | return XFS_ERROR(EIO); | 1693 | return XFS_ERROR(EIO); |
1734 | 1694 | ||
1735 | if (DM_EVENT_ENABLED(dp, DM_EVENT_REMOVE)) { | ||
1736 | error = XFS_SEND_NAMESP(mp, DM_EVENT_REMOVE, dp, DM_RIGHT_NULL, | ||
1737 | NULL, DM_RIGHT_NULL, name->name, NULL, | ||
1738 | ip->i_d.di_mode, 0, 0); | ||
1739 | if (error) | ||
1740 | return error; | ||
1741 | } | ||
1742 | |||
1743 | error = xfs_qm_dqattach(dp, 0); | 1695 | error = xfs_qm_dqattach(dp, 0); |
1744 | if (error) | 1696 | if (error) |
1745 | goto std_return; | 1697 | goto std_return; |
@@ -1877,21 +1829,15 @@ xfs_remove( | |||
1877 | if (!is_dir && link_zero && xfs_inode_is_filestream(ip)) | 1829 | if (!is_dir && link_zero && xfs_inode_is_filestream(ip)) |
1878 | xfs_filestream_deassociate(ip); | 1830 | xfs_filestream_deassociate(ip); |
1879 | 1831 | ||
1880 | std_return: | 1832 | return 0; |
1881 | if (DM_EVENT_ENABLED(dp, DM_EVENT_POSTREMOVE)) { | ||
1882 | XFS_SEND_NAMESP(mp, DM_EVENT_POSTREMOVE, dp, DM_RIGHT_NULL, | ||
1883 | NULL, DM_RIGHT_NULL, name->name, NULL, | ||
1884 | ip->i_d.di_mode, error, 0); | ||
1885 | } | ||
1886 | |||
1887 | return error; | ||
1888 | 1833 | ||
1889 | out_bmap_cancel: | 1834 | out_bmap_cancel: |
1890 | xfs_bmap_cancel(&free_list); | 1835 | xfs_bmap_cancel(&free_list); |
1891 | cancel_flags |= XFS_TRANS_ABORT; | 1836 | cancel_flags |= XFS_TRANS_ABORT; |
1892 | out_trans_cancel: | 1837 | out_trans_cancel: |
1893 | xfs_trans_cancel(tp, cancel_flags); | 1838 | xfs_trans_cancel(tp, cancel_flags); |
1894 | goto std_return; | 1839 | std_return: |
1840 | return error; | ||
1895 | } | 1841 | } |
1896 | 1842 | ||
1897 | int | 1843 | int |
@@ -1917,17 +1863,6 @@ xfs_link( | |||
1917 | if (XFS_FORCED_SHUTDOWN(mp)) | 1863 | if (XFS_FORCED_SHUTDOWN(mp)) |
1918 | return XFS_ERROR(EIO); | 1864 | return XFS_ERROR(EIO); |
1919 | 1865 | ||
1920 | if (DM_EVENT_ENABLED(tdp, DM_EVENT_LINK)) { | ||
1921 | error = XFS_SEND_NAMESP(mp, DM_EVENT_LINK, | ||
1922 | tdp, DM_RIGHT_NULL, | ||
1923 | sip, DM_RIGHT_NULL, | ||
1924 | target_name->name, NULL, 0, 0, 0); | ||
1925 | if (error) | ||
1926 | return error; | ||
1927 | } | ||
1928 | |||
1929 | /* Return through std_return after this point. */ | ||
1930 | |||
1931 | error = xfs_qm_dqattach(sip, 0); | 1866 | error = xfs_qm_dqattach(sip, 0); |
1932 | if (error) | 1867 | if (error) |
1933 | goto std_return; | 1868 | goto std_return; |
@@ -2014,27 +1949,14 @@ xfs_link( | |||
2014 | goto abort_return; | 1949 | goto abort_return; |
2015 | } | 1950 | } |
2016 | 1951 | ||
2017 | error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); | 1952 | return xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); |
2018 | if (error) | ||
2019 | goto std_return; | ||
2020 | |||
2021 | /* Fall through to std_return with error = 0. */ | ||
2022 | std_return: | ||
2023 | if (DM_EVENT_ENABLED(sip, DM_EVENT_POSTLINK)) { | ||
2024 | (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTLINK, | ||
2025 | tdp, DM_RIGHT_NULL, | ||
2026 | sip, DM_RIGHT_NULL, | ||
2027 | target_name->name, NULL, 0, error, 0); | ||
2028 | } | ||
2029 | return error; | ||
2030 | 1953 | ||
2031 | abort_return: | 1954 | abort_return: |
2032 | cancel_flags |= XFS_TRANS_ABORT; | 1955 | cancel_flags |= XFS_TRANS_ABORT; |
2033 | /* FALLTHROUGH */ | ||
2034 | |||
2035 | error_return: | 1956 | error_return: |
2036 | xfs_trans_cancel(tp, cancel_flags); | 1957 | xfs_trans_cancel(tp, cancel_flags); |
2037 | goto std_return; | 1958 | std_return: |
1959 | return error; | ||
2038 | } | 1960 | } |
2039 | 1961 | ||
2040 | int | 1962 | int |
@@ -2086,17 +2008,6 @@ xfs_symlink( | |||
2086 | if (pathlen >= MAXPATHLEN) /* total string too long */ | 2008 | if (pathlen >= MAXPATHLEN) /* total string too long */ |
2087 | return XFS_ERROR(ENAMETOOLONG); | 2009 | return XFS_ERROR(ENAMETOOLONG); |
2088 | 2010 | ||
2089 | if (DM_EVENT_ENABLED(dp, DM_EVENT_SYMLINK)) { | ||
2090 | error = XFS_SEND_NAMESP(mp, DM_EVENT_SYMLINK, dp, | ||
2091 | DM_RIGHT_NULL, NULL, DM_RIGHT_NULL, | ||
2092 | link_name->name, | ||
2093 | (unsigned char *)target_path, 0, 0, 0); | ||
2094 | if (error) | ||
2095 | return error; | ||
2096 | } | ||
2097 | |||
2098 | /* Return through std_return after this point. */ | ||
2099 | |||
2100 | udqp = gdqp = NULL; | 2011 | udqp = gdqp = NULL; |
2101 | if (dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) | 2012 | if (dp->i_d.di_flags & XFS_DIFLAG_PROJINHERIT) |
2102 | prid = dp->i_d.di_projid; | 2013 | prid = dp->i_d.di_projid; |
@@ -2278,21 +2189,8 @@ xfs_symlink( | |||
2278 | xfs_qm_dqrele(udqp); | 2189 | xfs_qm_dqrele(udqp); |
2279 | xfs_qm_dqrele(gdqp); | 2190 | xfs_qm_dqrele(gdqp); |
2280 | 2191 | ||
2281 | /* Fall through to std_return with error = 0 or errno from | 2192 | *ipp = ip; |
2282 | * xfs_trans_commit */ | 2193 | return 0; |
2283 | std_return: | ||
2284 | if (DM_EVENT_ENABLED(dp, DM_EVENT_POSTSYMLINK)) { | ||
2285 | (void) XFS_SEND_NAMESP(mp, DM_EVENT_POSTSYMLINK, | ||
2286 | dp, DM_RIGHT_NULL, | ||
2287 | error ? NULL : ip, | ||
2288 | DM_RIGHT_NULL, link_name->name, | ||
2289 | (unsigned char *)target_path, | ||
2290 | 0, error, 0); | ||
2291 | } | ||
2292 | |||
2293 | if (!error) | ||
2294 | *ipp = ip; | ||
2295 | return error; | ||
2296 | 2194 | ||
2297 | error2: | 2195 | error2: |
2298 | IRELE(ip); | 2196 | IRELE(ip); |
@@ -2306,8 +2204,8 @@ std_return: | |||
2306 | 2204 | ||
2307 | if (unlock_dp_on_error) | 2205 | if (unlock_dp_on_error) |
2308 | xfs_iunlock(dp, XFS_ILOCK_EXCL); | 2206 | xfs_iunlock(dp, XFS_ILOCK_EXCL); |
2309 | 2207 | std_return: | |
2310 | goto std_return; | 2208 | return error; |
2311 | } | 2209 | } |
2312 | 2210 | ||
2313 | int | 2211 | int |
@@ -2412,25 +2310,9 @@ xfs_alloc_file_space( | |||
2412 | startoffset_fsb = XFS_B_TO_FSBT(mp, offset); | 2310 | startoffset_fsb = XFS_B_TO_FSBT(mp, offset); |
2413 | allocatesize_fsb = XFS_B_TO_FSB(mp, count); | 2311 | allocatesize_fsb = XFS_B_TO_FSB(mp, count); |
2414 | 2312 | ||
2415 | /* Generate a DMAPI event if needed. */ | ||
2416 | if (alloc_type != 0 && offset < ip->i_size && | ||
2417 | (attr_flags & XFS_ATTR_DMI) == 0 && | ||
2418 | DM_EVENT_ENABLED(ip, DM_EVENT_WRITE)) { | ||
2419 | xfs_off_t end_dmi_offset; | ||
2420 | |||
2421 | end_dmi_offset = offset+len; | ||
2422 | if (end_dmi_offset > ip->i_size) | ||
2423 | end_dmi_offset = ip->i_size; | ||
2424 | error = XFS_SEND_DATA(mp, DM_EVENT_WRITE, ip, offset, | ||
2425 | end_dmi_offset - offset, 0, NULL); | ||
2426 | if (error) | ||
2427 | return error; | ||
2428 | } | ||
2429 | |||
2430 | /* | 2313 | /* |
2431 | * Allocate file space until done or until there is an error | 2314 | * Allocate file space until done or until there is an error |
2432 | */ | 2315 | */ |
2433 | retry: | ||
2434 | while (allocatesize_fsb && !error) { | 2316 | while (allocatesize_fsb && !error) { |
2435 | xfs_fileoff_t s, e; | 2317 | xfs_fileoff_t s, e; |
2436 | 2318 | ||
@@ -2527,17 +2409,6 @@ retry: | |||
2527 | startoffset_fsb += allocated_fsb; | 2409 | startoffset_fsb += allocated_fsb; |
2528 | allocatesize_fsb -= allocated_fsb; | 2410 | allocatesize_fsb -= allocated_fsb; |
2529 | } | 2411 | } |
2530 | dmapi_enospc_check: | ||
2531 | if (error == ENOSPC && (attr_flags & XFS_ATTR_DMI) == 0 && | ||
2532 | DM_EVENT_ENABLED(ip, DM_EVENT_NOSPACE)) { | ||
2533 | error = XFS_SEND_NAMESP(mp, DM_EVENT_NOSPACE, | ||
2534 | ip, DM_RIGHT_NULL, | ||
2535 | ip, DM_RIGHT_NULL, | ||
2536 | NULL, NULL, 0, 0, 0); /* Delay flag intentionally unused */ | ||
2537 | if (error == 0) | ||
2538 | goto retry; /* Maybe DMAPI app. has made space */ | ||
2539 | /* else fall through with error from XFS_SEND_DATA */ | ||
2540 | } | ||
2541 | 2412 | ||
2542 | return error; | 2413 | return error; |
2543 | 2414 | ||
@@ -2548,7 +2419,7 @@ error0: /* Cancel bmap, unlock inode, unreserve quota blocks, cancel trans */ | |||
2548 | error1: /* Just cancel transaction */ | 2419 | error1: /* Just cancel transaction */ |
2549 | xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); | 2420 | xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); |
2550 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | 2421 | xfs_iunlock(ip, XFS_ILOCK_EXCL); |
2551 | goto dmapi_enospc_check; | 2422 | return error; |
2552 | } | 2423 | } |
2553 | 2424 | ||
2554 | /* | 2425 | /* |
@@ -2661,7 +2532,6 @@ xfs_free_file_space( | |||
2661 | { | 2532 | { |
2662 | int committed; | 2533 | int committed; |
2663 | int done; | 2534 | int done; |
2664 | xfs_off_t end_dmi_offset; | ||
2665 | xfs_fileoff_t endoffset_fsb; | 2535 | xfs_fileoff_t endoffset_fsb; |
2666 | int error; | 2536 | int error; |
2667 | xfs_fsblock_t firstfsb; | 2537 | xfs_fsblock_t firstfsb; |
@@ -2691,19 +2561,7 @@ xfs_free_file_space( | |||
2691 | return error; | 2561 | return error; |
2692 | rt = XFS_IS_REALTIME_INODE(ip); | 2562 | rt = XFS_IS_REALTIME_INODE(ip); |
2693 | startoffset_fsb = XFS_B_TO_FSB(mp, offset); | 2563 | startoffset_fsb = XFS_B_TO_FSB(mp, offset); |
2694 | end_dmi_offset = offset + len; | 2564 | endoffset_fsb = XFS_B_TO_FSBT(mp, offset + len); |
2695 | endoffset_fsb = XFS_B_TO_FSBT(mp, end_dmi_offset); | ||
2696 | |||
2697 | if (offset < ip->i_size && (attr_flags & XFS_ATTR_DMI) == 0 && | ||
2698 | DM_EVENT_ENABLED(ip, DM_EVENT_WRITE)) { | ||
2699 | if (end_dmi_offset > ip->i_size) | ||
2700 | end_dmi_offset = ip->i_size; | ||
2701 | error = XFS_SEND_DATA(mp, DM_EVENT_WRITE, ip, | ||
2702 | offset, end_dmi_offset - offset, | ||
2703 | AT_DELAY_FLAG(attr_flags), NULL); | ||
2704 | if (error) | ||
2705 | return error; | ||
2706 | } | ||
2707 | 2565 | ||
2708 | if (attr_flags & XFS_ATTR_NOLOCK) | 2566 | if (attr_flags & XFS_ATTR_NOLOCK) |
2709 | need_iolock = 0; | 2567 | need_iolock = 0; |