A final set of miscellaneous bug fixes for ext4
-----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEK2m5VNv+CHkogTfJ8vlZVpUNgaMFAl+6tkoACgkQ8vlZVpUN gaO1xgf/aJ5chEWFEQVrdSdd+cvhuILz1Hp2iW8xdZgPeN2ovWIC3LPCTDr9FWB0 MhpGS9avYIf8mHZgsw7HVzqUv6gPcT0khragPp348QJzxnbz/saZ5ujK/WR2zJxr SoB9f2vdqW0gBbKMO6avXm0gTnuNemcK5oH6tzI5ECBpV3Ltk1dJWtgQkVp9rAyP EFEb9hUYpdZ3J1cm8SCUIO99Tu2KMd+yNRv42z0BKNTfBNe2P5aG56p1sMYMcIr7 BiVUrhPkbAf3gMsMDzZQE5mHZHyzJoHNHssLHWcEU/o9Wd2wZHjAEzzn9Tz49rUg yhYTrhLcQJcfmL0XvgrIhJaXTfMc6w== =s/1A -----END PGP SIGNATURE----- Merge tag 'ext4_for_linus_fixes2' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 Pull ext4 fixes from Ted Ts'o: "A final set of miscellaneous bug fixes for ext4" * tag 'ext4_for_linus_fixes2' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: ext4: fix bogus warning in ext4_update_dx_flag() jbd2: fix kernel-doc markups ext4: drop fast_commit from /proc/mounts
This commit is contained in:
commit
a7f07fc14f
@ -2695,7 +2695,8 @@ void ext4_insert_dentry(struct inode *inode,
|
|||||||
struct ext4_filename *fname);
|
struct ext4_filename *fname);
|
||||||
static inline void ext4_update_dx_flag(struct inode *inode)
|
static inline void ext4_update_dx_flag(struct inode *inode)
|
||||||
{
|
{
|
||||||
if (!ext4_has_feature_dir_index(inode->i_sb)) {
|
if (!ext4_has_feature_dir_index(inode->i_sb) &&
|
||||||
|
ext4_test_inode_flag(inode, EXT4_INODE_INDEX)) {
|
||||||
/* ext4_iget() should have caught this... */
|
/* ext4_iget() should have caught this... */
|
||||||
WARN_ON_ONCE(ext4_has_feature_metadata_csum(inode->i_sb));
|
WARN_ON_ONCE(ext4_has_feature_metadata_csum(inode->i_sb));
|
||||||
ext4_clear_inode_flag(inode, EXT4_INODE_INDEX);
|
ext4_clear_inode_flag(inode, EXT4_INODE_INDEX);
|
||||||
|
@ -2638,10 +2638,6 @@ static int _ext4_show_options(struct seq_file *seq, struct super_block *sb,
|
|||||||
} else if (test_opt2(sb, DAX_INODE)) {
|
} else if (test_opt2(sb, DAX_INODE)) {
|
||||||
SEQ_OPTS_PUTS("dax=inode");
|
SEQ_OPTS_PUTS("dax=inode");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (test_opt2(sb, JOURNAL_FAST_COMMIT))
|
|
||||||
SEQ_OPTS_PUTS("fast_commit");
|
|
||||||
|
|
||||||
ext4_show_quota_options(seq, sb);
|
ext4_show_quota_options(seq, sb);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -566,12 +566,14 @@ static int __jbd2_journal_force_commit(journal_t *journal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Force and wait upon a commit if the calling process is not within
|
* jbd2_journal_force_commit_nested - Force and wait upon a commit if the
|
||||||
* transaction. This is used for forcing out undo-protected data which contains
|
* calling process is not within transaction.
|
||||||
* bitmaps, when the fs is running out of space.
|
|
||||||
*
|
*
|
||||||
* @journal: journal to force
|
* @journal: journal to force
|
||||||
* Returns true if progress was made.
|
* Returns true if progress was made.
|
||||||
|
*
|
||||||
|
* This is used for forcing out undo-protected data which contains
|
||||||
|
* bitmaps, when the fs is running out of space.
|
||||||
*/
|
*/
|
||||||
int jbd2_journal_force_commit_nested(journal_t *journal)
|
int jbd2_journal_force_commit_nested(journal_t *journal)
|
||||||
{
|
{
|
||||||
@ -582,7 +584,7 @@ int jbd2_journal_force_commit_nested(journal_t *journal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int journal_force_commit() - force any uncommitted transactions
|
* jbd2_journal_force_commit() - force any uncommitted transactions
|
||||||
* @journal: journal to force
|
* @journal: journal to force
|
||||||
*
|
*
|
||||||
* Caller want unconditional commit. We can only force the running transaction
|
* Caller want unconditional commit. We can only force the running transaction
|
||||||
@ -1881,7 +1883,7 @@ static int load_superblock(journal_t *journal)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_load() - Read journal from disk.
|
* jbd2_journal_load() - Read journal from disk.
|
||||||
* @journal: Journal to act on.
|
* @journal: Journal to act on.
|
||||||
*
|
*
|
||||||
* Given a journal_t structure which tells us which disk blocks contain
|
* Given a journal_t structure which tells us which disk blocks contain
|
||||||
@ -1951,7 +1953,7 @@ recovery_error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_destroy() - Release a journal_t structure.
|
* jbd2_journal_destroy() - Release a journal_t structure.
|
||||||
* @journal: Journal to act on.
|
* @journal: Journal to act on.
|
||||||
*
|
*
|
||||||
* Release a journal_t structure once it is no longer in use by the
|
* Release a journal_t structure once it is no longer in use by the
|
||||||
@ -2028,7 +2030,7 @@ int jbd2_journal_destroy(journal_t *journal)
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*int jbd2_journal_check_used_features() - Check if features specified are used.
|
* jbd2_journal_check_used_features() - Check if features specified are used.
|
||||||
* @journal: Journal to check.
|
* @journal: Journal to check.
|
||||||
* @compat: bitmask of compatible features
|
* @compat: bitmask of compatible features
|
||||||
* @ro: bitmask of features that force read-only mount
|
* @ro: bitmask of features that force read-only mount
|
||||||
@ -2063,7 +2065,7 @@ int jbd2_journal_check_used_features(journal_t *journal, unsigned long compat,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_check_available_features() - Check feature set in journalling layer
|
* jbd2_journal_check_available_features() - Check feature set in journalling layer
|
||||||
* @journal: Journal to check.
|
* @journal: Journal to check.
|
||||||
* @compat: bitmask of compatible features
|
* @compat: bitmask of compatible features
|
||||||
* @ro: bitmask of features that force read-only mount
|
* @ro: bitmask of features that force read-only mount
|
||||||
@ -2126,7 +2128,7 @@ jbd2_journal_initialize_fast_commit(journal_t *journal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_set_features() - Mark a given journal feature in the superblock
|
* jbd2_journal_set_features() - Mark a given journal feature in the superblock
|
||||||
* @journal: Journal to act on.
|
* @journal: Journal to act on.
|
||||||
* @compat: bitmask of compatible features
|
* @compat: bitmask of compatible features
|
||||||
* @ro: bitmask of features that force read-only mount
|
* @ro: bitmask of features that force read-only mount
|
||||||
@ -2246,7 +2248,7 @@ void jbd2_journal_clear_features(journal_t *journal, unsigned long compat,
|
|||||||
EXPORT_SYMBOL(jbd2_journal_clear_features);
|
EXPORT_SYMBOL(jbd2_journal_clear_features);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_flush () - Flush journal
|
* jbd2_journal_flush() - Flush journal
|
||||||
* @journal: Journal to act on.
|
* @journal: Journal to act on.
|
||||||
*
|
*
|
||||||
* Flush all data for a given journal to disk and empty the journal.
|
* Flush all data for a given journal to disk and empty the journal.
|
||||||
@ -2321,7 +2323,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_wipe() - Wipe journal contents
|
* jbd2_journal_wipe() - Wipe journal contents
|
||||||
* @journal: Journal to act on.
|
* @journal: Journal to act on.
|
||||||
* @write: flag (see below)
|
* @write: flag (see below)
|
||||||
*
|
*
|
||||||
@ -2362,7 +2364,7 @@ int jbd2_journal_wipe(journal_t *journal, int write)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_abort () - Shutdown the journal immediately.
|
* jbd2_journal_abort () - Shutdown the journal immediately.
|
||||||
* @journal: the journal to shutdown.
|
* @journal: the journal to shutdown.
|
||||||
* @errno: an error number to record in the journal indicating
|
* @errno: an error number to record in the journal indicating
|
||||||
* the reason for the shutdown.
|
* the reason for the shutdown.
|
||||||
@ -2453,7 +2455,7 @@ void jbd2_journal_abort(journal_t *journal, int errno)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_errno () - returns the journal's error state.
|
* jbd2_journal_errno() - returns the journal's error state.
|
||||||
* @journal: journal to examine.
|
* @journal: journal to examine.
|
||||||
*
|
*
|
||||||
* This is the errno number set with jbd2_journal_abort(), the last
|
* This is the errno number set with jbd2_journal_abort(), the last
|
||||||
@ -2477,7 +2479,7 @@ int jbd2_journal_errno(journal_t *journal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_clear_err () - clears the journal's error state
|
* jbd2_journal_clear_err() - clears the journal's error state
|
||||||
* @journal: journal to act on.
|
* @journal: journal to act on.
|
||||||
*
|
*
|
||||||
* An error must be cleared or acked to take a FS out of readonly
|
* An error must be cleared or acked to take a FS out of readonly
|
||||||
@ -2497,7 +2499,7 @@ int jbd2_journal_clear_err(journal_t *journal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_ack_err() - Ack journal err.
|
* jbd2_journal_ack_err() - Ack journal err.
|
||||||
* @journal: journal to act on.
|
* @journal: journal to act on.
|
||||||
*
|
*
|
||||||
* An error must be cleared or acked to take a FS out of readonly
|
* An error must be cleared or acked to take a FS out of readonly
|
||||||
|
@ -519,7 +519,7 @@ EXPORT_SYMBOL(jbd2__journal_start);
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* handle_t *jbd2_journal_start() - Obtain a new handle.
|
* jbd2_journal_start() - Obtain a new handle.
|
||||||
* @journal: Journal to start transaction on.
|
* @journal: Journal to start transaction on.
|
||||||
* @nblocks: number of block buffer we might modify
|
* @nblocks: number of block buffer we might modify
|
||||||
*
|
*
|
||||||
@ -566,7 +566,7 @@ void jbd2_journal_free_reserved(handle_t *handle)
|
|||||||
EXPORT_SYMBOL(jbd2_journal_free_reserved);
|
EXPORT_SYMBOL(jbd2_journal_free_reserved);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_start_reserved() - start reserved handle
|
* jbd2_journal_start_reserved() - start reserved handle
|
||||||
* @handle: handle to start
|
* @handle: handle to start
|
||||||
* @type: for handle statistics
|
* @type: for handle statistics
|
||||||
* @line_no: for handle statistics
|
* @line_no: for handle statistics
|
||||||
@ -620,7 +620,7 @@ int jbd2_journal_start_reserved(handle_t *handle, unsigned int type,
|
|||||||
EXPORT_SYMBOL(jbd2_journal_start_reserved);
|
EXPORT_SYMBOL(jbd2_journal_start_reserved);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_extend() - extend buffer credits.
|
* jbd2_journal_extend() - extend buffer credits.
|
||||||
* @handle: handle to 'extend'
|
* @handle: handle to 'extend'
|
||||||
* @nblocks: nr blocks to try to extend by.
|
* @nblocks: nr blocks to try to extend by.
|
||||||
* @revoke_records: number of revoke records to try to extend by.
|
* @revoke_records: number of revoke records to try to extend by.
|
||||||
@ -745,7 +745,7 @@ static void stop_this_handle(handle_t *handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_restart() - restart a handle .
|
* jbd2__journal_restart() - restart a handle .
|
||||||
* @handle: handle to restart
|
* @handle: handle to restart
|
||||||
* @nblocks: nr credits requested
|
* @nblocks: nr credits requested
|
||||||
* @revoke_records: number of revoke record credits requested
|
* @revoke_records: number of revoke record credits requested
|
||||||
@ -815,7 +815,7 @@ int jbd2_journal_restart(handle_t *handle, int nblocks)
|
|||||||
EXPORT_SYMBOL(jbd2_journal_restart);
|
EXPORT_SYMBOL(jbd2_journal_restart);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_lock_updates () - establish a transaction barrier.
|
* jbd2_journal_lock_updates () - establish a transaction barrier.
|
||||||
* @journal: Journal to establish a barrier on.
|
* @journal: Journal to establish a barrier on.
|
||||||
*
|
*
|
||||||
* This locks out any further updates from being started, and blocks
|
* This locks out any further updates from being started, and blocks
|
||||||
@ -874,7 +874,7 @@ void jbd2_journal_lock_updates(journal_t *journal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_unlock_updates (journal_t* journal) - release barrier
|
* jbd2_journal_unlock_updates () - release barrier
|
||||||
* @journal: Journal to release the barrier on.
|
* @journal: Journal to release the barrier on.
|
||||||
*
|
*
|
||||||
* Release a transaction barrier obtained with jbd2_journal_lock_updates().
|
* Release a transaction barrier obtained with jbd2_journal_lock_updates().
|
||||||
@ -1182,7 +1182,8 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_get_write_access() - notify intent to modify a buffer for metadata (not data) update.
|
* jbd2_journal_get_write_access() - notify intent to modify a buffer
|
||||||
|
* for metadata (not data) update.
|
||||||
* @handle: transaction to add buffer modifications to
|
* @handle: transaction to add buffer modifications to
|
||||||
* @bh: bh to be used for metadata writes
|
* @bh: bh to be used for metadata writes
|
||||||
*
|
*
|
||||||
@ -1226,7 +1227,7 @@ int jbd2_journal_get_write_access(handle_t *handle, struct buffer_head *bh)
|
|||||||
* unlocked buffer beforehand. */
|
* unlocked buffer beforehand. */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_get_create_access () - notify intent to use newly created bh
|
* jbd2_journal_get_create_access () - notify intent to use newly created bh
|
||||||
* @handle: transaction to new buffer to
|
* @handle: transaction to new buffer to
|
||||||
* @bh: new buffer.
|
* @bh: new buffer.
|
||||||
*
|
*
|
||||||
@ -1306,7 +1307,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_get_undo_access() - Notify intent to modify metadata with
|
* jbd2_journal_get_undo_access() - Notify intent to modify metadata with
|
||||||
* non-rewindable consequences
|
* non-rewindable consequences
|
||||||
* @handle: transaction
|
* @handle: transaction
|
||||||
* @bh: buffer to undo
|
* @bh: buffer to undo
|
||||||
@ -1383,7 +1384,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_set_triggers() - Add triggers for commit writeout
|
* jbd2_journal_set_triggers() - Add triggers for commit writeout
|
||||||
* @bh: buffer to trigger on
|
* @bh: buffer to trigger on
|
||||||
* @type: struct jbd2_buffer_trigger_type containing the trigger(s).
|
* @type: struct jbd2_buffer_trigger_type containing the trigger(s).
|
||||||
*
|
*
|
||||||
@ -1425,7 +1426,7 @@ void jbd2_buffer_abort_trigger(struct journal_head *jh,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_dirty_metadata() - mark a buffer as containing dirty metadata
|
* jbd2_journal_dirty_metadata() - mark a buffer as containing dirty metadata
|
||||||
* @handle: transaction to add buffer to.
|
* @handle: transaction to add buffer to.
|
||||||
* @bh: buffer to mark
|
* @bh: buffer to mark
|
||||||
*
|
*
|
||||||
@ -1593,7 +1594,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_forget() - bforget() for potentially-journaled buffers.
|
* jbd2_journal_forget() - bforget() for potentially-journaled buffers.
|
||||||
* @handle: transaction handle
|
* @handle: transaction handle
|
||||||
* @bh: bh to 'forget'
|
* @bh: bh to 'forget'
|
||||||
*
|
*
|
||||||
@ -1762,7 +1763,7 @@ drop:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_stop() - complete a transaction
|
* jbd2_journal_stop() - complete a transaction
|
||||||
* @handle: transaction to complete.
|
* @handle: transaction to complete.
|
||||||
*
|
*
|
||||||
* All done for a particular handle.
|
* All done for a particular handle.
|
||||||
@ -2080,7 +2081,7 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* int jbd2_journal_try_to_free_buffers() - try to free page buffers.
|
* jbd2_journal_try_to_free_buffers() - try to free page buffers.
|
||||||
* @journal: journal for operation
|
* @journal: journal for operation
|
||||||
* @page: to try and free
|
* @page: to try and free
|
||||||
*
|
*
|
||||||
@ -2411,7 +2412,7 @@ zap_buffer_unlocked:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* void jbd2_journal_invalidatepage()
|
* jbd2_journal_invalidatepage()
|
||||||
* @journal: journal to use for flush...
|
* @journal: journal to use for flush...
|
||||||
* @page: page to flush
|
* @page: page to flush
|
||||||
* @offset: start of the range to invalidate
|
* @offset: start of the range to invalidate
|
||||||
|
@ -401,7 +401,7 @@ static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh)
|
|||||||
#define JI_WAIT_DATA (1 << __JI_WAIT_DATA)
|
#define JI_WAIT_DATA (1 << __JI_WAIT_DATA)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct jbd_inode - The jbd_inode type is the structure linking inodes in
|
* struct jbd2_inode - The jbd_inode type is the structure linking inodes in
|
||||||
* ordered mode present in a transaction so that we can sync them during commit.
|
* ordered mode present in a transaction so that we can sync them during commit.
|
||||||
*/
|
*/
|
||||||
struct jbd2_inode {
|
struct jbd2_inode {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user