diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-01 14:54:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-08-01 14:54:05 -0400 |
commit | 63a16f90167850010864a9e8ebb71d216983090f (patch) | |
tree | c4b284cc596421ac8100e0ad3b2f56ead4563d2d /fs/ocfs2/super.c | |
parent | 5adf2b03d97111c8955495ba11e8b7db27df8695 (diff) | |
parent | c259ae52e204d42f8b2d484c85517a4c367030e1 (diff) |
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2:
[PATCH] ocfs2: Release mutex in error handling code
[PATCH] ocfs2: Fix oops when racing files truncates with writes into an mmap region
[PATCH 2/2] ocfs2: Fix race between mount and recovery
[PATCH 1/2] ocfs2: Add counter in struct ocfs2_dinode to track journal replays
[PATCH] configfs: Convenience macros for attribute definition.
[PATCH] configfs: Pin configfs subsystems separately from new config_items.
[PATCH] configfs: Fix open directory making rmdir() fail
[PATCH] configfs: Lock new directory inodes before removing on cleanup after failure
[PATCH] configfs: Prevent userspace from creating new entries under attaching directories
[PATCH] configfs: Fix failing symlink() making rmdir() fail
[PATCH] configfs: Fix symlink() to a removing item
[PATCH] configfs: Include linux/err.h in linux/configfs.h
Diffstat (limited to 'fs/ocfs2/super.c')
-rw-r--r-- | fs/ocfs2/super.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 2560b33889aa..88255d3f52b4 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c | |||
@@ -1442,6 +1442,15 @@ static int ocfs2_initialize_super(struct super_block *sb, | |||
1442 | } | 1442 | } |
1443 | mlog(0, "max_slots for this device: %u\n", osb->max_slots); | 1443 | mlog(0, "max_slots for this device: %u\n", osb->max_slots); |
1444 | 1444 | ||
1445 | osb->slot_recovery_generations = | ||
1446 | kcalloc(osb->max_slots, sizeof(*osb->slot_recovery_generations), | ||
1447 | GFP_KERNEL); | ||
1448 | if (!osb->slot_recovery_generations) { | ||
1449 | status = -ENOMEM; | ||
1450 | mlog_errno(status); | ||
1451 | goto bail; | ||
1452 | } | ||
1453 | |||
1445 | init_waitqueue_head(&osb->osb_wipe_event); | 1454 | init_waitqueue_head(&osb->osb_wipe_event); |
1446 | osb->osb_orphan_wipes = kcalloc(osb->max_slots, | 1455 | osb->osb_orphan_wipes = kcalloc(osb->max_slots, |
1447 | sizeof(*osb->osb_orphan_wipes), | 1456 | sizeof(*osb->osb_orphan_wipes), |
@@ -1703,7 +1712,7 @@ static int ocfs2_check_volume(struct ocfs2_super *osb) | |||
1703 | local = ocfs2_mount_local(osb); | 1712 | local = ocfs2_mount_local(osb); |
1704 | 1713 | ||
1705 | /* will play back anything left in the journal. */ | 1714 | /* will play back anything left in the journal. */ |
1706 | status = ocfs2_journal_load(osb->journal, local); | 1715 | status = ocfs2_journal_load(osb->journal, local, dirty); |
1707 | if (status < 0) { | 1716 | if (status < 0) { |
1708 | mlog(ML_ERROR, "ocfs2 journal load failed! %d\n", status); | 1717 | mlog(ML_ERROR, "ocfs2 journal load failed! %d\n", status); |
1709 | goto finally; | 1718 | goto finally; |
@@ -1768,6 +1777,7 @@ static void ocfs2_delete_osb(struct ocfs2_super *osb) | |||
1768 | ocfs2_free_slot_info(osb); | 1777 | ocfs2_free_slot_info(osb); |
1769 | 1778 | ||
1770 | kfree(osb->osb_orphan_wipes); | 1779 | kfree(osb->osb_orphan_wipes); |
1780 | kfree(osb->slot_recovery_generations); | ||
1771 | /* FIXME | 1781 | /* FIXME |
1772 | * This belongs in journal shutdown, but because we have to | 1782 | * This belongs in journal shutdown, but because we have to |
1773 | * allocate osb->journal at the start of ocfs2_initalize_osb(), | 1783 | * allocate osb->journal at the start of ocfs2_initalize_osb(), |