A couple jfs bug fixes for 3.10-rc5
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (GNU/Linux) iQIcBAABAgAGBQJRrLmSAAoJEDaohF61QIxkakoP/jo8fo2KaixVHRag1h7pBwVG 7UJrgYmojoFUsmem+k34rXOzwc8eqv5BzTwGJe81ktatUjPkEQELdwryB4Rw6YYI F8/Mrc2AjHEavuTnojmENP22+YkPOW90r+k00dVk+cY9FQsc1/AhNYtzpVg9hSRX RBhGcgfnQQCAlIf09vr7R19oBLiHfrFNnUYJeUg/d0bxW8uiTimX7ENDTOtn61WF hLEABnL2tC0UtK3z/B0qNIpDE5DHHaLo8WcGjlXE3Pte4JA2rPDJwaHaUgvCEo6R iYCw5Dq6bL7Ce7wMP1GzY+LHgaeUg5Nknnkl5vEKZSZuy7dfC2eBlYbziqyJm73A 0e7UgypkaNGa4p4MzM0J5OW+4bRRPzNir99BnpU8Bm6dJTY8ZeIMTTQFX2Fla8+G SCo6dMjEUfF+yIykDwmeZYjHl5XeKM6B3imoJ8+yD9vZLzg6MY4SUmgPEKL7BFoi U4aiID6N67LYAMb5vapzpcl+uHZbrw7CBnI2FanqdsAoPjath1CgrEvseBAUowpy EUeCLaQ05xR8ynm44tQCPQFgqBpRxAiVtpy9nPulA3cQCbwelEuLKrZB17DBfK9i w7f5e8nNG8gXfRuL5idGzS7g6Hp90JUhBWKh0dJC820OM7idWnXGCLbYTm7t6pvo m931/xUofSsXCLNwEo88 =JZIK -----END PGP SIGNATURE----- Merge tag 'jfs-3.10-rc5' of git://github.com/kleikamp/linux-shaggy Pull jfs bugfixes from David Kleikamp: "A couple jfs bug fixes for 3.10-rc5" * tag 'jfs-3.10-rc5' of git://github.com/kleikamp/linux-shaggy: fs/jfs: Add check if journaling to disk has been disabled in lbmRead() jfs: Several bugs in jfs_freeze() and jfs_unfreeze()
This commit is contained in:
commit
0ab60871b4
2 changed files with 37 additions and 9 deletions
|
@ -2009,7 +2009,13 @@ static int lbmRead(struct jfs_log * log, int pn, struct lbuf ** bpp)
|
|||
|
||||
bio->bi_end_io = lbmIODone;
|
||||
bio->bi_private = bp;
|
||||
submit_bio(READ_SYNC, bio);
|
||||
/*check if journaling to disk has been disabled*/
|
||||
if (log->no_integrity) {
|
||||
bio->bi_size = 0;
|
||||
lbmIODone(bio, 0);
|
||||
} else {
|
||||
submit_bio(READ_SYNC, bio);
|
||||
}
|
||||
|
||||
wait_event(bp->l_ioevent, (bp->l_flag != lbmREAD));
|
||||
|
||||
|
|
|
@ -611,11 +611,28 @@ static int jfs_freeze(struct super_block *sb)
|
|||
{
|
||||
struct jfs_sb_info *sbi = JFS_SBI(sb);
|
||||
struct jfs_log *log = sbi->log;
|
||||
int rc = 0;
|
||||
|
||||
if (!(sb->s_flags & MS_RDONLY)) {
|
||||
txQuiesce(sb);
|
||||
lmLogShutdown(log);
|
||||
updateSuper(sb, FM_CLEAN);
|
||||
rc = lmLogShutdown(log);
|
||||
if (rc) {
|
||||
jfs_error(sb, "jfs_freeze: lmLogShutdown failed");
|
||||
|
||||
/* let operations fail rather than hang */
|
||||
txResume(sb);
|
||||
|
||||
return rc;
|
||||
}
|
||||
rc = updateSuper(sb, FM_CLEAN);
|
||||
if (rc) {
|
||||
jfs_err("jfs_freeze: updateSuper failed\n");
|
||||
/*
|
||||
* Don't fail here. Everything succeeded except
|
||||
* marking the superblock clean, so there's really
|
||||
* no harm in leaving it frozen for now.
|
||||
*/
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -627,13 +644,18 @@ static int jfs_unfreeze(struct super_block *sb)
|
|||
int rc = 0;
|
||||
|
||||
if (!(sb->s_flags & MS_RDONLY)) {
|
||||
updateSuper(sb, FM_MOUNT);
|
||||
if ((rc = lmLogInit(log)))
|
||||
jfs_err("jfs_unlock failed with return code %d", rc);
|
||||
else
|
||||
txResume(sb);
|
||||
rc = updateSuper(sb, FM_MOUNT);
|
||||
if (rc) {
|
||||
jfs_error(sb, "jfs_unfreeze: updateSuper failed");
|
||||
goto out;
|
||||
}
|
||||
rc = lmLogInit(log);
|
||||
if (rc)
|
||||
jfs_error(sb, "jfs_unfreeze: lmLogInit failed");
|
||||
out:
|
||||
txResume(sb);
|
||||
}
|
||||
return 0;
|
||||
return rc;
|
||||
}
|
||||
|
||||
static struct dentry *jfs_do_mount(struct file_system_type *fs_type,
|
||||
|
|
Loading…
Add table
Reference in a new issue