Commit 215211de authored by Dave Kleikamp's avatar Dave Kleikamp

JFS: Support sharing of journal by multiple volumes

parent db8d295b
/*
* Copyright (c) International Business Machines Corp., 2000-2003
* Portions Copyright (c) Christoph Hellwig, 2001-2002
* Copyright (C) International Business Machines Corp., 2000-2004
* Portions Copyright (C) Christoph Hellwig, 2001-2002
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -133,12 +133,14 @@ enum cflags {
* JFS-private superblock information.
*/
struct jfs_sb_info {
struct super_block *sb; /* Point back to vfs super block */
unsigned long mntflag; /* aggregate attributes */
struct inode *ipbmap; /* block map inode */
struct inode *ipaimap; /* aggregate inode map inode */
struct inode *ipaimap2; /* secondary aimap inode */
struct inode *ipimap; /* aggregate inode map inode */
struct jfs_log *log; /* log */
struct list_head log_list; /* volumes associated with a journal */
short bsize; /* logical block size */
short l2bsize; /* log2 logical block size */
short nbperpage; /* blocks per page */
......
This diff is collapsed.
/*
* Copyright (c) International Business Machines Corp., 2000-2003
* Portions Copyright (c) Christoph Hellwig, 2001-2002
* Copyright (C) International Business Machines Corp., 2000-2004
* Portions Copyright (C) Christoph Hellwig, 2001-2002
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -367,11 +367,10 @@ struct lvd {
*/
struct jfs_log {
struct super_block *sb; /* 4: This is used to sync metadata
* before writing syncpt. Will
* need to be a list if we share
* the log between fs's
struct list_head sb_list;/* This is used to sync metadata
* before writing syncpt.
*/
struct list_head journal_list; /* Global list */
struct block_device *bdev; /* 4: log lv pointer */
s32 serial; /* 4: log mount serial number */
......@@ -419,8 +418,6 @@ struct jfs_log {
char uuid[16]; /* 16: 128-bit uuid of log device */
int no_integrity; /* 3: flag to disable journaling to disk */
int ni_page; /* 4: backup of page for nointegrity option */
int ni_eor; /* 4: backup of eor for nointegrity option */
};
/*
......@@ -506,8 +503,8 @@ struct logsyncblk {
diff += (log)->logsize;\
}
extern int lmLogOpen(struct super_block *sb, struct jfs_log ** log);
extern int lmLogClose(struct super_block *sb, struct jfs_log * log);
extern int lmLogOpen(struct super_block *sb);
extern int lmLogClose(struct super_block *sb);
extern int lmLogSync(struct jfs_log * log, int nosyncwait);
extern int lmLogShutdown(struct jfs_log * log);
extern int lmLogInit(struct jfs_log * log);
......
/*
* Copyright (c) International Business Machines Corp., 2000-2003
* Copyright (C) International Business Machines Corp., 2000-2004
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -242,7 +242,6 @@ int jfs_mount(struct super_block *sb)
int jfs_mount_rw(struct super_block *sb, int remount)
{
struct jfs_sb_info *sbi = JFS_SBI(sb);
struct jfs_log *log;
int rc;
/*
......@@ -272,18 +271,15 @@ int jfs_mount_rw(struct super_block *sb, int remount)
/*
* open/initialize log
*/
if ((rc = lmLogOpen(sb, &log)))
if ((rc = lmLogOpen(sb)))
return rc;
JFS_SBI(sb)->log = log;
/*
* update file system superblock;
*/
if ((rc = updateSuper(sb, FM_MOUNT))) {
jfs_err("jfs_mount: updateSuper failed w/rc = %d", rc);
lmLogClose(sb, log);
JFS_SBI(sb)->log = 0;
lmLogClose(sb);
return rc;
}
......
/*
* Copyright (C) International Business Machines Corp., 2000-2003
* Copyright (C) International Business Machines Corp., 2000-2004
* Portions Copyright (C) Christoph Hellwig, 2001-2002
*
* This program is free software; you can redistribute it and/or modify
......@@ -1354,7 +1354,7 @@ static int txLog(struct jfs_log * log, struct tblock * tblk, struct commit * cd)
/* initialize lrd common */
ip = tlck->ip;
lrd->aggregate = cpu_to_le32(new_encode_dev(ip->i_sb->s_bdev->bd_dev));
lrd->aggregate = cpu_to_le32(JFS_SBI(ip->i_sb)->aggregate);
lrd->log.redopage.fileset = cpu_to_le32(JFS_IP(ip)->fileset);
lrd->log.redopage.inode = cpu_to_le32(ip->i_ino);
......
/*
* Copyright (c) International Business Machines Corp., 2000-2002
* Copyright (C) International Business Machines Corp., 2000-2004
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -128,7 +128,7 @@ int jfs_umount(struct super_block *sb)
*
* remove file system from log active file system list.
*/
rc = lmLogClose(sb, log);
rc = lmLogClose(sb);
}
jfs_info("UnMount JFS Complete: rc = %d", rc);
return rc;
......@@ -167,7 +167,6 @@ int jfs_umount_rw(struct super_block *sb)
filemap_fdatawait(bdev_mapping);
updateSuper(sb, FM_CLEAN);
sbi->log = NULL;
return lmLogClose(sb, log);
return lmLogClose(sb);
}
......@@ -381,6 +381,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
return -ENOSPC;
memset(sbi, 0, sizeof (struct jfs_sb_info));
sb->s_fs_info = sbi;
sbi->sb = sb;
/* initialize the mount flag and determine the default error handler */
flag = JFS_ERR_REMOUNT_RO;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment