Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ab60871 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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()
parents aa4f6084 95bbb82f
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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;
	/*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));

+30 −8
Original line number Diff line number Diff line
@@ -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
		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,