mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
xfs: remove xfile_stat
vfs_getattr is needed to query inode attributes for unknown underlying file systems. But shmemfs is well known for users of shmem_file_setup and shmem_read_mapping_page_gfp that rely on it not needing specific inode revalidation and having a normal mapping. Remove the detour through the getattr method and an extra wrapper, and just read the inode size and i_bytes directly in the scrub tracing code. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
This commit is contained in:
parent
a2078df025
commit
0473635d46
|
|
@ -861,18 +861,11 @@ TRACE_EVENT(xfile_destroy,
|
|||
__field(loff_t, size)
|
||||
),
|
||||
TP_fast_assign(
|
||||
struct xfile_stat statbuf;
|
||||
int ret;
|
||||
struct inode *inode = file_inode(xf->file);
|
||||
|
||||
ret = xfile_stat(xf, &statbuf);
|
||||
if (!ret) {
|
||||
__entry->bytes = statbuf.bytes;
|
||||
__entry->size = statbuf.size;
|
||||
} else {
|
||||
__entry->bytes = -1;
|
||||
__entry->size = -1;
|
||||
}
|
||||
__entry->ino = file_inode(xf->file)->i_ino;
|
||||
__entry->ino = inode->i_ino;
|
||||
__entry->bytes = inode->i_blocks << SECTOR_SHIFT;
|
||||
__entry->size = i_size_read(inode);
|
||||
),
|
||||
TP_printk("xfino 0x%lx mem_bytes 0x%llx isize 0x%llx",
|
||||
__entry->ino,
|
||||
|
|
@ -891,19 +884,12 @@ DECLARE_EVENT_CLASS(xfile_class,
|
|||
__field(unsigned long long, bytecount)
|
||||
),
|
||||
TP_fast_assign(
|
||||
struct xfile_stat statbuf;
|
||||
int ret;
|
||||
struct inode *inode = file_inode(xf->file);
|
||||
|
||||
ret = xfile_stat(xf, &statbuf);
|
||||
if (!ret) {
|
||||
__entry->bytes_used = statbuf.bytes;
|
||||
__entry->size = statbuf.size;
|
||||
} else {
|
||||
__entry->bytes_used = -1;
|
||||
__entry->size = -1;
|
||||
}
|
||||
__entry->ino = file_inode(xf->file)->i_ino;
|
||||
__entry->ino = inode->i_ino;
|
||||
__entry->bytes_used = inode->i_blocks << SECTOR_SHIFT;
|
||||
__entry->pos = pos;
|
||||
__entry->size = i_size_read(inode);
|
||||
__entry->bytecount = bytecount;
|
||||
),
|
||||
TP_printk("xfino 0x%lx mem_bytes 0x%llx pos 0x%llx bytecount 0x%llx isize 0x%llx",
|
||||
|
|
|
|||
|
|
@ -274,25 +274,6 @@ xfile_seek_data(
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* Query stat information for an xfile. */
|
||||
int
|
||||
xfile_stat(
|
||||
struct xfile *xf,
|
||||
struct xfile_stat *statbuf)
|
||||
{
|
||||
struct kstat ks;
|
||||
int error;
|
||||
|
||||
error = vfs_getattr_nosec(&xf->file->f_path, &ks,
|
||||
STATX_SIZE | STATX_BLOCKS, AT_STATX_DONT_SYNC);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
statbuf->size = ks.size;
|
||||
statbuf->bytes = ks.blocks << SECTOR_SHIFT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Grab the (locked) page for a memory object. The object cannot span a page
|
||||
* boundary. Returns 0 (and a locked page) if successful, -ENOTBLK if we
|
||||
|
|
|
|||
|
|
@ -63,13 +63,6 @@ xfile_obj_store(struct xfile *xf, const void *buf, size_t count, loff_t pos)
|
|||
|
||||
loff_t xfile_seek_data(struct xfile *xf, loff_t pos);
|
||||
|
||||
struct xfile_stat {
|
||||
loff_t size;
|
||||
unsigned long long bytes;
|
||||
};
|
||||
|
||||
int xfile_stat(struct xfile *xf, struct xfile_stat *statbuf);
|
||||
|
||||
int xfile_get_page(struct xfile *xf, loff_t offset, unsigned int len,
|
||||
struct xfile_page *xbuf);
|
||||
int xfile_put_page(struct xfile *xf, struct xfile_page *xbuf);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user