mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-04 04:02:26 +00:00
nvmet: use i_size_read() to set size for file-ns
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>
This commit is contained in:
parent
581f19dd72
commit
2caecd62ea
@ -14,16 +14,9 @@
|
||||
#define NVMET_MAX_MPOOL_BVEC 16
|
||||
#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)
|
||||
@ -43,7 +36,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;
|
||||
@ -57,9 +50,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,
|
||||
|
@ -541,7 +541,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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user