ext4: do not start new transaction if there is one in use.
authorngkaho1234 <ngkaho1234@gmail.com>
Fri, 25 Dec 2015 09:14:21 +0000 (17:14 +0800)
committergkostka <kostka.grzegorz@gmail.com>
Tue, 29 Dec 2015 09:41:40 +0000 (10:41 +0100)
lwext4/ext4.c

index d3c5c35685481a7bd09e96763dacce8424fcde88..56013d2f2f95373de0f9ce28d1b5f5891205305c 100644 (file)
@@ -558,7 +558,7 @@ Finish:
 int ext4_trans_start(struct ext4_mountpoint *mp)
 {
        int r = EOK;
-       if (mp->fs.jbd_journal) {
+       if (mp->fs.jbd_journal && !mp->fs.curr_trans) {
                struct jbd_journal *journal = mp->fs.jbd_journal;
                struct jbd_trans *trans;
                trans = jbd_journal_new_trans(journal);
@@ -575,7 +575,7 @@ Finish:
 int ext4_trans_stop(struct ext4_mountpoint *mp)
 {
        int r = EOK;
-       if (mp->fs.jbd_journal) {
+       if (mp->fs.jbd_journal && mp->fs.curr_trans) {
                struct jbd_journal *journal = mp->fs.jbd_journal;
                struct jbd_trans *trans = mp->fs.curr_trans;
                r = jbd_journal_commit_trans(journal, trans);
@@ -587,7 +587,7 @@ int ext4_trans_stop(struct ext4_mountpoint *mp)
 int ext4_trans_abort(struct ext4_mountpoint *mp)
 {
        int r = EOK;
-       if (mp->fs.jbd_journal) {
+       if (mp->fs.jbd_journal && mp->fs.curr_trans) {
                struct jbd_journal *journal = mp->fs.jbd_journal;
                struct jbd_trans *trans = mp->fs.curr_trans;
                r = jbd_journal_commit_trans(journal, trans);