diff options
Diffstat (limited to 'fs/xfs')
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; |
