diff options
46 files changed, 947 insertions, 1079 deletions
diff --git a/Documentation/filesystems/xfs-delayed-logging-design.txt b/Documentation/filesystems/xfs-delayed-logging-design.txt index 7445bf335dae..5282e3e51413 100644 --- a/Documentation/filesystems/xfs-delayed-logging-design.txt +++ b/Documentation/filesystems/xfs-delayed-logging-design.txt | |||
| @@ -791,10 +791,3 @@ mount option. Fundamentally, there is no reason why the log manager would not | |||
| 791 | be able to swap methods automatically and transparently depending on load | 791 | be able to swap methods automatically and transparently depending on load |
| 792 | characteristics, but this should not be necessary if delayed logging works as | 792 | characteristics, but this should not be necessary if delayed logging works as |
| 793 | designed. | 793 | designed. |
| 794 | |||
| 795 | Roadmap: | ||
| 796 | |||
| 797 | 2.6.39 Switch default mount option to use delayed logging | ||
| 798 | => should be roughly 12 months after initial merge | ||
| 799 | => enough time to shake out remaining problems before next round of | ||
| 800 | enterprise distro kernel rebases | ||
diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index 82b1371775c0..284a7c89697e 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile | |||
| @@ -102,11 +102,10 @@ xfs-y += $(addprefix $(XFS_LINUX)/, \ | |||
| 102 | xfs_globals.o \ | 102 | xfs_globals.o \ |
| 103 | xfs_ioctl.o \ | 103 | xfs_ioctl.o \ |
| 104 | xfs_iops.o \ | 104 | xfs_iops.o \ |
| 105 | xfs_message.o \ | ||
| 105 | xfs_super.o \ | 106 | xfs_super.o \ |
| 106 | xfs_sync.o \ | 107 | xfs_sync.o \ |
| 107 | xfs_xattr.o) | 108 | xfs_xattr.o) |
| 108 | 109 | ||
| 109 | # Objects in support/ | 110 | # Objects in support/ |
| 110 | xfs-y += $(addprefix support/, \ | 111 | xfs-y += support/uuid.o |
| 111 | debug.o \ | ||
| 112 | uuid.o) | ||
diff --git a/fs/xfs/linux-2.6/kmem.c b/fs/xfs/linux-2.6/kmem.c index 666c9db48eb6..a907de565db3 100644 --- a/fs/xfs/linux-2.6/kmem.c +++ b/fs/xfs/linux-2.6/kmem.c | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #include <linux/backing-dev.h> | 23 | #include <linux/backing-dev.h> |
| 24 | #include "time.h" | 24 | #include "time.h" |
| 25 | #include "kmem.h" | 25 | #include "kmem.h" |
| 26 | #include "xfs_message.h" | ||
| 26 | 27 | ||
| 27 | /* | 28 | /* |
| 28 | * Greedy allocation. May fail and may return vmalloced memory. | 29 | * Greedy allocation. May fail and may return vmalloced memory. |
| @@ -56,8 +57,8 @@ kmem_alloc(size_t size, unsigned int __nocast flags) | |||
| 56 | if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP))) | 57 | if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP))) |
| 57 | return ptr; | 58 | return ptr; |
| 58 | if (!(++retries % 100)) | 59 | if (!(++retries % 100)) |
| 59 | printk(KERN_ERR "XFS: possible memory allocation " | 60 | xfs_err(NULL, |
| 60 | "deadlock in %s (mode:0x%x)\n", | 61 | "possible memory allocation deadlock in %s (mode:0x%x)", |
| 61 | __func__, lflags); | 62 | __func__, lflags); |
| 62 | congestion_wait(BLK_RW_ASYNC, HZ/50); | 63 | congestion_wait(BLK_RW_ASYNC, HZ/50); |
| 63 | } while (1); | 64 | } while (1); |
| @@ -112,8 +113,8 @@ kmem_zone_alloc(kmem_zone_t *zone, unsigned int __nocast flags) | |||
| 112 | if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP))) | 113 | if (ptr || (flags & (KM_MAYFAIL|KM_NOSLEEP))) |
| 113 | return ptr; | 114 | return ptr; |
| 114 | if (!(++retries % 100)) | 115 | if (!(++retries % 100)) |
| 115 | printk(KERN_ERR "XFS: possible memory allocation " | 116 | xfs_err(NULL, |
| 116 | "deadlock in %s (mode:0x%x)\n", | 117 | "possible memory allocation deadlock in %s (mode:0x%x)", |
| 117 | __func__, lflags); | 118 | __func__, lflags); |
| 118 | congestion_wait(BLK_RW_ASYNC, HZ/50); | 119 | congestion_wait(BLK_RW_ASYNC, HZ/50); |
| 119 | } while (1); | 120 | } while (1); |
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index ec7bbb5645b6..8c5c87277456 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
| @@ -854,7 +854,7 @@ xfs_aops_discard_page( | |||
| 854 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) | 854 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) |
| 855 | goto out_invalidate; | 855 | goto out_invalidate; |
| 856 | 856 | ||
| 857 | xfs_fs_cmn_err(CE_ALERT, ip->i_mount, | 857 | xfs_alert(ip->i_mount, |
| 858 | "page discard on page %p, inode 0x%llx, offset %llu.", | 858 | "page discard on page %p, inode 0x%llx, offset %llu.", |
| 859 | page, ip->i_ino, offset); | 859 | page, ip->i_ino, offset); |
| 860 | 860 | ||
| @@ -872,7 +872,7 @@ xfs_aops_discard_page( | |||
| 872 | if (error) { | 872 | if (error) { |
| 873 | /* something screwed, just bail */ | 873 | /* something screwed, just bail */ |
| 874 | if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { | 874 | if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { |
| 875 | xfs_fs_cmn_err(CE_ALERT, ip->i_mount, | 875 | xfs_alert(ip->i_mount, |
| 876 | "page discard unable to remove delalloc mapping."); | 876 | "page discard unable to remove delalloc mapping."); |
| 877 | } | 877 | } |
| 878 | break; | 878 | break; |
| @@ -1411,7 +1411,7 @@ xfs_vm_write_failed( | |||
| 1411 | if (error) { | 1411 | if (error) { |
| 1412 | /* something screwed, just bail */ | 1412 | /* something screwed, just bail */ |
| 1413 | if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { | 1413 | if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { |
| 1414 | xfs_fs_cmn_err(CE_ALERT, ip->i_mount, | 1414 | xfs_alert(ip->i_mount, |
| 1415 | "xfs_vm_write_failed: unable to clean up ino %lld", | 1415 | "xfs_vm_write_failed: unable to clean up ino %lld", |
| 1416 | ip->i_ino); | 1416 | ip->i_ino); |
| 1417 | } | 1417 | } |
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index f83a4c830a65..5cb230f2cb4f 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c | |||
| @@ -401,9 +401,8 @@ _xfs_buf_lookup_pages( | |||
| 401 | * handle buffer allocation failures we can't do much. | 401 | * handle buffer allocation failures we can't do much. |
| 402 | */ | 402 | */ |
| 403 | if (!(++retries % 100)) | 403 | if (!(++retries % 100)) |
| 404 | printk(KERN_ERR | 404 | xfs_err(NULL, |
| 405 | "XFS: possible memory allocation " | 405 | "possible memory allocation deadlock in %s (mode:0x%x)", |
| 406 | "deadlock in %s (mode:0x%x)\n", | ||
| 407 | __func__, gfp_mask); | 406 | |
