|
@@ -38,7 +38,6 @@
|
|
|
#include <linux/quotaops.h>
|
|
|
#include <linux/blkdev.h>
|
|
|
|
|
|
-#define MLOG_MASK_PREFIX ML_INODE
|
|
|
#include <cluster/masklog.h>
|
|
|
|
|
|
#include "ocfs2.h"
|
|
@@ -61,6 +60,7 @@
|
|
|
#include "acl.h"
|
|
|
#include "quota.h"
|
|
|
#include "refcounttree.h"
|
|
|
+#include "ocfs2_trace.h"
|
|
|
|
|
|
#include "buffer_head_io.h"
|
|
|
|
|
@@ -99,8 +99,10 @@ static int ocfs2_file_open(struct inode *inode, struct file *file)
|
|
|
int mode = file->f_flags;
|
|
|
struct ocfs2_inode_info *oi = OCFS2_I(inode);
|
|
|
|
|
|
- mlog(0, "(0x%p, 0x%p, '%.*s')\n", inode, file,
|
|
|
- file->f_path.dentry->d_name.len, file->f_path.dentry->d_name.name);
|
|
|
+ trace_ocfs2_file_open(inode, file, file->f_path.dentry,
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ file->f_path.dentry->d_name.len,
|
|
|
+ file->f_path.dentry->d_name.name, mode);
|
|
|
|
|
|
if (file->f_mode & FMODE_WRITE)
|
|
|
dquot_initialize(inode);
|
|
@@ -142,13 +144,15 @@ static int ocfs2_file_release(struct inode *inode, struct file *file)
|
|
|
{
|
|
|
struct ocfs2_inode_info *oi = OCFS2_I(inode);
|
|
|
|
|
|
- mlog(0, "(0x%p, 0x%p, '%.*s')\n", inode, file,
|
|
|
- file->f_path.dentry->d_name.len,
|
|
|
- file->f_path.dentry->d_name.name);
|
|
|
-
|
|
|
spin_lock(&oi->ip_lock);
|
|
|
if (!--oi->ip_open_count)
|
|
|
oi->ip_flags &= ~OCFS2_INODE_OPEN_DIRECT;
|
|
|
+
|
|
|
+ trace_ocfs2_file_release(inode, file, file->f_path.dentry,
|
|
|
+ oi->ip_blkno,
|
|
|
+ file->f_path.dentry->d_name.len,
|
|
|
+ file->f_path.dentry->d_name.name,
|
|
|
+ oi->ip_open_count);
|
|
|
spin_unlock(&oi->ip_lock);
|
|
|
|
|
|
ocfs2_free_file_private(inode, file);
|
|
@@ -174,9 +178,11 @@ static int ocfs2_sync_file(struct file *file, int datasync)
|
|
|
struct inode *inode = file->f_mapping->host;
|
|
|
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
|
|
|
|
|
- mlog(0, "(0x%p, %d, 0x%p, '%.*s')\n", file, datasync,
|
|
|
- file->f_path.dentry, file->f_path.dentry->d_name.len,
|
|
|
- file->f_path.dentry->d_name.name);
|
|
|
+ trace_ocfs2_sync_file(inode, file, file->f_path.dentry,
|
|
|
+ OCFS2_I(inode)->ip_blkno,
|
|
|
+ file->f_path.dentry->d_name.len,
|
|
|
+ file->f_path.dentry->d_name.name,
|
|
|
+ (unsigned long long)datasync);
|
|
|
|
|
|
if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) {
|
|
|
/*
|
|
@@ -431,14 +437,14 @@ static int ocfs2_truncate_file(struct inode *inode,
|
|
|
struct ocfs2_dinode *fe = NULL;
|
|
|
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
|
|
|
|
|
- mlog(0, "(inode = %llu, new_i_size = %llu\n",
|
|
|
- (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
- (unsigned long long)new_i_size);
|
|
|
-
|
|
|
/* We trust di_bh because it comes from ocfs2_inode_lock(), which
|
|
|
* already validated it */
|
|
|
fe = (struct ocfs2_dinode *) di_bh->b_data;
|
|
|
|
|
|
+ trace_ocfs2_truncate_file((unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ (unsigned long long)le64_to_cpu(fe->i_size),
|
|
|
+ (unsigned long long)new_i_size);
|
|
|
+
|
|
|
mlog_bug_on_msg(le64_to_cpu(fe->i_size) != i_size_read(inode),
|
|
|
"Inode %llu, inode i_size = %lld != di "
|
|
|
"i_size = %llu, i_flags = 0x%x\n",
|
|
@@ -448,19 +454,14 @@ static int ocfs2_truncate_file(struct inode *inode,
|
|
|
le32_to_cpu(fe->i_flags));
|
|
|
|
|
|
if (new_i_size > le64_to_cpu(fe->i_size)) {
|
|
|
- mlog(0, "asked to truncate file with size (%llu) to size (%llu)!\n",
|
|
|
- (unsigned long long)le64_to_cpu(fe->i_size),
|
|
|
- (unsigned long long)new_i_size);
|
|
|
+ trace_ocfs2_truncate_file_error(
|
|
|
+ (unsigned long long)le64_to_cpu(fe->i_size),
|
|
|
+ (unsigned long long)new_i_size);
|
|
|
status = -EINVAL;
|
|
|
mlog_errno(status);
|
|
|
goto bail;
|
|
|
}
|
|
|
|
|
|
- mlog(0, "inode %llu, i_size = %llu, new_i_size = %llu\n",
|
|
|
- (unsigned long long)le64_to_cpu(fe->i_blkno),
|
|
|
- (unsigned long long)le64_to_cpu(fe->i_size),
|
|
|
- (unsigned long long)new_i_size);
|
|
|
-
|
|
|
/* lets handle the simple truncate cases before doing any more
|
|
|
* cluster locking. */
|
|
|
if (new_i_size == le64_to_cpu(fe->i_size))
|
|
@@ -566,8 +567,6 @@ static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start,
|
|
|
struct ocfs2_extent_tree et;
|
|
|
int did_quota = 0;
|
|
|
|
|
|
- mlog(0, "(clusters_to_add = %u)\n", clusters_to_add);
|
|
|
-
|
|
|
/*
|
|
|
* This function only exists for file systems which don't
|
|
|
* support holes.
|
|
@@ -584,11 +583,6 @@ static int __ocfs2_extend_allocation(struct inode *inode, u32 logical_start,
|
|
|
restart_all:
|
|
|
BUG_ON(le32_to_cpu(fe->i_clusters) != OCFS2_I(inode)->ip_clusters);
|
|
|
|
|
|
- mlog(0, "extend inode %llu, i_size = %lld, di->i_clusters = %u, "
|
|
|
- "clusters_to_add = %u\n",
|
|
|
- (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
- (long long)i_size_read(inode), le32_to_cpu(fe->i_clusters),
|
|
|
- clusters_to_add);
|
|
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), bh);
|
|
|
status = ocfs2_lock_allocators(inode, &et, clusters_to_add, 0,
|
|
|
&data_ac, &meta_ac);
|
|
@@ -608,6 +602,12 @@ restart_all:
|
|
|
}
|
|
|
|
|
|
restarted_transaction:
|
|
|
+ trace_ocfs2_extend_allocation(
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ (unsigned long long)i_size_read(inode),
|
|
|
+ le32_to_cpu(fe->i_clusters), clusters_to_add,
|
|
|
+ why, restart_func);
|
|
|
+
|
|
|
status = dquot_alloc_space_nodirty(inode,
|
|
|
ocfs2_clusters_to_bytes(osb->sb, clusters_to_add));
|
|
|
if (status)
|
|
@@ -654,13 +654,11 @@ restarted_transaction:
|
|
|
|
|
|
if (why != RESTART_NONE && clusters_to_add) {
|
|
|
if (why == RESTART_META) {
|
|
|
- mlog(0, "restarting function.\n");
|
|
|
restart_func = 1;
|
|
|
status = 0;
|
|
|
} else {
|
|
|
BUG_ON(why != RESTART_TRANS);
|
|
|
|
|
|
- mlog(0, "restarting transaction.\n");
|
|
|
/* TODO: This can be more intelligent. */
|
|
|
credits = ocfs2_calc_extend_credits(osb->sb,
|
|
|
&fe->id2.i_list,
|
|
@@ -677,11 +675,11 @@ restarted_transaction:
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- mlog(0, "fe: i_clusters = %u, i_size=%llu\n",
|
|
|
+ trace_ocfs2_extend_allocation_end(OCFS2_I(inode)->ip_blkno,
|
|
|
le32_to_cpu(fe->i_clusters),
|
|
|
- (unsigned long long)le64_to_cpu(fe->i_size));
|
|
|
- mlog(0, "inode: ip_clusters=%u, i_size=%lld\n",
|
|
|
- OCFS2_I(inode)->ip_clusters, (long long)i_size_read(inode));
|
|
|
+ (unsigned long long)le64_to_cpu(fe->i_size),
|
|
|
+ OCFS2_I(inode)->ip_clusters,
|
|
|
+ (unsigned long long)i_size_read(inode));
|
|
|
|
|
|
leave:
|
|
|
if (status < 0 && did_quota)
|
|
@@ -772,10 +770,11 @@ static int ocfs2_write_zero_page(struct inode *inode, u64 abs_from,
|
|
|
if (!zero_to)
|
|
|
zero_to = PAGE_CACHE_SIZE;
|
|
|
|
|
|
- mlog(0,
|
|
|
- "abs_from = %llu, abs_to = %llu, index = %lu, zero_from = %u, zero_to = %u\n",
|
|
|
- (unsigned long long)abs_from, (unsigned long long)abs_to,
|
|
|
- index, zero_from, zero_to);
|
|
|
+ trace_ocfs2_write_zero_page(
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ (unsigned long long)abs_from,
|
|
|
+ (unsigned long long)abs_to,
|
|
|
+ index, zero_from, zero_to);
|
|
|
|
|
|
/* We know that zero_from is block aligned */
|
|
|
for (block_start = zero_from; block_start < zero_to;
|
|
@@ -915,9 +914,10 @@ static int ocfs2_zero_extend_range(struct inode *inode, u64 range_start,
|
|
|
u64 next_pos;
|
|
|
u64 zero_pos = range_start;
|
|
|
|
|
|
- mlog(0, "range_start = %llu, range_end = %llu\n",
|
|
|
- (unsigned long long)range_start,
|
|
|
- (unsigned long long)range_end);
|
|
|
+ trace_ocfs2_zero_extend_range(
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ (unsigned long long)range_start,
|
|
|
+ (unsigned long long)range_end);
|
|
|
BUG_ON(range_start >= range_end);
|
|
|
|
|
|
while (zero_pos < range_end) {
|
|
@@ -949,9 +949,9 @@ int ocfs2_zero_extend(struct inode *inode, struct buffer_head *di_bh,
|
|
|
struct super_block *sb = inode->i_sb;
|
|
|
|
|
|
zero_start = ocfs2_align_bytes_to_blocks(sb, i_size_read(inode));
|
|
|
- mlog(0, "zero_start %llu for i_size %llu\n",
|
|
|
- (unsigned long long)zero_start,
|
|
|
- (unsigned long long)i_size_read(inode));
|
|
|
+ trace_ocfs2_zero_extend((unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ (unsigned long long)zero_start,
|
|
|
+ (unsigned long long)i_size_read(inode));
|
|
|
while (zero_start < zero_to_size) {
|
|
|
ret = ocfs2_zero_extend_get_range(inode, di_bh, zero_start,
|
|
|
zero_to_size,
|
|
@@ -1100,30 +1100,20 @@ int ocfs2_setattr(struct dentry *dentry, struct iattr *attr)
|
|
|
struct dquot *transfer_to[MAXQUOTAS] = { };
|
|
|
int qtype;
|
|
|
|
|
|
- mlog(0, "(0x%p, '%.*s')\n", dentry,
|
|
|
- dentry->d_name.len, dentry->d_name.name);
|
|
|
+ trace_ocfs2_setattr(inode, dentry,
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ dentry->d_name.len, dentry->d_name.name,
|
|
|
+ attr->ia_valid, attr->ia_mode,
|
|
|
+ attr->ia_uid, attr->ia_gid);
|
|
|
|
|
|
/* ensuring we don't even attempt to truncate a symlink */
|
|
|
if (S_ISLNK(inode->i_mode))
|
|
|
attr->ia_valid &= ~ATTR_SIZE;
|
|
|
|
|
|
- if (attr->ia_valid & ATTR_MODE)
|
|
|
- mlog(0, "mode change: %d\n", attr->ia_mode);
|
|
|
- if (attr->ia_valid & ATTR_UID)
|
|
|
- mlog(0, "uid change: %d\n", attr->ia_uid);
|
|
|
- if (attr->ia_valid & ATTR_GID)
|
|
|
- mlog(0, "gid change: %d\n", attr->ia_gid);
|
|
|
- if (attr->ia_valid & ATTR_SIZE)
|
|
|
- mlog(0, "size change...\n");
|
|
|
- if (attr->ia_valid & (ATTR_ATIME | ATTR_MTIME | ATTR_CTIME))
|
|
|
- mlog(0, "time change...\n");
|
|
|
-
|
|
|
#define OCFS2_VALID_ATTRS (ATTR_ATIME | ATTR_MTIME | ATTR_CTIME | ATTR_SIZE \
|
|
|
| ATTR_GID | ATTR_UID | ATTR_MODE)
|
|
|
- if (!(attr->ia_valid & OCFS2_VALID_ATTRS)) {
|
|
|
- mlog(0, "can't handle attrs: 0x%x\n", attr->ia_valid);
|
|
|
+ if (!(attr->ia_valid & OCFS2_VALID_ATTRS))
|
|
|
return 0;
|
|
|
- }
|
|
|
|
|
|
status = inode_change_ok(inode, attr);
|
|
|
if (status)
|
|
@@ -1318,8 +1308,9 @@ static int __ocfs2_write_remove_suid(struct inode *inode,
|
|
|
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
|
|
|
struct ocfs2_dinode *di;
|
|
|
|
|
|
- mlog(0, "(Inode %llu, mode 0%o)\n",
|
|
|
- (unsigned long long)OCFS2_I(inode)->ip_blkno, inode->i_mode);
|
|
|
+ trace_ocfs2_write_remove_suid(
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ inode->i_mode);
|
|
|
|
|
|
handle = ocfs2_start_trans(osb, OCFS2_INODE_UPDATE_CREDITS);
|
|
|
if (IS_ERR(handle)) {
|
|
@@ -1525,8 +1516,9 @@ static int ocfs2_zero_partial_clusters(struct inode *inode,
|
|
|
* partial clusters here. There's no need to worry about
|
|
|
* physical allocation - the zeroing code knows to skip holes.
|
|
|
*/
|
|
|
- mlog(0, "byte start: %llu, end: %llu\n",
|
|
|
- (unsigned long long)start, (unsigned long long)end);
|
|
|
+ trace_ocfs2_zero_partial_clusters(
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ (unsigned long long)start, (unsigned long long)end);
|
|
|
|
|
|
/*
|
|
|
* If both edges are on a cluster boundary then there's no
|
|
@@ -1550,8 +1542,8 @@ static int ocfs2_zero_partial_clusters(struct inode *inode,
|
|
|
if (tmpend > end)
|
|
|
tmpend = end;
|
|
|
|
|
|
- mlog(0, "1st range: start: %llu, tmpend: %llu\n",
|
|
|
- (unsigned long long)start, (unsigned long long)tmpend);
|
|
|
+ trace_ocfs2_zero_partial_clusters_range1((unsigned long long)start,
|
|
|
+ (unsigned long long)tmpend);
|
|
|
|
|
|
ret = ocfs2_zero_range_for_truncate(inode, handle, start, tmpend);
|
|
|
if (ret)
|
|
@@ -1565,8 +1557,8 @@ static int ocfs2_zero_partial_clusters(struct inode *inode,
|
|
|
*/
|
|
|
start = end & ~(osb->s_clustersize - 1);
|
|
|
|
|
|
- mlog(0, "2nd range: start: %llu, end: %llu\n",
|
|
|
- (unsigned long long)start, (unsigned long long)end);
|
|
|
+ trace_ocfs2_zero_partial_clusters_range2(
|
|
|
+ (unsigned long long)start, (unsigned long long)end);
|
|
|
|
|
|
ret = ocfs2_zero_range_for_truncate(inode, handle, start, end);
|
|
|
if (ret)
|
|
@@ -1666,6 +1658,11 @@ static int ocfs2_remove_inode_range(struct inode *inode,
|
|
|
ocfs2_init_dinode_extent_tree(&et, INODE_CACHE(inode), di_bh);
|
|
|
ocfs2_init_dealloc_ctxt(&dealloc);
|
|
|
|
|
|
+ trace_ocfs2_remove_inode_range(
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ (unsigned long long)byte_start,
|
|
|
+ (unsigned long long)byte_len);
|
|
|
+
|
|
|
if (byte_len == 0)
|
|
|
return 0;
|
|
|
|
|
@@ -1712,11 +1709,6 @@ static int ocfs2_remove_inode_range(struct inode *inode,
|
|
|
trunc_end = (byte_start + byte_len) >> osb->s_clustersize_bits;
|
|
|
cluster_in_el = trunc_end;
|
|
|
|
|
|
- mlog(0, "Inode: %llu, start: %llu, len: %llu, cstart: %u, cend: %u\n",
|
|
|
- (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
- (unsigned long long)byte_start,
|
|
|
- (unsigned long long)byte_len, trunc_start, trunc_end);
|
|
|
-
|
|
|
ret = ocfs2_zero_partial_clusters(inode, byte_start, byte_len);
|
|
|
if (ret) {
|
|
|
mlog_errno(ret);
|
|
@@ -2071,7 +2063,7 @@ static int ocfs2_prepare_inode_for_write(struct file *file,
|
|
|
int ret = 0, meta_level = 0;
|
|
|
struct dentry *dentry = file->f_path.dentry;
|
|
|
struct inode *inode = dentry->d_inode;
|
|
|
- loff_t saved_pos, end;
|
|
|
+ loff_t saved_pos = 0, end;
|
|
|
|
|
|
/*
|
|
|
* We start with a read level meta lock and only jump to an ex
|
|
@@ -2110,12 +2102,10 @@ static int ocfs2_prepare_inode_for_write(struct file *file,
|
|
|
|
|
|
/* work on a copy of ppos until we're sure that we won't have
|
|
|
* to recalculate it due to relocking. */
|
|
|
- if (appending) {
|
|
|
+ if (appending)
|
|
|
saved_pos = i_size_read(inode);
|
|
|
- mlog(0, "O_APPEND: inode->i_size=%llu\n", saved_pos);
|
|
|
- } else {
|
|
|
+ else
|
|
|
saved_pos = *ppos;
|
|
|
- }
|
|
|
|
|
|
end = saved_pos + count;
|
|
|
|
|
@@ -2186,6 +2176,10 @@ static int ocfs2_prepare_inode_for_write(struct file *file,
|
|
|
*ppos = saved_pos;
|
|
|
|
|
|
out_unlock:
|
|
|
+ trace_ocfs2_prepare_inode_for_write(OCFS2_I(inode)->ip_blkno,
|
|
|
+ saved_pos, appending, count,
|
|
|
+ direct_io, has_refcount);
|
|
|
+
|
|
|
if (meta_level >= 0)
|
|
|
ocfs2_inode_unlock(inode, meta_level);
|
|
|
|
|
@@ -2211,10 +2205,11 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb,
|
|
|
int full_coherency = !(osb->s_mount_opt &
|
|
|
OCFS2_MOUNT_COHERENCY_BUFFERED);
|
|
|
|
|
|
- mlog(0, "(0x%p, %u, '%.*s')\n", file,
|
|
|
- (unsigned int)nr_segs,
|
|
|
- file->f_path.dentry->d_name.len,
|
|
|
- file->f_path.dentry->d_name.name);
|
|
|
+ trace_ocfs2_file_aio_write(inode, file, file->f_path.dentry,
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ file->f_path.dentry->d_name.len,
|
|
|
+ file->f_path.dentry->d_name.name,
|
|
|
+ (unsigned int)nr_segs);
|
|
|
|
|
|
if (iocb->ki_left == 0)
|
|
|
return 0;
|
|
@@ -2415,10 +2410,11 @@ static ssize_t ocfs2_file_splice_write(struct pipe_inode_info *pipe,
|
|
|
.u.file = out,
|
|
|
};
|
|
|
|
|
|
- mlog(0, "(0x%p, 0x%p, %u, '%.*s')\n", out, pipe,
|
|
|
- (unsigned int)len,
|
|
|
- out->f_path.dentry->d_name.len,
|
|
|
- out->f_path.dentry->d_name.name);
|
|
|
+
|
|
|
+ trace_ocfs2_file_splice_write(inode, out, out->f_path.dentry,
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ out->f_path.dentry->d_name.len,
|
|
|
+ out->f_path.dentry->d_name.name, len);
|
|
|
|
|
|
if (pipe->inode)
|
|
|
mutex_lock_nested(&pipe->inode->i_mutex, I_MUTEX_PARENT);
|
|
@@ -2474,10 +2470,10 @@ static ssize_t ocfs2_file_splice_read(struct file *in,
|
|
|
int ret = 0, lock_level = 0;
|
|
|
struct inode *inode = in->f_path.dentry->d_inode;
|
|
|
|
|
|
- mlog(0, "(0x%p, 0x%p, %u, '%.*s')\n", in, pipe,
|
|
|
- (unsigned int)len,
|
|
|
- in->f_path.dentry->d_name.len,
|
|
|
- in->f_path.dentry->d_name.name);
|
|
|
+ trace_ocfs2_file_splice_read(inode, in, in->f_path.dentry,
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ in->f_path.dentry->d_name.len,
|
|
|
+ in->f_path.dentry->d_name.name, len);
|
|
|
|
|
|
/*
|
|
|
* See the comment in ocfs2_file_aio_read()
|
|
@@ -2504,10 +2500,11 @@ static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
|
|
|
struct file *filp = iocb->ki_filp;
|
|
|
struct inode *inode = filp->f_path.dentry->d_inode;
|
|
|
|
|
|
- mlog(0, "(0x%p, %u, '%.*s')\n", filp,
|
|
|
- (unsigned int)nr_segs,
|
|
|
- filp->f_path.dentry->d_name.len,
|
|
|
- filp->f_path.dentry->d_name.name);
|
|
|
+ trace_ocfs2_file_aio_read(inode, filp, filp->f_path.dentry,
|
|
|
+ (unsigned long long)OCFS2_I(inode)->ip_blkno,
|
|
|
+ filp->f_path.dentry->d_name.len,
|
|
|
+ filp->f_path.dentry->d_name.name, nr_segs);
|
|
|
+
|
|
|
|
|
|
if (!inode) {
|
|
|
ret = -EINVAL;
|
|
@@ -2553,8 +2550,7 @@ static ssize_t ocfs2_file_aio_read(struct kiocb *iocb,
|
|
|
ocfs2_inode_unlock(inode, lock_level);
|
|
|
|
|
|
ret = generic_file_aio_read(iocb, iov, nr_segs, iocb->ki_pos);
|
|
|
- if (ret == -EINVAL)
|
|
|
- mlog(0, "generic_file_aio_read returned -EINVAL\n");
|
|
|
+ trace_generic_file_aio_read_ret(ret);
|
|
|
|
|
|
/* buffered aio wouldn't have proper lock coverage today */
|
|
|
BUG_ON(ret == -EIOCBQUEUED && !(filp->f_flags & O_DIRECT));
|