mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 12:00:22 +09:00
nvmet: use i_size_read() to set size for file-ns
[ Upstream commit2caecd62ea] Instead of calling vfs_getattr() use i_size_read() to read the size of file so we can read the size of not only file type but also block type with one call. This is needed to implement buffered_io support for the NVMeOF block device backend. We also change return type of function nvmet_file_ns_revalidate() from int to void, since this function does not return any meaning value. Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Stable-dep-of:ab76e7206b("nvmet: fix error handling in nvmet_execute_identify_cns_cs_ns()") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f333854dce
commit
080826d167
@@ -13,16 +13,9 @@
|
||||
|
||||
#define NVMET_MIN_MPOOL_OBJ 16
|
||||
|
||||
int nvmet_file_ns_revalidate(struct nvmet_ns *ns)
|
||||
void nvmet_file_ns_revalidate(struct nvmet_ns *ns)
|
||||
{
|
||||
struct kstat stat;
|
||||
int ret;
|
||||
|
||||
ret = vfs_getattr(&ns->file->f_path, &stat, STATX_SIZE,
|
||||
AT_STATX_FORCE_SYNC);
|
||||
if (!ret)
|
||||
ns->size = stat.size;
|
||||
return ret;
|
||||
ns->size = i_size_read(ns->file->f_mapping->host);
|
||||
}
|
||||
|
||||
void nvmet_file_ns_disable(struct nvmet_ns *ns)
|
||||
@@ -40,7 +33,7 @@ void nvmet_file_ns_disable(struct nvmet_ns *ns)
|
||||
int nvmet_file_ns_enable(struct nvmet_ns *ns)
|
||||
{
|
||||
int flags = O_RDWR | O_LARGEFILE;
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
if (!ns->buffered_io)
|
||||
flags |= O_DIRECT;
|
||||
@@ -54,9 +47,7 @@ int nvmet_file_ns_enable(struct nvmet_ns *ns)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = nvmet_file_ns_revalidate(ns);
|
||||
if (ret)
|
||||
goto err;
|
||||
nvmet_file_ns_revalidate(ns);
|
||||
|
||||
/*
|
||||
* i_blkbits can be greater than the universally accepted upper bound,
|
||||
|
||||
@@ -542,7 +542,7 @@ u16 nvmet_bdev_flush(struct nvmet_req *req);
|
||||
u16 nvmet_file_flush(struct nvmet_req *req);
|
||||
void nvmet_ns_changed(struct nvmet_subsys *subsys, u32 nsid);
|
||||
void nvmet_bdev_ns_revalidate(struct nvmet_ns *ns);
|
||||
int nvmet_file_ns_revalidate(struct nvmet_ns *ns);
|
||||
void nvmet_file_ns_revalidate(struct nvmet_ns *ns);
|
||||
void nvmet_ns_revalidate(struct nvmet_ns *ns);
|
||||
u16 blk_to_nvme_status(struct nvmet_req *req, blk_status_t blk_sts);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user