diff options
| author | Joel Becker <joel.becker@oracle.com> | 2008-09-03 23:03:41 -0400 |
|---|---|---|
| committer | Mark Fasheh <mfasheh@suse.com> | 2008-10-13 20:02:43 -0400 |
| commit | 2b4e30fbde425828b17f0e9c8f8e3fd3ecb2bc75 (patch) | |
| tree | 5b340cde72e058b51642f0c7255818f62014bc91 | |
| parent | 12462f1d9f0b96389497438dc2730c6f7410be82 (diff) | |
ocfs2: Switch over to JBD2.
ocfs2 wants JBD2 for many reasons, not the least of which is that JBD is
limiting our maximum filesystem size.
It's a pretty trivial change. Most functions are just renamed. The
only functional change is moving to Jan's inode-based ordered data mode.
It's better, too.
Because JBD2 reads and writes JBD journals, this is compatible with any
existing filesystem. It can even interact with JBD-based ocfs2 as long
as the journal is formated for JBD.
We provide a compatibility option so that paranoid people can still use
JBD for the time being. This will go away shortly.
[ Moved call of ocfs2_begin_ordered_truncate() from ocfs2_delete_inode() to
ocfs2_truncate_for_delete(). --Mark ]
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
| -rw-r--r-- | fs/Kconfig | 34 | ||||
| -rw-r--r-- | fs/ocfs2/alloc.c | 28 | ||||
| -rw-r--r-- | fs/ocfs2/aops.c | 21 | ||||
| -rw-r--r-- | fs/ocfs2/file.c | 14 | ||||
| -rw-r--r-- | fs/ocfs2/inode.c | 5 | ||||
| -rw-r--r-- | fs/ocfs2/inode.h | 1 | ||||
| -rw-r--r-- | fs/ocfs2/journal.c | 72 | ||||
| -rw-r--r-- | fs/ocfs2/journal.h | 25 | ||||
| -rw-r--r-- | fs/ocfs2/ocfs2.h | 7 | ||||
| -rw-r--r-- | fs/ocfs2/ocfs2_jbd_compat.h | 82 | ||||
| -rw-r--r-- | fs/ocfs2/super.c | 10 | ||||
| -rw-r--r-- | fs/ocfs2/uptodate.c | 6 |
12 files changed, 224 insertions, 81 deletions
diff --git a/fs/Kconfig b/fs/Kconfig index f54a157a0296..4be00d812576 100644 --- a/fs/Kconfig +++ b/fs/Kconfig | |||
| @@ -220,17 +220,16 @@ config JBD | |||
| 220 | tristate | 220 | tristate |
| 221 | help | 221 | help |
| 222 | This is a generic journalling layer for block devices. It is | 222 | This is a generic journalling layer for block devices. It is |
| 223 | currently used by the ext3 and OCFS2 file systems, but it could | 223 | currently used by the ext3 file system, but it could also be |
| 224 | also be used to add journal support to other file systems or block | 224 | used to add journal support to other file systems or block |
| 225 | devices such as RAID or LVM. | 225 | devices such as RAID or LVM. |
| 226 | 226 | ||
| 227 | If you are using the ext3 or OCFS2 file systems, you need to | 227 | If you are using the ext3 file system, you need to say Y here. |
| 228 | say Y here. If you are not using ext3 OCFS2 then you will probably | 228 | If you are not using ext3 then you will probably want to say N. |
| 229 | want to say N. | ||
| 230 | 229 | ||
| 231 | To compile this device as a module, choose M here: the module will be | 230 | To compile this device as a module, choose M here: the module will be |
| 232 | called jbd. If you are compiling ext3 or OCFS2 into the kernel, | 231 | called jbd. If you are compiling ext3 into the kernel, you |
| 233 | you cannot compile this code as a module. | 232 | cannot compile this code as a module. |
| 234 | 233 | ||
| 235 | config JBD_DEBUG | 234 | config JBD_DEBUG |
| 236 | bool "JBD (ext3) debugging support" | 235 | bool "JBD (ext3) debugging support" |
| @@ -254,15 +253,16 @@ config JBD2 | |||
| 254 | help | 253 | help |
| 255 | This is a generic journaling layer for block devices that support | 254 | This is a generic journaling layer for block devices that support |
| 256 | both 32-bit and 64-bit block numbers. It is currently used by | 255 | both 32-bit and 64-bit block numbers. It is currently used by |
| 257 | the ext4 filesystem, but it could also be used to add | 256 | the ext4 and OCFS2 filesystems, but it could also be used to add |
| 258 | journal support to other file systems or block devices such | 257 | journal support to other file systems or block devices such |
| 259 | as RAID or LVM. | 258 | as RAID or LVM. |
| 260 | 259 | ||
| 261 | If you are using ext4, you need to say Y here. If you are not | 260 | If you are using ext4 or OCFS2, you need to say Y here. |
| 262 | using ext4 then you will probably want to say N. | 261 | If you are not using ext4 or OCFS2 then you will |
| 262 | probably want to say N. | ||
| 263 | 263 | ||
| 264 | To compile this device as a module, choose M here. The module will be | 264 | To compile this device as a module, choose M here. The module will be |
| 265 | called jbd2. If you are compiling ext4 into the kernel, | 265 | called jbd2. If you are compiling ext4 or OCFS2 into the kernel, |
| 266 | you cannot compile this code as a module. | 266 | you cannot compile this code as a module. |
| 267 | 267 | ||
| 268 | config JBD2_DEBUG | 268 | config JBD2_DEBUG |
| @@ -440,7 +440,7 @@ config OCFS2_FS | |||
| 440 | tristate "OCFS2 file system support" | 440 | tristate "OCFS2 file system support" |
| 441 | depends on NET && SYSFS | 441 | depends on NET && SYSFS |
| 442 | select CONFIGFS_FS | 442 | select CONFIGFS_FS |
| 443 | select JBD | 443 | select JBD2 |
| 444 | select CRC32 | 444 | select CRC32 |
| 445 | help | 445 | help |
| 446 | OCFS2 is a general purpose extent based shared disk cluster file | 446 | OCFS2 is a general purpose extent based shared disk cluster file |
| @@ -511,6 +511,16 @@ config OCFS2_DEBUG_FS | |||
| 511 | this option for debugging only as it is likely to decrease | 511 | this option for debugging only as it is likely to decrease |
| 512 | performance of the filesystem. | 512 | performance of the filesystem. |
| 513 | 513 | ||
| 514 | config OCFS2_COMPAT_JBD | ||
| 515 | bool "Use JBD for compatibility" | ||
| 516 | depends on OCFS2_FS | ||
| 517 | default n | ||
| 518 | select JBD | ||
| 519 | help | ||
| 520 | The ocfs2 filesystem now uses JBD2 for its journalling. JBD2 | ||
| 521 | is backwards compatible with JBD. It is safe to say N here. | ||
| 522 | However, if you really want to use the original JBD, say Y here. | ||
| 523 | |||
| 514 | endif # BLOCK | 524 | endif # BLOCK |
| 515 | 525 | ||
| 516 | config DNOTIFY | 526 | config DNOTIFY |
diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c index 47201b67dbf2..ebfe36ab2d5e 100644 --- a/fs/ocfs2/alloc.c +++ b/fs/ocfs2/alloc.c | |||
| @@ -6421,20 +6421,13 @@ bail: | |||
| 6421 | return status; | 6421 | return status; |
| 6422 | } | 6422 | } |
| 6423 | 6423 | ||
| 6424 | static int ocfs2_writeback_zero_func(handle_t *handle, struct buffer_head *bh) | 6424 | static int ocfs2_zero_func(handle_t *handle, struct buffer_head *bh) |
| 6425 | { | 6425 | { |
| 6426 | set_buffer_uptodate(bh); | 6426 | set_buffer_uptodate(bh); |
| 6427 | mark_buffer_dirty(bh); | 6427 | mark_buffer_dirty(bh); |
| 6428 | return 0; | 6428 | return 0; |
| 6429 | } | 6429 | } |
| 6430 | 6430 | ||
| 6431 | static int ocfs2_ordered_zero_func(handle_t *handle, struct buffer_head *bh) | ||
| 6432 | { | ||
| 6433 | set_buffer_uptodate(bh); | ||
| 6434 | mark_buffer_dirty(bh); | ||
| 6435 | return ocfs2_journal_dirty_data(handle, bh); | ||
| 6436 | } | ||
| 6437 | |||
| 6438 | static void ocfs2_map_and_dirty_page(struct inode *inode, handle_t *handle, | 6431 | static void ocfs2_map_and_dirty_page(struct inode *inode, handle_t *handle, |
| 6439 | unsigned int from, unsigned int to, | 6432 | unsigned int from, unsigned int to, |
| 6440 | struct page *page, int zero, u64 *phys) | 6433 | struct page *page, int zero, u64 *phys) |
| @@ -6453,17 +6446,18 @@ static void ocfs2_map_and_dirty_page(struct inode *inode, handle_t *handle, | |||
| 6453 | * here if they aren't - ocfs2_map_page_blocks() | 6446 | * here if they aren't - ocfs2_map_page_blocks() |
| 6454 | * might've skipped some | 6447 | * might've skipped some |
| 6455 | */ | 6448 | */ |
| 6456 | if (ocfs2_should_order_data(inode)) { | 6449 | ret = walk_page_buffers(handle, page_buffers(page), |
| 6457 | ret = walk_page_buffers(handle, | 6450 | from, to, &partial, |
| 6458 | page_buffers(page), | 6451 | ocfs2_zero_func); |
| 6459 | from, to, &partial, | 6452 | if (ret < 0) |
| 6460 | ocfs2_ordered_zero_func); | 6453 | mlog_errno(ret); |
| 6461 | if (ret < 0) | 6454 | else if (ocfs2_should_order_data(inode)) { |
| 6462 | mlog_errno(ret); | 6455 | ret = ocfs2_jbd2_file_inode(handle, inode); |
| 6463 | } else { | 6456 | #ifdef CONFIG_OCFS2_COMPAT_JBD |
| 6464 | ret = walk_page_buffers(handle, page_buffers(page), | 6457 | ret = walk_page_buffers(handle, page_buffers(page), |
| 6465 | from, to, &partial, | 6458 | from, to, &partial, |
| 6466 | ocfs2_writeback_zero_func); | 6459 | ocfs2_journal_dirty_data); |
| 6460 | #endif | ||
| 6467 | if (ret < 0) | 6461 | if (ret < 0) |
| 6468 | mlog_errno(ret); | 6462 | mlog_errno(ret); |
| 6469 | } | 6463 | } |
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index 259775eedb85..de179054a74b 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c | |||
| @@ -485,11 +485,14 @@ handle_t *ocfs2_start_walk_page_trans(struct inode *inode, | |||
| 485 | } | 485 | } |
| 486 | 486 | ||
| 487 | if (ocfs2_should_order_data(inode)) { | 487 | if (ocfs2_should_order_data(inode)) { |
| 488 | ret = ocfs2_jbd2_file_inode(handle, inode); | ||
| 489 | #ifdef CONFIG_OCFS2_COMPAT_JBD | ||
| 488 | ret = walk_page_buffers(handle, | 490 | ret = walk_page_buffers(handle, |
| 489 | page_buffers(page), | 491 | page_buffers(page), |
| 490 | from, to, NULL, | 492 | from, to, NULL, |
| 491 | ocfs2_journal_dirty_data); | 493 | ocfs2_journal_dirty_data); |
| 492 | if (ret < 0) | 494 | #endif |
| 495 | if (ret < 0) | ||
| 493 | mlog_errno(ret); | 496 | mlog_errno(ret); |
| 494 | } | 497 | } |
| 495 | out: | 498 | out: |
| @@ -669,7 +672,7 @@ static void ocfs2_invalidatepage(struct page *page, unsigned long offset) | |||
| 669 | { | 672 | { |
| 670 | journal_t *journal = OCFS2_SB(page->mapping->host->i_sb)->journal->j_journal; | 673 | journal_t *journal = OCFS2_SB(page->mapping->host->i_sb)->journal->j_journal; |
| 671 | 674 | ||
| 672 | journal_invalidatepage(journal, page, offset); | 675 | jbd2_journal_invalidatepage(journal, page, offset); |
| 673 | } | 676 | } |
| 674 | 677 | ||
| 675 | static int ocfs2_releasepage(struct page *page, gfp_t wait) | 678 | static int ocfs2_releasepage(struct page *page, gfp_t wait) |
| @@ -678,7 +681,7 @@ static int ocfs2_releasepage(struct page *page, gfp_t wait) | |||
| 678 | 681 | ||
| 679 | if (!page_has_buffers(page)) | 682 | if (!page_has_buffers(page)) |
| 680 | return 0; | 683 | return 0; |
| 681 | return journal_try_to_free_buffers(journal, page, wait); | 684 | return jbd2_journal_try_to_free_buffers(journal, page, wait); |
| 682 | } | 685 | } |
| 683 | 686 | ||
| 684 | static ssize_t ocfs2_direct_IO(int rw, | 687 | static ssize_t ocfs2_direct_IO(int rw, |
| @@ -1074,11 +1077,15 @@ static void ocfs2_write_failure(struct inode *inode, | |||
| 1074 | tmppage = wc->w_pages[i]; | 1077 | tmppage = wc->w_pages[i]; |
| 1075 | 1078 | ||
| 1076 | if (page_has_buffers(tmppage)) { | 1079 | if (page_has_buffers(tmppage)) { |
| 1077 | if (ocfs2_should_order_data(inode)) | 1080 | if (ocfs2_should_order_data(inode)) { |
| 1081 | ocfs2_jbd2_file_inode(wc->w_handle, inode); | ||
| 1082 | #ifdef CONFIG_OCFS2_COMPAT_JBD | ||
| 1078 | walk_page_buffers(wc->w_handle, | 1083 | walk_page_buffers(wc->w_handle, |
| 1079 | page_buffers(tmppage), | 1084 | page_buffers(tmppage), |
| 1080 | from, to, NULL, | 1085 | from, to, NULL, |
| 1081 | ocfs2_journal_dirty_data); | 1086 | ocfs2_journal_dirty_data); |
| 1087 | #endif | ||
| 1088 | } | ||
| 1082 | 1089 | ||
| 1083 | block_commit_write(tmppage, from, to); | 1090 | block_commit_write(tmppage, from, to); |
| 1084 | } | 1091 | } |
| @@ -1917,11 +1924,15 @@ int ocfs2_write_end_nolock(struct address_space *mapping, | |||
| 1917 | } | 1924 | } |
| 1918 | 1925 | ||
| 1919 | if (page_has_buffers(tmppage)) { | 1926 | if (page_has_buffers(tmppage)) { |
| 1920 | if (ocfs2_should_order_data(inode)) | 1927 | if (ocfs2_should_order_data(inode)) { |
| 1928 | ocfs2_jbd2_file_inode(wc->w_handle, inode); | ||
| 1929 | #ifdef CONFIG_OCFS2_COMPAT_JBD | ||
| 1921 | walk_page_buffers(wc->w_handle, | 1930 | walk_page_buffers(wc->w_handle, |
| 1922 | page_buffers(tmppage), | 1931 | page_buffers(tmppage), |
| 1923 | from, to, NULL, | 1932 | from, to, NULL, |
| 1924 | ocfs2_journal_dirty_data); | 1933 | ocfs2_journal_dirty_data); |
| 1934 | #endif | ||
| 1935 | } | ||
| 1925 | block_commit_write(tmppage, from, to); | 1936 | block_commit_write(tmppage, from, to); |
| 1926 | } | 1937 | } |
| 1927 | } | 1938 | } |
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 441c6a94059d..c95318bc00cb 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c | |||
| @@ -185,7 +185,7 @@ static int ocfs2_sync_file(struct file *file, | |||
| 185 | goto bail; | 185 | goto bail; |
| 186 | 186 | ||
| 187 | journal = osb->journal->j_journal; | 187 | journal = osb->journal->j_journal; |
| 188 | err = journal_force_commit(journal); | 188 | err = jbd2_journal_force_commit(journal); |
| 189 | 189 | ||
| 190 | bail: | 190 | bail: |
| 191 | mlog_exit(err); | 191 | mlog_exit(err); |
| @@ -941,9 +941,15 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr) | |||
| 941 | goto bail_unlock; | 941 | goto bail_unlock; |
| 942 | } | 942 | } |
| 943 | 943 | ||
| 944 | if (i_size_read(inode) > attr->ia_size) | 944 | if (i_size_read(inode) > attr->ia_size) { |
| 945 | if (ocfs2_should_order_data(inode)) { | ||
| 946 | status = ocfs2_begin_ordered_truncate(inode, | ||
| 947 | attr->ia_size); | ||
| 948 | if (status) | ||
| 949 | goto bail_unlock; | ||
| 950 | } | ||
| 945 | status = ocfs2_truncate_file(inode, bh, attr->ia_size); | 951 | status = ocfs2_truncate_file(inode, bh, attr->ia_size); |
| 946 | else | 952 | } else |
| 947 | status = ocfs2_extend_file(inode, bh, attr->ia_size); | 953 | status = ocfs2_extend_file(inode, bh, attr->ia_size); |
| 948 | if (status < 0) { | 954 | if (status < 0) { |
| 949 | if (status != -ENOSPC) | 955 | if (status != -ENOSPC) |
| @@ -1888,7 +1894,7 @@ out_dio: | |||
| 1888 | */ | 1894 | */ |
| 1889 | if (old_size != i_size_read(inode) || | 1895 | if (old_size != i_size_read(inode) || |
| 1890 | old_clusters != OCFS2_I(inode)->ip_clusters) { | 1896 | old_clusters != OCFS2_I(inode)->ip_clusters) { |
| 1891 | ret = journal_force_commit(osb->journal->j_journal); | 1897 | ret = jbd2_journal_force_commit(osb->journal->j_journal); |
| 1892 | if (ret < 0) | 1898 | if (ret < 0) |
| 1893 | written = ret; | 1899 | written = ret; |
| 1894 | } | 1900 | } |
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c index 4738dd25bb94..9d92c859ac94 100644 --- a/fs/ocfs2/inode.c +++ b/fs/ocfs2/inode.c | |||
| @@ -534,6 +534,9 @@ static int ocfs2_truncate_for_delete(struct ocfs2_super *osb, | |||
| 534 | * data and fast symlinks. | 534 | * data and fast symlinks. |
| 535 | */ | 535 | */ |
| 536 | if (fe->i_clusters) { | 536 | if (fe->i_clusters) { |
| 537 | if (ocfs2_should_order_data(inode)) | ||
| 538 | ocfs2_begin_ordered_truncate(inode, 0); | ||
| 539 | |||
| 537 | handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS); | 540 | handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS); |
| 538 | if (IS_ERR(handle)) { | 541 | if (IS_ERR(handle)) { |
| 539 | status = PTR_ERR(handle); | 542 | status = PTR_ERR(handle); |
| @@ -1100,6 +1103,8 @@ void ocfs2_clear_inode(struct inode *inode) | |||
| 1100 | oi->ip_last_trans = 0; | 1103 | oi->ip_last_trans = 0; |
| 1101 | oi->ip_dir_start_lookup = 0; | 1104 | oi->ip_dir_start_lookup = 0; |
| 1102 | oi->ip_blkno = 0ULL; | 1105 | oi->ip_blkno = 0ULL; |
| 1106 | jbd2_journal_release_jbd_inode(OCFS2_SB(inode->i_sb)->journal->j_journal, | ||
| 1107 | &oi->ip_jinode); | ||
| 1103 | 1108 | ||
| 1104 | bail: | 1109 | bail: |
| 1105 | mlog_exit_void(); | 1110 | mlog_exit_void(); |
diff --git a/fs/ocfs2/inode.h b/fs/ocfs2/inode.h index 499bc62e758b..f66e4340f178 100644 --- a/fs/ocfs2/inode.h +++ b/fs/ocfs2/inode.h | |||
| @@ -71,6 +71,7 @@ struct ocfs2_inode_info | |||
| 71 | struct ocfs2_extent_map ip_extent_map; | 71 | struct ocfs2_extent_map ip_extent_map; |
| 72 | 72 | ||
| 73 | struct inode vfs_inode; | 73 | struct inode vfs_inode; |
| 74 | struct jbd2_inode ip_jinode; | ||
| 74 | }; | 75 | }; |
| 75 | 76 | ||
| 76 | /* | 77 | /* |
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index c47bc2a809c2..373d94366a4c 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c | |||
| @@ -215,9 +215,9 @@ static int ocfs2_commit_cache(struct ocfs2_super *osb) | |||
| 215 | goto finally; | 215 | goto finally; |
| 216 | } | 216 | } |
| 217 | 217 | ||
| 218 | journal_lock_updates(journal->j_journal); | 218 | jbd2_journal_lock_updates(journal->j_journal); |
| 219 | status = journal_flush(journal->j_journal); | 219 | status = jbd2_journal_flush(journal->j_journal); |
| 220 | journal_unlock_updates(journal->j_journal); | 220 | jbd2_journal_unlock_updates(journal->j_journal); |
| 221 | if (status < 0) { | 221 | if (status < 0) { |
| 222 | up_write(&journal->j_trans_barrier); | 222 | up_write(&journal->j_trans_barrier); |
| 223 | mlog_errno(status); | 223 | mlog_errno(status); |
| @@ -264,7 +264,7 @@ handle_t *ocfs2_start_trans(struct ocfs2_super *osb, int max_buffs) | |||
| 264 | 264 | ||
| 265 | down_read(&osb->journal->j_trans_barrier); | 265 | down_read(&osb->journal->j_trans_barrier); |
| 266 | 266 | ||
| 267 | handle = journal_start(journal, max_buffs); | 267 | handle = jbd2_journal_start(journal, max_buffs); |
| 268 | if (IS_ERR(handle)) { | 268 | if (IS_ERR(handle)) { |
| 269 | up_read(&osb->journal->j_trans_barrier); | 269 | up_read(&osb->journal->j_trans_barrier); |
| 270 | 270 | ||
| @@ -290,7 +290,7 @@ int ocfs2_commit_trans(struct ocfs2_super *osb, | |||
| 290 | 290 | ||
| 291 | BUG_ON(!handle); | 291 | BUG_ON(!handle); |
| 292 | 292 | ||
| 293 | ret = journal_stop(handle); | 293 | ret = jbd2_journal_stop(handle); |
| 294 | if (ret < 0) | 294 | if (ret < 0) |
| 295 | mlog_errno(ret); | 295 | mlog_errno(ret); |
| 296 | 296 | ||
| @@ -304,7 +304,7 @@ int ocfs2_commit_trans(struct ocfs2_super *osb, | |||
| 304 | * transaction. extend_trans will either extend the current handle by | 304 | * transaction. extend_trans will either extend the current handle by |
| 305 | * nblocks, or commit it and start a new one with nblocks credits. | 305 | * nblocks, or commit it and start a new one with nblocks credits. |
| 306 | * | 306 | * |
| 307 | * This might call journal_restart() which will commit dirty buffers | 307 | * This might call jbd2_journal_restart() which will commit dirty buffers |
| 308 | * and then restart the transaction. Before calling | 308 | * and then restart the transaction. Before calling |
| 309 | * ocfs2_extend_trans(), any changed blocks should have been | 309 | * ocfs2_extend_trans(), any changed blocks should have been |
| 310 | * dirtied. After calling it, all blocks which need to be changed must | 310 | * dirtied. After calling it, all blocks which need to be changed must |
| @@ -332,7 +332,7 @@ int ocfs2_extend_trans(handle_t *handle, int nblocks) | |||
| 332 | #ifdef CONFIG_OCFS2_DEBUG_FS | 332 | #ifdef CONFIG_OCFS2_DEBUG_FS |
| 333 | status = 1; | 333 | status = 1; |
| 334 | #else | 334 | #else |
| 335 | status = journal_extend(handle, nblocks); | 335 | status = jbd2_journal_extend(handle, nblocks); |
| 336 | if (status < 0) { | 336 | if (status < 0) { |
| 337 | mlog_errno(status); | 337 | mlog_errno(status); |
| 338 | goto bail; | 338 | goto bail; |
| @@ -340,8 +340,10 @@ int ocfs2_extend_trans(handle_t *handle, int nblocks) | |||
| 340 | #endif | 340 | #endif |
| 341 | 341 | ||
| 342 | if (status > 0) { | 342 | if (status > 0) { |
| 343 | mlog(0, "journal_extend failed, trying journal_restart\n"); | 343 | mlog(0, |
| 344 | status = journal_restart(handle, nblocks); | 344 | "jbd2_journal_extend failed, trying " |
| 345 | "jbd2_journal_restart\n"); | ||
| 346 | status = jbd2_journal_restart(handle, nblocks); | ||
| 345 | if (status < 0) { | 347 | if (status < 0) { |
| 346 | mlog_errno(status); | 348 | mlog_errno(status); |
| 347 | goto bail; | 349 | goto bail; |
| @@ -393,11 +395,11 @@ int ocfs2_journal_access(handle_t *handle, | |||
| 393 | switch (type) { | 395 | switch (type) { |
| 394 | case OCFS2_JOURNAL_ACCESS_CREATE: | 396 | case OCFS2_JOURNAL_ACCESS_CREATE: |
| 395 | case OCFS2_JOURNAL_ACCESS_WRITE: | 397 | case OCFS2_JOURNAL_ACCESS_WRITE: |
| 396 | status = journal_get_write_access(handle, bh); | 398 | status = jbd2_journal_get_write_access(handle, bh); |
| 397 | break; | 399 | break; |
| 398 | 400 | ||
| 399 | case OCFS2_JOURNAL_ACCESS_UNDO: | 401 | case OCFS2_JOURNAL_ACCESS_UNDO: |
| 400 | status = journal_get_undo_access(handle, bh); | 402 | status = jbd2_journal_get_undo_access(handle, bh); |
| 401 | break; | 403 | break; |
| 402 | 404 | ||
| 403 | default: | 405 | default: |
| @@ -422,7 +424,7 @@ int ocfs2_journal_dirty(handle_t *handle, | |||
| 422 | mlog_entry("(bh->b_blocknr=%llu)\n", | 424 | mlog_entry("(bh->b_blocknr=%llu)\n", |
| 423 | (unsigned long long)bh->b_blocknr); | 425 | (unsigned long long)bh->b_blocknr); |
| 424 | 426 | ||
| 425 | status = journal_dirty_metadata(handle, bh); | 427 | status = jbd2_journal_dirty_metadata(handle, bh); |
| 426 | if (status < 0) | 428 | if (status < 0) |
| 427 | mlog(ML_ERROR, "Could not dirty metadata buffer. " | 429 | mlog(ML_ERROR, "Could not dirty metadata buffer. " |
| 428 | "(bh->b_blocknr=%llu)\n", | 430 | "(bh->b_blocknr=%llu)\n", |
| @@ -432,6 +434,7 @@ int ocfs2_journal_dirty(handle_t *handle, | |||
| 432 | return status; | 434 | return status; |
| 433 | } | 435 | } |
| 434 | 436 | ||
| 437 | #ifdef CONFIG_OCFS2_COMPAT_JBD | ||
| 435 | int ocfs2_journal_dirty_data(handle_t *handle, | 438 | int ocfs2_journal_dirty_data(handle_t *handle, |
| 436 | struct buffer_head *bh) | 439 | struct buffer_head *bh) |
| 437 | { | 440 | { |
| @@ -443,8 +446,9 @@ int ocfs2_journal_dirty_data(handle_t *handle, | |||
| 443 | 446 | ||
| 444 | return err; | 447 | return err; |
| 445 | } | 448 | } |
| 449 | #endif | ||
| 446 | 450 | ||
| 447 | #define OCFS2_DEFAULT_COMMIT_INTERVAL (HZ * JBD_DEFAULT_MAX_COMMIT_AGE) | 451 | #define OCFS2_DEFAULT_COMMIT_INTERVAL (HZ * JBD2_DEFAULT_MAX_COMMIT_AGE) |
| 448 | 452 | ||
| 449 | void ocfs2_set_journal_params(struct ocfs2_super *osb) | 453 | void ocfs2_set_journal_params(struct ocfs2_super *osb) |
| 450 | { | 454 | { |
| @@ -457,9 +461,9 @@ void ocfs2_set_journal_params(struct ocfs2_super *osb) | |||
| 457 | spin_lock(&journal->j_state_lock); | 461 | spin_lock(&journal->j_state_lock); |
| 458 | journal->j_commit_interval = commit_interval; | 462 | journal->j_commit_interval = commit_interval; |
| 459 | if (osb->s_mount_opt & OCFS2_MOUNT_BARRIER) | 463 | if (osb->s_mount_opt & OCFS2_MOUNT_BARRIER) |
| 460 | journal->j_flags |= JFS_BARRIER; | 464 | journal->j_flags |= JBD2_BARRIER; |
| 461 | else | 465 | else |
| 462 | journal->j_flags &= ~JFS_BARRIER; | 466 | journal->j_flags &= ~JBD2_BARRIER; |
| 463 | spin_unlock(&journal->j_state_lock); | 467 | spin_unlock(&journal->j_state_lock); |
| 464 | } | 468 | } |
| 465 | 469 | ||
| @@ -524,14 +528,14 @@ int ocfs2_journal_init(struct ocfs2_journal *journal, int *dirty) | |||
| 524 | mlog(0, "inode->ip_clusters = %u\n", OCFS2_I(inode)->ip_clusters); | 528 | mlog(0, "inode->ip_clusters = %u\n", OCFS2_I(inode)->ip_clusters); |
| 525 | 529 | ||
| 526 | /* call the kernels journal init function now */ | 530 | /* call the kernels journal init function now */ |
| 527 | j_journal = journal_init_inode(inode); | 531 | j_journal = jbd2_journal_init_inode(inode); |
| 528 | if (j_journal == NULL) { | 532 | if (j_journal == NULL) { |
| 529 | mlog(ML_ERROR, "Linux journal layer error\n"); | 533 | mlog(ML_ERROR, "Linux journal layer error\n"); |
| 530 | status = -EINVAL; | 534 | status = -EINVAL; |
| 531 | goto done; | 535 | goto done; |
| 532 | } | 536 | } |
| 533 | 537 | ||
| 534 | mlog(0, "Returned from journal_init_inode\n"); | 538 | mlog(0, "Returned from jbd2_journal_init_inode\n"); |
| 535 | mlog(0, "j_journal->j_maxlen = %u\n", j_journal->j_maxlen); | 539 | mlog(0, "j_journal->j_maxlen = %u\n", j_journal->j_maxlen); |
| 536 | 540 | ||
| 537 | *dirty = (le32_to_cpu(di->id1.journal1.ij_flags) & | 541 | *dirty = (le32_to_cpu(di->id1.journal1.ij_flags) & |
| @@ -639,7 +643,7 @@ void ocfs2_journal_shutdown(struct ocfs2_super *osb) | |||
| 639 | if (journal->j_state != OCFS2_JOURNAL_LOADED) | 643 | if (journal->j_state != OCFS2_JOURNAL_LOADED) |
| 640 | goto done; | 644 | goto done; |
| 641 | 645 | ||
| 642 | /* need to inc inode use count as journal_destroy will iput. */ | 646 | /* need to inc inode use count - jbd2_journal_destroy will iput. */ |
| 643 | if (!igrab(inode)) | 647 | if (!igrab(inode)) |
| 644 | BUG(); | 648 | BUG(); |
| 645 | 649 | ||
| @@ -668,9 +672,9 @@ void ocfs2_journal_shutdown(struct ocfs2_super *osb) | |||
| 668 | BUG_ON(atomic_read(&(osb->journal->j_num_trans)) != 0); | 672 | BUG_ON(atomic_read(&(osb->journal->j_num_trans)) != 0); |
| 669 | 673 | ||
| 670 | if (ocfs2_mount_local(osb)) { | 674 | if (ocfs2_mount_local(osb)) { |
| 671 | journal_lock_updates(journal->j_journal); | 675 | jbd2_journal_lock_updates(journal->j_journal); |
| 672 | status = journal_flush(journal->j_journal); | 676 | status = jbd2_journal_flush(journal->j_journal); |
| 673 | journal_unlock_updates(journal->j_journal); | 677 | jbd2_journal_unlock_updates(journal->j_journal); |
| 674 | if (status < 0) | 678 | if (status < 0) |
| 675 | mlog_errno(status); | 679 | mlog_errno(status); |
| 676 | } | 680 | } |
| @@ -686,7 +690,7 @@ void ocfs2_journal_shutdown(struct ocfs2_super *osb) | |||
| 686 | } | 690 | } |
| 687 | 691 | ||
| 688 | /* Shutdown the kernel journal system */ | 692 | /* Shutdown the kernel journal system */ |
| 689 | journal_destroy(journal->j_journal); | 693 | jbd2_journal_destroy(journal->j_journal); |
| 690 | 694 | ||
| 691 | OCFS2_I(inode)->ip_open_count--; | 695 | OCFS2_I(inode)->ip_open_count--; |
| 692 | 696 | ||
| @@ -711,15 +715,15 @@ static void ocfs2_clear_journal_error(struct super_block *sb, | |||
| 711 | { | 715 | { |
| 712 | int olderr; | 716 | int olderr; |
| 713 | 717 | ||
| 714 | olderr = journal_errno(journal); | 718 | olderr = jbd2_journal_errno(journal); |
| 715 | if (olderr) { | 719 | if (olderr) { |
| 716 | mlog(ML_ERROR, "File system error %d recorded in " | 720 | mlog(ML_ERROR, "File system error %d recorded in " |
| 717 | "journal %u.\n", olderr, slot); | 721 | "journal %u.\n", olderr, slot); |
| 718 | mlog(ML_ERROR, "File system on device %s needs checking.\n", | 722 | mlog(ML_ERROR, "File system on device %s needs checking.\n", |
| 719 | sb->s_id); | 723 | sb->s_id); |
| 720 | 724 | ||
| 721 | journal_ack_err(journal); | 725 | jbd2_journal_ack_err(journal); |
| 722 | journal_clear_err(journal); | 726 | jbd2_journal_clear_err(journal); |
| 723 | } | 727 | } |
| 724 | } | 728 | } |
| 725 | 729 | ||
| @@ -734,7 +738,7 @@ int ocfs2_journal_load(struct ocfs2_journal *journal, int local, int replayed) | |||
| 734 | 738 | ||
| 735 | osb = journal->j_osb; | 739 | osb = journal->j_osb; |
| 736 | 740 | ||
| 737 | status = journal_load(journal->j_journal); | 741 | status = jbd2_journal_load(journal->j_journal); |
| 738 | if (status < 0) { | 742 | if (status < 0) { |
| 739 | mlog(ML_ERROR, "Failed to load journal!\n"); | 743 | mlog(ML_ERROR, "Failed to load journal!\n"); |
| 740 | goto done; | 744 | goto done; |
| @@ -778,7 +782,7 @@ int ocfs2_journal_wipe(struct ocfs2_journal *journal, int full) | |||
| 778 | 782 | ||
| 779 | BUG_ON(!journal); | 783 | BUG_ON(!journal); |
| 780 | 784 | ||
| 781 | status = journal_wipe(journal->j_journal, full); | 785 | status = jbd2_journal_wipe(journal->j_journal, full); |
| 782 | if (status < 0) { | 786 | if (status < 0) { |
| 783 | mlog_errno(status); | 787 | mlog_errno(status); |
| 784 | goto bail; | 788 | goto bail; |
| @@ -1229,19 +1233,19 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, | |||
| 1229 | } | 1233 | } |
| 1230 | 1234 | ||
| 1231 | mlog(0, "calling journal_init_inode\n"); | 1235 | mlog(0, "calling journal_init_inode\n"); |
| 1232 | journal = journal_init_inode(inode); | 1236 | journal = jbd2_journal_init_inode(inode); |
| 1233 | if (journal == NULL) { | 1237 | if (journal == NULL) { |
| 1234 | mlog(ML_ERROR, "Linux journal layer error\n"); | 1238 | mlog(ML_ERROR, "Linux journal layer error\n"); |
| 1235 | status = -EIO; | 1239 | status = -EIO; |
| 1236 | goto done; | 1240 | goto done; |
| 1237 | } | 1241 | } |
| 1238 | 1242 | ||
| 1239 | status = journal_load(journal); | 1243 | status = jbd2_journal_load(journal); |
| 1240 | if (status < 0) { | 1244 | if (status < 0) { |
| 1241 | mlog_errno(status); | 1245 | mlog_errno(status); |
| 1242 | if (!igrab(inode)) | 1246 | if (!igrab(inode)) |
| 1243 | BUG(); | 1247 | BUG(); |
| 1244 | journal_destroy(journal); | 1248 | jbd2_journal_destroy(journal); |
| 1245 | goto done; | 1249 | goto done; |
| 1246 | } | 1250 | } |
| 1247 | 1251 | ||
| @@ -1249,9 +1253,9 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, | |||
| 1249 | 1253 | ||
| 1250 | /* wipe the journal */ | 1254 | /* wipe the journal */ |
| 1251 | mlog(0, "flushing the journal.\n"); | 1255 | mlog(0, "flushing the journal.\n"); |
| 1252 | journal_lock_updates(journal); | 1256 | jbd2_journal_lock_updates(journal); |
| 1253 | status = journal_flush(journal); | 1257 | status = jbd2_journal_flush(journal); |
| 1254 | journal_unlock_updates(journal); | 1258 | jbd2_journal_unlock_updates(journal); |
| 1255 | if (status < 0) | 1259 | if (status < 0) |
| 1256 | mlog_errno(status); | 1260 | mlog_errno(status); |
| 1257 | 1261 | ||
| @@ -1272,7 +1276,7 @@ static int ocfs2_replay_journal(struct ocfs2_super *osb, | |||
| 1272 | if (!igrab(inode)) | 1276 | if (!igrab(inode)) |
| 1273 | BUG(); | 1277 | BUG(); |
| 1274 | 1278 | ||
| 1275 | journal_destroy(journal); | 1279 | jbd2_journal_destroy(journal); |
| 1276 | 1280 | ||
| 1277 | done: | 1281 | done: |
| 1278 | /* drop the lock on this nodes journal */ | 1282 | /* drop the lock on this nodes journal */ |
diff --git a/fs/ocfs2/journal.h b/fs/ocfs2/journal.h index 08d1add14872..d4d14e9a3cea 100644 --- a/fs/ocfs2/journal.h +++ b/fs/ocfs2/journal.h | |||
| @@ -27,7 +27,12 @@ | |||
| 27 | #define OCFS2_JOURNAL_H | 27 | #define OCFS2_JOURNAL_H |
| 28 | 28 | ||
| 29 | #include <linux/fs.h> | 29 | #include <linux/fs.h> |
| 30 | #include <linux/jbd.h> | 30 | #ifndef CONFIG_OCFS2_COMPAT_JBD |
| 31 | # include <linux/jbd2.h> | ||
| 32 | #else | ||
| 33 | # include <linux/jbd.h> | ||
| 34 | # include "ocfs2_jbd_compat.h" | ||
| 35 | #endif | ||
| 31 | 36 | ||
| 32 | enum ocfs2_journal_state { | 37 | enum ocfs2_journal_state { |
| 33 | OCFS2_JOURNAL_FREE = 0, | 38 | OCFS2_JOURNAL_FREE = 0, |
| @@ -215,8 +220,8 @@ static inline void ocfs2_checkpoint_inode(struct inode *inode) | |||
| 215 | * buffer. Will have to call ocfs2_journal_dirty once | 220 | * buffer. Will have to call ocfs2_journal_dirty once |
| 216 | * we've actually dirtied it. Type is one of . or . | 221 | * we've actually dirtied it. Type is one of . or . |
| 217 | * ocfs2_journal_dirty - Mark a journalled buffer as having dirty data. | 222 | * ocfs2_journal_dirty - Mark a journalled buffer as having dirty data. |
| 218 | * ocfs2_journal_dirty_data - Indicate that a data buffer should go out before | 223 | * ocfs2_jbd2_file_inode - Mark an inode so that its data goes out before |
| 219 | * the current handle commits. | 224 | * the current handle commits. |
| 220 | */ | 225 | */ |
| 221 | 226 | ||
| 222 | /* You must always start_trans with a number of buffs > 0, but it's | 227 | /* You must always start_trans with a number of buffs > 0, but it's |
| @@ -268,8 +273,10 @@ int ocfs2_journal_access(handle_t *handle, | |||
| 268 | */ | 273 | */ |
| 269 | int ocfs2_journal_dirty(handle_t *handle, | 274 | int ocfs2_journal_dirty(handle_t *handle, |
| 270 | struct buffer_head *bh); | 275 | struct buffer_head *bh); |
| 276 | #ifdef CONFIG_OCFS2_COMPAT_JBD | ||
| 271 | int ocfs2_journal_dirty_data(handle_t *handle, | 277 | int ocfs2_journal_dirty_data(handle_t *handle, |
| 272 | struct buffer_head *bh); | 278 | struct buffer_head *bh); |
| 279 | #endif | ||
| 273 | 280 | ||
| 274 | /* | 281 | /* |
| 275 | * Credit Macros: | 282 | * Credit Macros: |
| @@ -430,4 +437,16 @@ static inline int ocfs2_calc_tree_trunc_credits(struct super_block *sb, | |||
| 430 | return credits; | 437 | return credits; |
| 431 | } | 438 | } |
| 432 | 439 | ||
| 440 | static inline int ocfs2_jbd2_file_inode(handle_t *handle, struct inode *inode) | ||
| 441 | { | ||
| 442 | return jbd2_journal_file_inode(handle, &OCFS2_I(inode)->ip_jinode); | ||
| 443 | } | ||
| 444 | |||
| 445 | static inline int ocfs2_begin_ordered_truncate(struct inode *inode, | ||
| 446 | loff_t new_size) | ||
| 447 | { | ||
| 448 | return jbd2_journal_begin_ordered_truncate(&OCFS2_I(inode)->ip_jinode, | ||
| 449 | new_size); | ||
| 450 | } | ||
| 451 | |||
| 433 | #endif /* OCFS2_JOURNAL_H */ | 452 | #endif /* OCFS2_JOURNAL_H */ |
diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h index 78ae4f87e6b0..a21a465490c4 100644 --- a/fs/ocfs2/ocfs2.h +++ b/fs/ocfs2/ocfs2.h | |||
| @@ -34,7 +34,12 @@ | |||
| 34 | #include <linux/workqueue.h> | 34 | #include <linux/workqueue.h> |
| 35 | #include <linux/kref.h> | 35 | #include <linux/kref.h> |
| 36 | #include <linux/mutex.h> | 36 | #include <linux/mutex.h> |
| 37 | #include <linux/jbd.h> | 37 | #ifndef CONFIG_OCFS2_COMPAT_JBD |
| 38 | # include <linux/jbd2.h> | ||
| 39 | #else | ||
| 40 | # include <linux/jbd.h> | ||
| 41 | # include "ocfs2_jbd_compat.h" | ||
| 42 | #endif | ||
| 38 | 43 | ||
| 39 | /* For union ocfs2_dlm_lksb */ | 44 | /* For union ocfs2_dlm_lksb */ |
| 40 | #include "stackglue.h" | 45 | #include "stackglue.h" |
diff --git a/fs/ocfs2/ocfs2_jbd_compat.h b/fs/ocfs2/ocfs2_jbd_compat.h new file mode 100644 index 000000000000..b91c78f8f558 --- /dev/null +++ b/fs/ocfs2/ocfs2_jbd_compat.h | |||
| @@ -0,0 +1,82 @@ | |||
| 1 | /* -*- mode: c; c-basic-offset: 8; -*- | ||
| 2 | * vim: noexpandtab sw=8 ts=8 sts=0: | ||
| 3 | * | ||
| 4 | * ocfs2_jbd_compat.h | ||
| 5 | * | ||
| 6 | * Compatibility defines for JBD. | ||
| 7 | * | ||
| 8 | * Copyright (C) 2008 Oracle. All rights reserved. | ||
| 9 | * | ||
| 10 | * This program is free software; you can redistribute it and/or | ||
| 11 | * modify it under the terms of the GNU General Public | ||
| 12 | * License version 2 as published by the Free Software Foundation. | ||
| 13 | * | ||
| 14 | * This program is distributed in the hope that it will be useful, | ||
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 17 | * General Public License for more details. | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef OCFS2_JBD_COMPAT_H | ||
| 21 | #define OCFS2_JBD_COMPAT_H | ||
| 22 | |||
| 23 | #ifndef CONFIG_OCFS2_COMPAT_JBD | ||
| 24 | # error Should not have been included | ||
| 25 | #endif | ||
| 26 | |||
| 27 | struct jbd2_inode { | ||
| 28 | unsigned int dummy; | ||
| 29 | }; | ||
| 30 | |||
| 31 | #define JBD2_BARRIER JFS_BARRIER | ||
| 32 | #define JBD2_DEFAULT_MAX_COMMIT_AGE JBD_DEFAULT_MAX_COMMIT_AGE | ||
| 33 | |||
| 34 | #define jbd2_journal_ack_err journal_ack_err | ||
| 35 | #define jbd2_journal_clear_err journal_clear_err | ||
| 36 | #define jbd2_journal_destroy journal_destroy | ||
| 37 | #define jbd2_journal_dirty_metadata journal_dirty_metadata | ||
| 38 | #define jbd2_journal_errno journal_errno | ||
| 39 | #define jbd2_journal_extend journal_extend | ||
| 40 | #define jbd2_journal_flush journal_flush | ||
| 41 | #define jbd2_journal_force_commit journal_force_commit | ||
| 42 | #define jbd2_journal_get_write_access journal_get_write_access | ||
| 43 | #define jbd2_journal_get_undo_access journal_get_undo_access | ||
| 44 | #define jbd2_journal_init_inode journal_init_inode | ||
| 45 | #define jbd2_journal_invalidatepage journal_invalidatepage | ||
| 46 | #define jbd2_journal_load journal_load | ||
| 47 | #define jbd2_journal_lock_updates journal_lock_updates | ||
| 48 | #define jbd2_journal_restart journal_restart | ||
| 49 | #define jbd2_journal_start journal_start | ||
| 50 | #define jbd2_journal_start_commit journal_start_commit | ||
| 51 | #define jbd2_journal_stop journal_stop | ||
| 52 | #define jbd2_journal_try_to_free_buffers journal_try_to_free_buffers | ||
| 53 | #define jbd2_journal_unlock_updates journal_unlock_updates | ||
| 54 | #define jbd2_journal_wipe journal_wipe | ||
| 55 | #define jbd2_log_wait_commit log_wait_commit | ||
| 56 | |||
| 57 | static inline int jbd2_journal_file_inode(handle_t *handle, | ||
| 58 | struct jbd2_inode *inode) | ||
| 59 | { | ||
| 60 | return 0; | ||
| 61 | } | ||
| 62 | |||
| 63 | static inline int jbd2_journal_begin_ordered_truncate(struct jbd2_inode *inode, | ||
| 64 | loff_t new_size) | ||
| 65 | { | ||
| 66 | return 0; | ||
| 67 | } | ||
| 68 | |||
| 69 | static inline void jbd2_journal_init_jbd_inode(struct jbd2_inode *jinode, | ||
| 70 | struct inode *inode) | ||
| 71 | { | ||
| 72 | return; | ||
| 73 | } | ||
| 74 | |||
| 75 | static inline void jbd2_journal_release_jbd_inode(journal_t *journal, | ||
| 76 | struct jbd2_inode *jinode) | ||
| 77 | { | ||
| 78 | return; | ||
| 79 | } | ||
| 80 | |||
| 81 | |||
| 82 | #endif /* OCFS2_JBD_COMPAT_H */ | ||
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 1a51c8c53bef..8b4c5c67dcd4 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c | |||
| @@ -212,10 +212,11 @@ static int ocfs2_sync_fs(struct super_block *sb, int wait) | |||
| 212 | ocfs2_schedule_truncate_log_flush(osb, 0); | 212 | ocfs2_schedule_truncate_log_flush(osb, 0); |
| 213 | } | 213 | } |
| 214 | 214 | ||
| 215 | if (journal_start_commit(OCFS2_SB(sb)->journal->j_journal, &target)) { | 215 | if (jbd2_journal_start_commit(OCFS2_SB(sb)->journal->j_journal, |
| 216 | &target)) { | ||
| 216 | if (wait) | 217 | if (wait) |
| 217 | log_wait_commit(OCFS2_SB(sb)->journal->j_journal, | 218 | jbd2_log_wait_commit(OCFS2_SB(sb)->journal->j_journal, |
| 218 | target); | 219 | target); |
| 219 | } | 220 | } |
| 220 | return 0; | 221 | return 0; |
| 221 | } | 222 | } |
| @@ -332,6 +333,7 @@ static struct inode *ocfs2_alloc_inode(struct super_block *sb) | |||
| 332 | if (!oi) | 333 | if (!oi) |
| 333 | return NULL; | 334 | return NULL; |
| 334 | 335 | ||
| 336 | jbd2_journal_init_jbd_inode(&oi->ip_jinode, &oi->vfs_inode); | ||
| 335 | return &oi->vfs_inode; | 337 | return &oi->vfs_inode; |
| 336 | } | 338 | } |
| 337 | 339 | ||
| @@ -896,7 +898,7 @@ static int ocfs2_parse_options(struct super_block *sb, | |||
| 896 | if (option < 0) | 898 | if (option < 0) |
| 897 | return 0; | 899 | return 0; |
| 898 | if (option == 0) | 900 | if (option == 0) |
| 899 | option = JBD_DEFAULT_MAX_COMMIT_AGE; | 901 | option = JBD2_DEFAULT_MAX_COMMIT_AGE; |
| 900 | mopt->commit_interval = HZ * option; | 902 | mopt->commit_interval = HZ * option; |
| 901 | break; | 903 | break; |
| 902 | case Opt_localalloc: | 904 | case Opt_localalloc: |
diff --git a/fs/ocfs2/uptodate.c b/fs/ocfs2/uptodate.c index e26459e7d554..523514020891 100644 --- a/fs/ocfs2/uptodate.c +++ b/fs/ocfs2/uptodate.c | |||
| @@ -53,7 +53,11 @@ | |||
| 53 | #include <linux/highmem.h> | 53 | #include <linux/highmem.h> |
| 54 | #include <linux/buffer_head.h> | 54 | #include <linux/buffer_head.h> |
| 55 | #include <linux/rbtree.h> | 55 | #include <linux/rbtree.h> |
| 56 | #include <linux/jbd.h> | 56 | #ifndef CONFIG_OCFS2_COMPAT_JBD |
| 57 | # include <linux/jbd2.h> | ||
| 58 | #else | ||
| 59 | # include <linux/jbd.h> | ||
| 60 | #endif | ||
| 57 | 61 | ||
| 58 | #define MLOG_MASK_PREFIX ML_UPTODATE | 62 | #define MLOG_MASK_PREFIX ML_UPTODATE |
| 59 | 63 | ||
