diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_super.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_super.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 29f1edca76de..f2d1718c9165 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
@@ -119,6 +119,8 @@ mempool_t *xfs_ioend_pool; | |||
119 | #define MNTOPT_DMAPI "dmapi" /* DMI enabled (DMAPI / XDSM) */ | 119 | #define MNTOPT_DMAPI "dmapi" /* DMI enabled (DMAPI / XDSM) */ |
120 | #define MNTOPT_XDSM "xdsm" /* DMI enabled (DMAPI / XDSM) */ | 120 | #define MNTOPT_XDSM "xdsm" /* DMI enabled (DMAPI / XDSM) */ |
121 | #define MNTOPT_DMI "dmi" /* DMI enabled (DMAPI / XDSM) */ | 121 | #define MNTOPT_DMI "dmi" /* DMI enabled (DMAPI / XDSM) */ |
122 | #define MNTOPT_DELAYLOG "delaylog" /* Delayed loging enabled */ | ||
123 | #define MNTOPT_NODELAYLOG "nodelaylog" /* Delayed loging disabled */ | ||
122 | 124 | ||
123 | /* | 125 | /* |
124 | * Table driven mount option parser. | 126 | * Table driven mount option parser. |
@@ -374,6 +376,13 @@ xfs_parseargs( | |||
374 | mp->m_flags |= XFS_MOUNT_DMAPI; | 376 | mp->m_flags |= XFS_MOUNT_DMAPI; |
375 | } else if (!strcmp(this_char, MNTOPT_DMI)) { | 377 | } else if (!strcmp(this_char, MNTOPT_DMI)) { |
376 | mp->m_flags |= XFS_MOUNT_DMAPI; | 378 | mp->m_flags |= XFS_MOUNT_DMAPI; |
379 | } else if (!strcmp(this_char, MNTOPT_DELAYLOG)) { | ||
380 | mp->m_flags |= XFS_MOUNT_DELAYLOG; | ||
381 | cmn_err(CE_WARN, | ||
382 | "Enabling EXPERIMENTAL delayed logging feature " | ||
383 | "- use at your own risk.\n"); | ||
384 | } else if (!strcmp(this_char, MNTOPT_NODELAYLOG)) { | ||
385 | mp->m_flags &= ~XFS_MOUNT_DELAYLOG; | ||
377 | } else if (!strcmp(this_char, "ihashsize")) { | 386 | } else if (!strcmp(this_char, "ihashsize")) { |
378 | cmn_err(CE_WARN, | 387 | cmn_err(CE_WARN, |
379 | "XFS: ihashsize no longer used, option is deprecated."); | 388 | "XFS: ihashsize no longer used, option is deprecated."); |
@@ -535,6 +544,7 @@ xfs_showargs( | |||
535 | { XFS_MOUNT_FILESTREAMS, "," MNTOPT_FILESTREAM }, | 544 | { XFS_MOUNT_FILESTREAMS, "," MNTOPT_FILESTREAM }, |
536 | { XFS_MOUNT_DMAPI, "," MNTOPT_DMAPI }, | 545 | { XFS_MOUNT_DMAPI, "," MNTOPT_DMAPI }, |
537 | { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, | 546 | { XFS_MOUNT_GRPID, "," MNTOPT_GRPID }, |
547 | { XFS_MOUNT_DELAYLOG, "," MNTOPT_DELAYLOG }, | ||
538 | { 0, NULL } | 548 | { 0, NULL } |
539 | }; | 549 | }; |
540 | static struct proc_xfs_info xfs_info_unset[] = { | 550 | static struct proc_xfs_info xfs_info_unset[] = { |
@@ -725,7 +735,8 @@ void | |||
725 | xfs_blkdev_issue_flush( | 735 | xfs_blkdev_issue_flush( |
726 | xfs_buftarg_t *buftarg) | 736 | xfs_buftarg_t *buftarg) |
727 | { | 737 | { |
728 | blkdev_issue_flush(buftarg->bt_bdev, NULL); | 738 | blkdev_issue_flush(buftarg->bt_bdev, GFP_KERNEL, NULL, |
739 | BLKDEV_IFL_WAIT); | ||
729 | } | 740 | } |
730 | 741 | ||
731 | STATIC void | 742 | STATIC void |
@@ -789,18 +800,18 @@ xfs_open_devices( | |||
789 | * Setup xfs_mount buffer target pointers | 800 | * Setup xfs_mount buffer target pointers |
790 | */ | 801 | */ |
791 | error = ENOMEM; | 802 | error = ENOMEM; |
792 | mp->m_ddev_targp = xfs_alloc_buftarg(ddev, 0); | 803 | mp->m_ddev_targp = xfs_alloc_buftarg(ddev, 0, mp->m_fsname); |
793 | if (!mp->m_ddev_targp) | 804 | if (!mp->m_ddev_targp) |
794 | goto out_close_rtdev; | 805 | goto out_close_rtdev; |
795 | 806 | ||
796 | if (rtdev) { | 807 | if (rtdev) { |
797 | mp->m_rtdev_targp = xfs_alloc_buftarg(rtdev, 1); | 808 | mp->m_rtdev_targp = xfs_alloc_buftarg(rtdev, 1, mp->m_fsname); |
798 | if (!mp->m_rtdev_targp) | 809 | if (!mp->m_rtdev_targp) |
799 | goto out_free_ddev_targ; | 810 | goto out_free_ddev_targ; |
800 | } | 811 | } |
801 | 812 | ||
802 | if (logdev && logdev != ddev) { | 813 | if (logdev && logdev != ddev) { |
803 | mp->m_logdev_targp = xfs_alloc_buftarg(logdev, 1); | 814 | mp->m_logdev_targp = xfs_alloc_buftarg(logdev, 1, mp->m_fsname); |
804 | if (!mp->m_logdev_targp) | 815 | if (!mp->m_logdev_targp) |
805 | goto out_free_rtdev_targ; | 816 | goto out_free_rtdev_targ; |
806 | } else { | 817 | } else { |
@@ -902,7 +913,8 @@ xfsaild_start( | |||
902 | struct xfs_ail *ailp) | 913 | struct xfs_ail *ailp) |
903 | { | 914 | { |
904 | ailp->xa_target = 0; | 915 | ailp->xa_target = 0; |
905 | ailp->xa_task = kthread_run(xfsaild, ailp, "xfsaild"); | 916 | ailp->xa_task = kthread_run(xfsaild, ailp, "xfsaild/%s", |
917 | ailp->xa_mount->m_fsname); | ||
906 | if (IS_ERR(ailp->xa_task)) | 918 | if (IS_ERR(ailp->xa_task)) |
907 | return -PTR_ERR(ailp->xa_task); | 919 | return -PTR_ERR(ailp->xa_task); |
908 | return 0; | 920 | return 0; |
@@ -1092,6 +1104,7 @@ xfs_fs_write_inode( | |||
1092 | * the code will only flush the inode if it isn't already | 1104 | * the code will only flush the inode if it isn't already |
1093 | * being flushed. | 1105 | * being flushed. |
1094 | */ | 1106 | */ |
1107 | xfs_ioend_wait(ip); | ||
1095 | xfs_ilock(ip, XFS_ILOCK_SHARED); | 1108 | xfs_ilock(ip, XFS_ILOCK_SHARED); |
1096 | if (ip->i_update_core) { | 1109 | if (ip->i_update_core) { |
1097 | error = xfs_log_inode(ip); | 1110 | error = xfs_log_inode(ip); |
@@ -1752,7 +1765,7 @@ xfs_init_zones(void) | |||
1752 | * but it is much faster. | 1765 | * but it is much faster. |
1753 | */ | 1766 | */ |
1754 | xfs_buf_item_zone = kmem_zone_init((sizeof(xfs_buf_log_item_t) + | 1767 | xfs_buf_item_zone = kmem_zone_init((sizeof(xfs_buf_log_item_t) + |
1755 | (((XFS_MAX_BLOCKSIZE / XFS_BLI_CHUNK) / | 1768 | (((XFS_MAX_BLOCKSIZE / XFS_BLF_CHUNK) / |
1756 | NBWORD) * sizeof(int))), "xfs_buf_item"); | 1769 | NBWORD) * sizeof(int))), "xfs_buf_item"); |
1757 | if (!xfs_buf_item_zone) | 1770 | if (!xfs_buf_item_zone) |
1758 | goto out_destroy_trans_zone; | 1771 | goto out_destroy_trans_zone; |