mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (40 commits) ext4: Make fsync sync new parent directories in no-journal mode ext4: Drop whitespace at end of lines ext4: Fix compat EXT4_IOC_ADD_GROUP ext4: Conditionally define compat ioctl numbers tracing: Convert more ext4 events to DEFINE_EVENT ext4: Add new tracepoints to track mballoc's buddy bitmap loads ext4: Add a missing trace hook ext4: restart ext4_ext_remove_space() after transaction restart ext4: Clear the EXT4_EOFBLOCKS_FL flag only when warranted ext4: Avoid crashing on NULL ptr dereference on a filesystem error ext4: Use bitops to read/modify i_flags in struct ext4_inode_info ext4: Convert calls of ext4_error() to EXT4_ERROR_INODE() ext4: Convert callers of ext4_get_blocks() to use ext4_map_blocks() ext4: Add new abstraction ext4_map_blocks() underneath ext4_get_blocks() ext4: Use our own write_cache_pages() ext4: Show journal_checksum option ext4: Fix for ext4_mb_collect_stats() ext4: check for a good block group before loading buddy pages ext4: Prevent creation of files larger than RLIMIT_FSIZE using fallocate ext4: Remove extraneous newlines in ext4_msg() calls ... Fixed up trivial conflict in fs/ext4/fsync.c
This commit is contained in:
commit
e4ce30f377
23 changed files with 1136 additions and 834 deletions
|
|
@ -9,6 +9,10 @@
|
|||
|
||||
#include <linux/fs.h>
|
||||
|
||||
#define DQUOT_SPACE_WARN 0x1
|
||||
#define DQUOT_SPACE_RESERVE 0x2
|
||||
#define DQUOT_SPACE_NOFAIL 0x4
|
||||
|
||||
static inline struct quota_info *sb_dqopt(struct super_block *sb)
|
||||
{
|
||||
return &sb->s_dquot;
|
||||
|
|
@ -41,9 +45,8 @@ int dquot_scan_active(struct super_block *sb,
|
|||
struct dquot *dquot_alloc(struct super_block *sb, int type);
|
||||
void dquot_destroy(struct dquot *dquot);
|
||||
|
||||
int __dquot_alloc_space(struct inode *inode, qsize_t number,
|
||||
int warn, int reserve);
|
||||
void __dquot_free_space(struct inode *inode, qsize_t number, int reserve);
|
||||
int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags);
|
||||
void __dquot_free_space(struct inode *inode, qsize_t number, int flags);
|
||||
|
||||
int dquot_alloc_inode(const struct inode *inode);
|
||||
|
||||
|
|
@ -242,17 +245,17 @@ static inline int dquot_transfer(struct inode *inode, struct iattr *iattr)
|
|||
}
|
||||
|
||||
static inline int __dquot_alloc_space(struct inode *inode, qsize_t number,
|
||||
int warn, int reserve)
|
||||
int flags)
|
||||
{
|
||||
if (!reserve)
|
||||
if (!(flags & DQUOT_SPACE_RESERVE))
|
||||
inode_add_bytes(inode, number);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void __dquot_free_space(struct inode *inode, qsize_t number,
|
||||
int reserve)
|
||||
int flags)
|
||||
{
|
||||
if (!reserve)
|
||||
if (!(flags & DQUOT_SPACE_RESERVE))
|
||||
inode_sub_bytes(inode, number);
|
||||
}
|
||||
|
||||
|
|
@ -268,7 +271,13 @@ static inline int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
|
|||
|
||||
static inline int dquot_alloc_space_nodirty(struct inode *inode, qsize_t nr)
|
||||
{
|
||||
return __dquot_alloc_space(inode, nr, 1, 0);
|
||||
return __dquot_alloc_space(inode, nr, DQUOT_SPACE_WARN);
|
||||
}
|
||||
|
||||
static inline void dquot_alloc_space_nofail(struct inode *inode, qsize_t nr)
|
||||
{
|
||||
__dquot_alloc_space(inode, nr, DQUOT_SPACE_WARN|DQUOT_SPACE_NOFAIL);
|
||||
mark_inode_dirty(inode);
|
||||
}
|
||||
|
||||
static inline int dquot_alloc_space(struct inode *inode, qsize_t nr)
|
||||
|
|
@ -286,6 +295,11 @@ static inline int dquot_alloc_block_nodirty(struct inode *inode, qsize_t nr)
|
|||
return dquot_alloc_space_nodirty(inode, nr << inode->i_blkbits);
|
||||
}
|
||||
|
||||
static inline void dquot_alloc_block_nofail(struct inode *inode, qsize_t nr)
|
||||
{
|
||||
dquot_alloc_space_nofail(inode, nr << inode->i_blkbits);
|
||||
}
|
||||
|
||||
static inline int dquot_alloc_block(struct inode *inode, qsize_t nr)
|
||||
{
|
||||
return dquot_alloc_space(inode, nr << inode->i_blkbits);
|
||||
|
|
@ -293,7 +307,7 @@ static inline int dquot_alloc_block(struct inode *inode, qsize_t nr)
|
|||
|
||||
static inline int dquot_prealloc_block_nodirty(struct inode *inode, qsize_t nr)
|
||||
{
|
||||
return __dquot_alloc_space(inode, nr << inode->i_blkbits, 0, 0);
|
||||
return __dquot_alloc_space(inode, nr << inode->i_blkbits, 0);
|
||||
}
|
||||
|
||||
static inline int dquot_prealloc_block(struct inode *inode, qsize_t nr)
|
||||
|
|
@ -308,7 +322,8 @@ static inline int dquot_prealloc_block(struct inode *inode, qsize_t nr)
|
|||
|
||||
static inline int dquot_reserve_block(struct inode *inode, qsize_t nr)
|
||||
{
|
||||
return __dquot_alloc_space(inode, nr << inode->i_blkbits, 1, 1);
|
||||
return __dquot_alloc_space(inode, nr << inode->i_blkbits,
|
||||
DQUOT_SPACE_WARN|DQUOT_SPACE_RESERVE);
|
||||
}
|
||||
|
||||
static inline int dquot_claim_block(struct inode *inode, qsize_t nr)
|
||||
|
|
@ -345,7 +360,7 @@ static inline void dquot_free_block(struct inode *inode, qsize_t nr)
|
|||
static inline void dquot_release_reservation_block(struct inode *inode,
|
||||
qsize_t nr)
|
||||
{
|
||||
__dquot_free_space(inode, nr << inode->i_blkbits, 1);
|
||||
__dquot_free_space(inode, nr << inode->i_blkbits, DQUOT_SPACE_RESERVE);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_QUOTAOPS_ */
|
||||
|
|
|
|||
|
|
@ -353,7 +353,7 @@ TRACE_EVENT(ext4_discard_blocks,
|
|||
jbd2_dev_to_name(__entry->dev), __entry->blk, __entry->count)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mb_new_inode_pa,
|
||||
DECLARE_EVENT_CLASS(ext4__mb_new_pa,
|
||||
TP_PROTO(struct ext4_allocation_context *ac,
|
||||
struct ext4_prealloc_space *pa),
|
||||
|
||||
|
|
@ -381,32 +381,20 @@ TRACE_EVENT(ext4_mb_new_inode_pa,
|
|||
__entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mb_new_group_pa,
|
||||
DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
|
||||
|
||||
TP_PROTO(struct ext4_allocation_context *ac,
|
||||
struct ext4_prealloc_space *pa),
|
||||
|
||||
TP_ARGS(ac, pa),
|
||||
TP_ARGS(ac, pa)
|
||||
);
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( __u64, pa_pstart )
|
||||
__field( __u32, pa_len )
|
||||
__field( __u64, pa_lstart )
|
||||
DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
|
||||
|
||||
),
|
||||
TP_PROTO(struct ext4_allocation_context *ac,
|
||||
struct ext4_prealloc_space *pa),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = ac->ac_sb->s_dev;
|
||||
__entry->ino = ac->ac_inode->i_ino;
|
||||
__entry->pa_pstart = pa->pa_pstart;
|
||||
__entry->pa_len = pa->pa_len;
|
||||
__entry->pa_lstart = pa->pa_lstart;
|
||||
),
|
||||
|
||||
TP_printk("dev %s ino %lu pstart %llu len %u lstart %llu",
|
||||
jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino,
|
||||
__entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
|
||||
TP_ARGS(ac, pa)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mb_release_inode_pa,
|
||||
|
|
@ -790,7 +778,7 @@ TRACE_EVENT(ext4_mballoc_prealloc,
|
|||
__entry->result_len, __entry->result_logical)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mballoc_discard,
|
||||
DECLARE_EVENT_CLASS(ext4__mballoc,
|
||||
TP_PROTO(struct ext4_allocation_context *ac),
|
||||
|
||||
TP_ARGS(ac),
|
||||
|
|
@ -819,33 +807,18 @@ TRACE_EVENT(ext4_mballoc_discard,
|
|||
__entry->result_len, __entry->result_logical)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_mballoc_free,
|
||||
DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
|
||||
|
||||
TP_PROTO(struct ext4_allocation_context *ac),
|
||||
|
||||
TP_ARGS(ac),
|
||||
TP_ARGS(ac)
|
||||
);
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( ino_t, ino )
|
||||
__field( __u32, result_logical )
|
||||
__field( int, result_start )
|
||||
__field( __u32, result_group )
|
||||
__field( int, result_len )
|
||||
),
|
||||
DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = ac->ac_inode->i_sb->s_dev;
|
||||
__entry->ino = ac->ac_inode->i_ino;
|
||||
__entry->result_logical = ac->ac_b_ex.fe_logical;
|
||||
__entry->result_start = ac->ac_b_ex.fe_start;
|
||||
__entry->result_group = ac->ac_b_ex.fe_group;
|
||||
__entry->result_len = ac->ac_b_ex.fe_len;
|
||||
),
|
||||
TP_PROTO(struct ext4_allocation_context *ac),
|
||||
|
||||
TP_printk("dev %s inode %lu extent %u/%d/%u@%u ",
|
||||
jbd2_dev_to_name(__entry->dev), (unsigned long) __entry->ino,
|
||||
__entry->result_group, __entry->result_start,
|
||||
__entry->result_len, __entry->result_logical)
|
||||
TP_ARGS(ac)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ext4_forget,
|
||||
|
|
@ -974,6 +947,39 @@ TRACE_EVENT(ext4_da_release_space,
|
|||
__entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(ext4__bitmap_load,
|
||||
TP_PROTO(struct super_block *sb, unsigned long group),
|
||||
|
||||
TP_ARGS(sb, group),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( dev_t, dev )
|
||||
__field( __u32, group )
|
||||
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->dev = sb->s_dev;
|
||||
__entry->group = group;
|
||||
),
|
||||
|
||||
TP_printk("dev %s group %u",
|
||||
jbd2_dev_to_name(__entry->dev), __entry->group)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
|
||||
|
||||
TP_PROTO(struct super_block *sb, unsigned long group),
|
||||
|
||||
TP_ARGS(sb, group)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
|
||||
|
||||
TP_PROTO(struct super_block *sb, unsigned long group),
|
||||
|
||||
TP_ARGS(sb, group)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_EXT4_H */
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue