Hi, int journal_dirty_data(handle_t *handle, struct buffer_head *bh) { .................. .................. /* * This buffer may be undergoing writeout in commit. We * can't return from here and let the caller dirty it * again because that can cause the write-out loop in * commit to never terminate. */ if (buffer_dirty(bh)) { get_bh(bh); spin_unlock(&journal->j_list_lock); jbd_unlock_bh_state(bh); need_brelse = 1; sync_dirty_buffer(bh); jbd_lock_bh_state(bh); spin_lock(&journal->j_list_lock); /* The buffer may become locked again at any time if it is redirtied */ } .............................. .............................. } Can any body please explain how returning from the above function cause write-out loop in commit to never terminate ? If the current buffer is in the data_sync list of previous commiting transaction, after returning from the journal_dirty_data, generic_commit_write will redirty the buffer even though previous commiting transaction commits the buffer to disk. Correct ? -Ratna. - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html