ksmbd: opencode to avoid trivial wrappers

Opencode to avoid trivial wrappers that just make the code hard to
follow.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
Namjae Jeon 2021-06-22 11:06:11 +09:00
Родитель bde1694aec
Коммит e8c0619171
3 изменённых файлов: 14 добавлений и 39 удалений

Просмотреть файл

@ -10,6 +10,7 @@
#include <linux/namei.h> #include <linux/namei.h>
#include <linux/statfs.h> #include <linux/statfs.h>
#include <linux/ethtool.h> #include <linux/ethtool.h>
#include <linux/falloc.h>
#include "glob.h" #include "glob.h"
#include "smb2pdu.h" #include "smb2pdu.h"
@ -2948,10 +2949,12 @@ int smb2_open(struct ksmbd_work *work)
ksmbd_debug(SMB, ksmbd_debug(SMB,
"request smb2 create allocate size : %llu\n", "request smb2 create allocate size : %llu\n",
alloc_size); alloc_size);
err = ksmbd_vfs_alloc_size(work, fp, alloc_size); smb_break_all_levII_oplock(work, fp, 1);
err = vfs_fallocate(fp->filp, FALLOC_FL_KEEP_SIZE, 0,
alloc_size);
if (err < 0) if (err < 0)
ksmbd_debug(SMB, ksmbd_debug(SMB,
"ksmbd_vfs_alloc_size is failed : %d\n", "vfs_fallocate is failed : %d\n",
err); err);
} }
@ -3762,7 +3765,7 @@ int smb2_query_dir(struct ksmbd_work *work)
dir_fp->readdir_data.private = &query_dir_private; dir_fp->readdir_data.private = &query_dir_private;
set_ctx_actor(&dir_fp->readdir_data.ctx, __query_dir); set_ctx_actor(&dir_fp->readdir_data.ctx, __query_dir);
rc = ksmbd_vfs_readdir(dir_fp->filp, &dir_fp->readdir_data); rc = iterate_dir(dir_fp->filp, &dir_fp->readdir_data.ctx);
if (rc == 0) if (rc == 0)
restart_ctx(&dir_fp->readdir_data.ctx); restart_ctx(&dir_fp->readdir_data.ctx);
if (rc == -ENOSPC) if (rc == -ENOSPC)
@ -5465,9 +5468,11 @@ static int set_file_allocation_info(struct ksmbd_work *work,
inode = file_inode(fp->filp); inode = file_inode(fp->filp);
if (alloc_blks > inode->i_blocks) { if (alloc_blks > inode->i_blocks) {
rc = ksmbd_vfs_alloc_size(work, fp, alloc_blks * 512); smb_break_all_levII_oplock(work, fp, 1);
rc = vfs_fallocate(fp->filp, FALLOC_FL_KEEP_SIZE, 0,
alloc_blks * 512);
if (rc && rc != -EOPNOTSUPP) { if (rc && rc != -EOPNOTSUPP) {
pr_err("ksmbd_vfs_alloc_size is failed : %d\n", rc); pr_err("vfs_fallocate is failed : %d\n", rc);
return rc; return rc;
} }
} else if (alloc_blks < inode->i_blocks) { } else if (alloc_blks < inode->i_blocks) {
@ -6672,7 +6677,7 @@ no_check_gl:
flock = smb_lock->fl; flock = smb_lock->fl;
list_del(&smb_lock->llist); list_del(&smb_lock->llist);
retry: retry:
err = ksmbd_vfs_lock(filp, smb_lock->cmd, flock); err = vfs_lock_file(filp, smb_lock->cmd, flock, NULL);
skip: skip:
if (flags & SMB2_LOCKFLAG_UNLOCK) { if (flags & SMB2_LOCKFLAG_UNLOCK) {
if (!err) { if (!err) {
@ -6785,7 +6790,7 @@ out:
rlock->fl_start = smb_lock->start; rlock->fl_start = smb_lock->start;
rlock->fl_end = smb_lock->end; rlock->fl_end = smb_lock->end;
err = ksmbd_vfs_lock(filp, 0, rlock); err = vfs_lock_file(filp, 0, rlock, NULL);
if (err) if (err)
pr_err("rollback unlock fail : %d\n", err); pr_err("rollback unlock fail : %d\n", err);
list_del(&smb_lock->llist); list_del(&smb_lock->llist);

Просмотреть файл

@ -1000,32 +1000,6 @@ void ksmbd_vfs_set_fadvise(struct file *filp, __le32 option)
} }
} }
/**
* ksmbd_vfs_lock() - vfs helper for smb file locking
* @filp: the file to apply the lock to
* @cmd: type of locking operation (F_SETLK, F_GETLK, etc.)
* @flock: The lock to be applied
*
* Return: 0 on success, otherwise error
*/
int ksmbd_vfs_lock(struct file *filp, int cmd, struct file_lock *flock)
{
ksmbd_debug(VFS, "calling vfs_lock_file\n");
return vfs_lock_file(filp, cmd, flock, NULL);
}
int ksmbd_vfs_readdir(struct file *file, struct ksmbd_readdir_data *rdata)
{
return iterate_dir(file, &rdata->ctx);
}
int ksmbd_vfs_alloc_size(struct ksmbd_work *work, struct ksmbd_file *fp,
loff_t len)
{
smb_break_all_levII_oplock(work, fp, 1);
return vfs_fallocate(fp->filp, FALLOC_FL_KEEP_SIZE, 0, len);
}
int ksmbd_vfs_zero_data(struct ksmbd_work *work, struct ksmbd_file *fp, int ksmbd_vfs_zero_data(struct ksmbd_work *work, struct ksmbd_file *fp,
loff_t off, loff_t len) loff_t off, loff_t len)
{ {
@ -1216,7 +1190,7 @@ int ksmbd_vfs_empty_dir(struct ksmbd_file *fp)
set_ctx_actor(&readdir_data.ctx, __dir_empty); set_ctx_actor(&readdir_data.ctx, __dir_empty);
readdir_data.dirent_count = 0; readdir_data.dirent_count = 0;
err = ksmbd_vfs_readdir(fp->filp, &readdir_data); err = iterate_dir(fp->filp, &readdir_data.ctx);
if (readdir_data.dirent_count > 2) if (readdir_data.dirent_count > 2)
err = -ENOTEMPTY; err = -ENOTEMPTY;
else else
@ -1266,7 +1240,7 @@ static int ksmbd_vfs_lookup_in_dir(struct path *dir, char *name, size_t namelen)
if (IS_ERR(dfilp)) if (IS_ERR(dfilp))
return PTR_ERR(dfilp); return PTR_ERR(dfilp);
ret = ksmbd_vfs_readdir(dfilp, &readdir_data); ret = iterate_dir(dfilp, &readdir_data.ctx);
if (readdir_data.dirent_count > 0) if (readdir_data.dirent_count > 0)
ret = 0; ret = 0;
fput(dfilp); fput(dfilp);

Просмотреть файл

@ -232,10 +232,6 @@ int ksmbd_vfs_kern_path(char *name, unsigned int flags, struct path *path,
bool caseless); bool caseless);
int ksmbd_vfs_empty_dir(struct ksmbd_file *fp); int ksmbd_vfs_empty_dir(struct ksmbd_file *fp);
void ksmbd_vfs_set_fadvise(struct file *filp, __le32 option); void ksmbd_vfs_set_fadvise(struct file *filp, __le32 option);
int ksmbd_vfs_lock(struct file *filp, int cmd, struct file_lock *flock);
int ksmbd_vfs_readdir(struct file *file, struct ksmbd_readdir_data *rdata);
int ksmbd_vfs_alloc_size(struct ksmbd_work *work, struct ksmbd_file *fp,
loff_t len);
int ksmbd_vfs_zero_data(struct ksmbd_work *work, struct ksmbd_file *fp, int ksmbd_vfs_zero_data(struct ksmbd_work *work, struct ksmbd_file *fp,
loff_t off, loff_t len); loff_t off, loff_t len);
struct file_allocated_range_buffer; struct file_allocated_range_buffer;